Merge lp:~aacid/unity-2d/use_gconnector_in_application into lp:unity-2d

Proposed by Albert Astals Cid
Status: Merged
Approved by: Gerry Boland
Approved revision: 977
Merged at revision: 978
Proposed branch: lp:~aacid/unity-2d/use_gconnector_in_application
Merge into: lp:unity-2d
Diff against target: 90 lines (+6/-33)
2 files modified
libunity-2d-private/src/application.cpp (+4/-32)
libunity-2d-private/src/application.h (+2/-1)
To merge this branch: bzr merge lp:~aacid/unity-2d/use_gconnector_in_application
Reviewer Review Type Date Requested Status
Gerry Boland Pending
Review via email: mp+97012@code.launchpad.net

Description of the change

Use GConnector in Application instead of calling g_signal_connect

This makes sure we correctly disconnect all the signals we connected

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'libunity-2d-private/src/application.cpp'
2--- libunity-2d-private/src/application.cpp 2012-03-05 11:28:54 +0000
3+++ libunity-2d-private/src/application.cpp 2012-03-12 13:05:19 +0000
4@@ -106,7 +106,6 @@
5
6 Application::~Application()
7 {
8- disconnectWindowSignals();
9 }
10
11 bool
12@@ -540,36 +539,9 @@
13
14 for (int i = 0; i < size; ++i) {
15 WnckWindow* window = wnck_window_get(xids->at(i));
16- g_signal_connect(G_OBJECT(window), "workspace-changed",
17+ m_gConnector.connect(G_OBJECT(window), "workspace-changed",
18 G_CALLBACK(Application::onWindowWorkspaceChanged), this);
19- g_signal_connect(G_OBJECT(window), "geometry-changed", G_CALLBACK(geometryChangedCB), this);
20- }
21-}
22-
23-void
24-Application::disconnectWindowSignals()
25-{
26- if (m_application == NULL || m_application->running() == false) {
27- return;
28- }
29-
30- QScopedPointer<BamfUintList> xids(m_application->xids());
31- int size = xids->size();
32- if (size < 1) {
33- return;
34- }
35-
36- for (int i = 0; i < size; ++i) {
37- WnckWindow *window = wnck_window_get(xids->at(i));
38- if (window == NULL) {
39- wnck_screen_force_update(wnck_screen_get_default());
40- window = wnck_window_get(xids->at(i));
41- if (window == NULL) {
42- continue;
43- }
44- }
45-
46- g_signal_handlers_disconnect_by_func(window, gpointer(geometryChangedCB), this);
47+ m_gConnector.connect(G_OBJECT(window), "geometry-changed", G_CALLBACK(geometryChangedCB), this);
48 }
49 }
50
51@@ -579,9 +551,9 @@
52 if (window != NULL) {
53 windowAdded(window->xid());
54 WnckWindow* wnck_window = wnck_window_get(window->xid());
55- g_signal_connect(G_OBJECT(wnck_window), "workspace-changed",
56+ m_gConnector.connect(G_OBJECT(wnck_window), "workspace-changed",
57 G_CALLBACK(Application::onWindowWorkspaceChanged), this);
58- g_signal_connect(G_OBJECT(wnck_window), "geometry-changed", G_CALLBACK(geometryChangedCB), this);
59+ m_gConnector.connect(G_OBJECT(wnck_window), "geometry-changed", G_CALLBACK(geometryChangedCB), this);
60 }
61 }
62
63
64=== modified file 'libunity-2d-private/src/application.h'
65--- libunity-2d-private/src/application.h 2012-03-01 14:26:38 +0000
66+++ libunity-2d-private/src/application.h 2012-03-12 13:05:19 +0000
67@@ -26,6 +26,7 @@
68 #include "launcheritem.h"
69
70 // libunity-2d
71+#include <gconnector.h>
72 #include <gscopedpointer.h>
73
74 // Qt
75@@ -107,7 +108,6 @@
76 Q_INVOKABLE virtual bool belongsToDifferentWorkspace();
77 Q_INVOKABLE virtual bool belongsToDifferentScreen(int screen);
78 Q_INVOKABLE void connectWindowSignals();
79- void disconnectWindowSignals();
80
81 void updateOverlaysState(const QString& sender, const QMap<QString, QVariant>& properties);
82
83@@ -193,6 +193,7 @@
84 void setDynamicQuicklistImporter(const QString& service);
85 IndicatorDesktopShortcutsPointer m_staticShortcuts;
86 QTimer m_geometryChangedTimer;
87+ GConnector m_gConnector;
88 };
89
90 Q_DECLARE_METATYPE(Application*)

Subscribers

People subscribed via source and target branches