[gnome-shell] ShellAppUsage: Port to GDBus
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] ShellAppUsage: Port to GDBus
- Date: Tue, 9 Aug 2011 15:46:06 +0000 (UTC)
commit 6c97e2a5ab0641413b3f553f03e2df825027820a
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Tue Aug 9 11:44:44 2011 -0400
ShellAppUsage: Port to GDBus
(Split out of a larger commit by Colin Walters <walters verbum org>)
https://bugzilla.gnome.org/show_bug.cgi?id=648651
src/shell-app-usage.c | 41 ++++++++++++++++++++++++++++-------------
1 files changed, 28 insertions(+), 13 deletions(-)
---
diff --git a/src/shell-app-usage.c b/src/shell-app-usage.c
index 7b70a13..f9e91b0 100644
--- a/src/shell-app-usage.c
+++ b/src/shell-app-usage.c
@@ -11,7 +11,6 @@
#include <gdk/gdkx.h>
#include <glib.h>
#include <gio/gio.h>
-#include <dbus/dbus-glib.h>
#include <meta/display.h>
#include <meta/group.h>
#include <meta/window.h>
@@ -82,7 +81,7 @@ struct _ShellAppUsage
GObject parent;
GFile *configfile;
- DBusGProxy *session_proxy;
+ GDBusProxy *session_proxy;
GdkDisplay *display;
gulong last_idle;
guint idle_focus_change_id;
@@ -116,7 +115,7 @@ struct UsageData
static void shell_app_usage_finalize (GObject *object);
-static void on_session_status_changed (DBusGProxy *proxy, guint status, ShellAppUsage *self);
+static void on_session_status_changed (GDBusProxy *proxy, guint status, ShellAppUsage *self);
static void on_focus_app_changed (ShellWindowTracker *tracker, GParamSpec *spec, ShellAppUsage *self);
static void ensure_queued_save (ShellAppUsage *self);
static UsageData * get_app_usage_for_context_and_id (ShellAppUsage *self,
@@ -343,7 +342,7 @@ on_focus_app_changed (ShellWindowTracker *tracker,
}
static void
-on_session_status_changed (DBusGProxy *proxy,
+on_session_status_changed (GDBusProxy *proxy,
guint status,
ShellAppUsage *self)
{
@@ -375,11 +374,22 @@ on_session_status_changed (DBusGProxy *proxy,
}
static void
+session_proxy_signal (GDBusProxy *proxy, gchar *sender_name, gchar *signal_name, GVariant *parameters, gpointer user_data)
+{
+ if (g_str_equal (signal_name, "StatusChanged"))
+ {
+ guint status;
+ g_variant_get (parameters, "(u)", &status);
+ on_session_status_changed (proxy, status, SHELL_APP_USAGE (user_data));
+ }
+}
+
+static void
shell_app_usage_init (ShellAppUsage *self)
{
ShellGlobal *global;
char *shell_userdata_dir, *path;
- DBusGConnection *session_bus;
+ GDBusConnection *session_bus;
ShellWindowTracker *tracker;
global = shell_global_get ();
@@ -390,14 +400,17 @@ shell_app_usage_init (ShellAppUsage *self)
g_signal_connect (tracker, "notify::focus-app", G_CALLBACK (on_focus_app_changed), self);
g_signal_connect (tracker, "app-state-changed", G_CALLBACK (on_app_state_changed), self);
- session_bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
- self->session_proxy = dbus_g_proxy_new_for_name (session_bus, "org.gnome.SessionManager",
- "/org/gnome/SessionManager/Presence",
- "org.gnome.SessionManager");
- dbus_g_proxy_add_signal (self->session_proxy, "StatusChanged",
- G_TYPE_UINT, G_TYPE_INVALID, G_TYPE_INVALID);
- dbus_g_proxy_connect_signal (self->session_proxy, "StatusChanged",
- G_CALLBACK (on_session_status_changed), self, NULL);
+ session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
+ self->session_proxy = g_dbus_proxy_new_sync (session_bus,
+ G_DBUS_PROXY_FLAGS_NONE,
+ NULL, /* interface info */
+ "org.gnome.SessionManager",
+ "/org/gnome/SessionManager/Presence",
+ "org.gnome.SessionManager",
+ NULL, /* cancellable */
+ NULL /* error */);
+ g_signal_connect (self->session_proxy, "g-signal", G_CALLBACK (session_proxy_signal), self);
+ g_object_unref (session_bus);
self->last_idle = 0;
self->currently_idle = FALSE;
@@ -433,6 +446,8 @@ shell_app_usage_finalize (GObject *object)
g_object_unref (self->configfile);
+ g_object_unref (self->session_proxy);
+
G_OBJECT_CLASS (shell_app_usage_parent_class)->finalize(object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]