signalTracker: Explicitly register destroyable types

We currently assume that any '::destroy' signal on a GObject type
has the semantics of the ClutterActor/GtkWidget signal, and should
therefore result in all signals being disconnected.

But we already have a case where the assumption doesn't hold: ShellWM
uses '::destroy' for the closing animation of windows, and the ShellWM
object itself remains very valid after the emission.

So rather than making assumptions about '::destroy', check objects
against a list of destroyable types that are explicitly registered
as such.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2226>
This commit is contained in:
Florian Müllner
2022-03-06 00:30:16 +01:00
committed by Marge Bot
parent ba23279f1f
commit fc4f9f61fa
4 changed files with 27 additions and 3 deletions

View File

@ -345,6 +345,8 @@ function init() {
SignalTracker.addObjectSignalMethods(prototype);
};
SignalTracker.registerDestroyableType(Clutter.Actor);
// Miscellaneous monkeypatching
_patchContainerClass(St.BoxLayout);