[gnome-shell/gnome-3-38] panel: Disconnect destroy signal handler when needed
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gnome-3-38] panel: Disconnect destroy signal handler when needed
- Date: Wed, 7 Oct 2020 21:43:11 +0000 (UTC)
commit 78372345b54673ece1e86072815feedad9645de6
Author: Ray Strode <rstrode redhat com>
Date: Tue Oct 6 14:29:00 2020 +0000
panel: Disconnect destroy signal handler when needed
The panel corners try to match their style to the buttons closest
to them. In order to make sure the corner styles stay in sync with
their neighboring buttons, they connect to the style-changed signals
of the buttons.
In order to make sure the style-changed signal handler isn't leaked,
it gets disconnected when the button is destroyed.
Unfortunately, the destroy signal handler connection itself gets leaked!
This commit ensures the destroy signal handler gets disconnected any
time the neighboring button is re-determined.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1460
(cherry picked from commit b41ef2f6e3b2a801331d846ac5fbfd5d349eb4e5)
js/ui/panel.js | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/panel.js b/js/ui/panel.js
index b168907def..272368a4b0 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -591,14 +591,19 @@ class PanelCorner extends St.DrawingArea {
button = this._findRightmostButton(box);
if (button) {
- if (this._button && this._buttonStyleChangedSignalId) {
- this._button.disconnect(this._buttonStyleChangedSignalId);
- this._button.style = null;
+ if (this._button) {
+ if (this._buttonStyleChangedSignalId) {
+ this._button.disconnect(this._buttonStyleChangedSignalId);
+ this._button.style = null;
+ }
+
+ if (this._buttonDestroySignalId)
+ this._button.disconnect(this._buttonDestroySignalId);
}
this._button = button;
- button.connect('destroy', () => {
+ this._buttonDestroySignalId = button.connect('destroy', () => {
if (this._button == button) {
this._button = null;
this._buttonStyleChangedSignalId = 0;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]