← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/indicator-session/screensaver-proxy-on-request into lp:indicator-session

 

Ted Gould has proposed merging lp:~ted/indicator-session/screensaver-proxy-on-request into lp:indicator-session.

    Requested reviews:
    Indicator Applet Developers (indicator-applet-developers)


Only building the proxy when we try to do something with the proxy.

-- 
https://code.launchpad.net/~ted/indicator-session/screensaver-proxy-on-request/+merge/18853
Your team ayatana-commits is subscribed to branch lp:indicator-session.
=== modified file 'src/lock-helper.c'
--- src/lock-helper.c	2010-02-05 00:59:30 +0000
+++ src/lock-helper.c	2010-02-08 17:00:30 +0000
@@ -35,6 +35,8 @@
 
 static gdm_autologin_cb_t gdm_autologin_cb = NULL;
 
+void build_gss_proxy (void);
+
 /* Checks to see if there is an error and reports
    it.  Not much else we can do. */
 static void
@@ -56,6 +58,9 @@
 {
 	g_return_if_fail(cookie != 0);
 
+	build_gss_proxy();
+	g_return_if_fail(gss_proxy != NULL);
+
 	dbus_g_proxy_begin_call(gss_proxy, "UnThrottle",
 	                        unthrottle_return, NULL,
 	                        NULL,
@@ -103,6 +108,9 @@
 		screensaver_unthrottle();
 	}
 
+	build_gss_proxy();
+	g_return_if_fail(gss_proxy != NULL);
+
 	cookie_call = dbus_g_proxy_begin_call(gss_proxy, "Throttle",
 	                                      throttle_return, NULL,
 	                                      NULL,
@@ -245,17 +253,19 @@
 void
 build_gss_proxy (void)
 {
-	DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
-	g_return_if_fail(session_bus != NULL);
-
-	gss_proxy = dbus_g_proxy_new_for_name(session_bus,
-	                                      "org.gnome.ScreenSaver",
-	                                      "/",
-	                                      "org.gnome.ScreenSaver");
-	g_return_if_fail(gss_proxy != NULL);
-
-	dbus_g_proxy_add_signal(gss_proxy, "ActiveChanged", G_TYPE_BOOLEAN, G_TYPE_INVALID);
-	dbus_g_proxy_connect_signal(gss_proxy, "ActiveChanged", G_CALLBACK(gss_active_changed), NULL, NULL);
+	if (gss_proxy == NULL) {
+		DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
+		g_return_if_fail(session_bus != NULL);
+
+		gss_proxy = dbus_g_proxy_new_for_name(session_bus,
+		                                      "org.gnome.ScreenSaver",
+		                                      "/",
+		                                      "org.gnome.ScreenSaver");
+		g_return_if_fail(gss_proxy != NULL);
+
+		dbus_g_proxy_add_signal(gss_proxy, "ActiveChanged", G_TYPE_BOOLEAN, G_TYPE_INVALID);
+		dbus_g_proxy_connect_signal(gss_proxy, "ActiveChanged", G_CALLBACK(gss_active_changed), NULL, NULL);
+	}
 
 	return;
 }
@@ -286,6 +296,7 @@
 		return;
 	}
 
+	build_gss_proxy();
 	g_return_if_fail(gss_proxy != NULL);
 
 	dbus_g_proxy_call_no_reply(gss_proxy,
@@ -318,7 +329,6 @@
 	}
 
 	build_gdm_proxy();
-	build_gss_proxy();
 
 	return FALSE;
 }


Follow ups