Extension review guidelines state that:
Any signal connections made by an extension MUST be disconnected in
disable()
:
I understand why it’s required when connecting to “external” objects, i.e. those created/owned by the shell. But does it also apply to GObjects created by the extension?
For example: I create a custom GObject subclass with a signal, create an instance of it and connect to the signal in enable()
, then set the reference to null
in disable()
. Will the signal handler that I didn’t disconnect cause a memory leak? (My tests with System.dumpHeap()
+heapgraph show that the object is successfully collected - unless I’m doing something wrong or misunderstanding)
Even extensions from gnome-shell-extensions
don’t disconnect everything.