[Xfce4-commits] [apps/xfdashboard] 01/01: Fix trying not to eat up CPU ... again!

noreply at xfce.org noreply at xfce.org
Fri May 8 21:43:28 CEST 2015


This is an automated email from the git hooks/post-receive script.

nomad pushed a commit to branch master
in repository apps/xfdashboard.

commit dd9039ad352df3e2d77b0550d5e2577b1287871d
Author: Stephan Haller <nomad at froevel.de>
Date:   Fri May 8 21:42:32 2015 +0200

    Fix trying not to eat up CPU ... again!
    
    Do not connect a new signal handler for 'geometry-changed' for each window when application resume but unblock existing signal handler.
---
 xfdashboard/window-tracker.c |   16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/xfdashboard/window-tracker.c b/xfdashboard/window-tracker.c
index 0232df0..281b662 100644
--- a/xfdashboard/window-tracker.c
+++ b/xfdashboard/window-tracker.c
@@ -391,11 +391,12 @@ static void _xfdashboard_window_tracker_on_window_opened(XfdashboardWindowTracke
 	g_signal_connect_swapped(inWindow, "icon-changed", G_CALLBACK(_xfdashboard_window_tracker_on_window_icon_changed), self);
 	g_signal_connect_swapped(inWindow, "name-changed", G_CALLBACK(_xfdashboard_window_tracker_on_window_name_changed), self);
 	g_signal_connect_swapped(inWindow, "workspace-changed", G_CALLBACK(_xfdashboard_window_tracker_on_window_workspace_changed), self);
+	g_signal_connect_swapped(inWindow, "geometry-changed", G_CALLBACK(_xfdashboard_window_tracker_on_window_geometry_changed), self);
 
-	/* Connect to 'geometry-changed' at window only if application is not suspended */
-	if(!priv->isAppSuspended)
+	/* Block signal handler for 'geometry-changed' at window if application is suspended */
+	if(priv->isAppSuspended)
 	{
-		g_signal_connect_swapped(inWindow, "geometry-changed", G_CALLBACK(_xfdashboard_window_tracker_on_window_geometry_changed), self);
+		g_signal_handlers_block_by_func(inWindow, _xfdashboard_window_tracker_on_window_geometry_changed, self);
 	}
 
 	/* Emit signal */
@@ -757,17 +758,14 @@ static void _xfdashboard_window_tracker_on_application_suspended_changed(Xfdashb
 		{
 			g_signal_handlers_block_by_func(window, _xfdashboard_window_tracker_on_window_geometry_changed, self);
 		}
-			/* ... otherwise if application was resumed connect signals handlers
+			/* ... otherwise if application was resumed reconnect signals handlers
 			 * and emit 'geometry-changed' signal to reflect latest changes of
 			 * position and size of window.
 			 */
 			else
 			{
-				/* Connect signal handler */
-				g_signal_connect_swapped(window,
-											"geometry-changed",
-											G_CALLBACK(_xfdashboard_window_tracker_on_window_geometry_changed),
-											self);
+				/* Reconnect signal handler */
+				g_signal_handlers_unblock_by_func(window, _xfdashboard_window_tracker_on_window_geometry_changed, self);
 
 				/* Call signal handler to reflect latest changes */
 				_xfdashboard_window_tracker_on_window_geometry_changed(self, window);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list