diff options
Diffstat (limited to 'mate-session/test-inhibit.c')
-rw-r--r-- | mate-session/test-inhibit.c | 84 |
1 files changed, 33 insertions, 51 deletions
diff --git a/mate-session/test-inhibit.c b/mate-session/test-inhibit.c index 45771e0..7207cb9 100644 --- a/mate-session/test-inhibit.c +++ b/mate-session/test-inhibit.c @@ -34,37 +34,23 @@ #define SM_DBUS_PATH "/org/gnome/SessionManager" #define SM_DBUS_INTERFACE "org.gnome.SessionManager" -#ifdef __GNUC__ -#define UNUSED_VARIABLE __attribute__ ((unused)) -#else -#define UNUSED_VARIABLE -#endif - -static DBusGConnection *bus_connection = NULL; -static DBusGProxy *sm_proxy = NULL; +static GDBusProxy *sm_proxy = NULL; static guint cookie = 0; static gboolean session_manager_connect (void) { - - if (bus_connection == NULL) { - GError *error; - - error = NULL; - bus_connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); - if (bus_connection == NULL) { - g_message ("Failed to connect to the session bus: %s", - error->message); - g_error_free (error); - exit (1); - } + GError *error = NULL; + if (sm_proxy == NULL) { + sm_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + SM_DBUS_NAME, + SM_DBUS_PATH, + SM_DBUS_INTERFACE, + NULL, + &error); } - - sm_proxy = dbus_g_proxy_new_for_name (bus_connection, - SM_DBUS_NAME, - SM_DBUS_PATH, - SM_DBUS_INTERFACE); return (sm_proxy != NULL); } @@ -78,21 +64,16 @@ static gboolean do_inhibit_for_window (GdkWindow *window) { GError *error; - gboolean res; - const char UNUSED_VARIABLE *startup_id; + GVariant *ret; + const char *startup_id G_GNUC_UNUSED; const char *app_id; const char *reason; guint toplevel_xid; guint flags; startup_id = g_getenv ("DESKTOP_AUTOSTART_ID"); -#if 1 app_id = "caja-cd-burner"; reason = "A CD burn is in progress."; -#else - app_id = "caja"; - reason = "A file transfer is in progress."; -#endif toplevel_xid = gdk_x11_window_get_xid (window); flags = GSM_INHIBITOR_FLAG_LOGOUT @@ -100,22 +81,21 @@ do_inhibit_for_window (GdkWindow *window) | GSM_INHIBITOR_FLAG_SUSPEND; error = NULL; - res = dbus_g_proxy_call (sm_proxy, - "Inhibit", - &error, - G_TYPE_STRING, app_id, - G_TYPE_UINT, toplevel_xid, - G_TYPE_STRING, reason, - G_TYPE_UINT, flags, - G_TYPE_INVALID, - G_TYPE_UINT, &cookie, - G_TYPE_INVALID); - if (! res) { + ret = g_dbus_proxy_call_sync (sm_proxy, + "Inhibit", + g_variant_new ("(susu)", app_id, toplevel_xid, reason, flags), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + if (ret == NULL) { g_warning ("Failed to inhibit: %s", error->message); g_error_free (error); return FALSE; } + g_variant_get (ret, "(u)", &cookie); + g_variant_unref (ret); g_debug ("Inhibiting session manager: %u", cookie); return TRUE; @@ -135,21 +115,23 @@ static gboolean do_uninhibit (void) { GError *error; - gboolean res; + GVariant *ret; error = NULL; - res = dbus_g_proxy_call (sm_proxy, - "Uninhibit", - &error, - G_TYPE_UINT, cookie, - G_TYPE_INVALID, - G_TYPE_INVALID); - if (! res) { + ret = g_dbus_proxy_call_sync (sm_proxy, + "Uninhibit", + g_variant_new ("(u)", cookie), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + if (ret == NULL) { g_warning ("Failed to uninhibit: %s", error->message); g_error_free (error); return FALSE; } + g_variant_unref (ret); cookie = 0; return TRUE; |