From ba8af8211f01a5c470ac30275e907bc5a26be910 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 29 Oct 2009 09:27:05 -0500 Subject: Putting in some templated objects. --- libindicator/indicator-service.c | 58 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 libindicator/indicator-service.c (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c new file mode 100644 index 0000000..089c9ad --- /dev/null +++ b/libindicator/indicator-service.c @@ -0,0 +1,58 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "indicator-service.h" + +typedef struct _IndicatorServicePrivate IndicatorServicePrivate; + +struct _IndicatorServicePrivate { + int dummy; +}; + +#define INDICATOR_SERVICE_GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), INDICATOR_SERVICE_TYPE, IndicatorServicePrivate)) + +static void indicator_service_class_init (IndicatorServiceClass *klass); +static void indicator_service_init (IndicatorService *self); +static void indicator_service_dispose (GObject *object); +static void indicator_service_finalize (GObject *object); + +G_DEFINE_TYPE (IndicatorService, indicator_service, G_TYPE_OBJECT); + +static void +indicator_service_class_init (IndicatorServiceClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (IndicatorServicePrivate)); + + object_class->dispose = indicator_service_dispose; + object_class->finalize = indicator_service_finalize; + + + return; +} + +static void +indicator_service_init (IndicatorService *self) +{ + + return; +} + +static void +indicator_service_dispose (GObject *object) +{ + + G_OBJECT_CLASS (indicator_service_parent_class)->dispose (object); + return; +} + +static void +indicator_service_finalize (GObject *object) +{ + + G_OBJECT_CLASS (indicator_service_parent_class)->finalize (object); + return; +} -- cgit v1.2.3 From ec0809ed60a94f582ad7111a992fa0f60e493016 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 29 Oct 2009 11:33:37 -0500 Subject: Putting a dummy implementation in for _new for linking --- libindicator/indicator-service.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index 089c9ad..7a1fa8a 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -56,3 +56,11 @@ indicator_service_finalize (GObject *object) G_OBJECT_CLASS (indicator_service_parent_class)->finalize (object); return; } + +IndicatorService * +indicator_service_new (gchar * name) +{ + GObject * obj = g_object_new(INDICATOR_SERVICE_TYPE, NULL); + + return INDICATOR_SERVICE(obj); +} -- cgit v1.2.3 From 621a7ba6b53826e95011940b90d9bf8a684534b8 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 29 Oct 2009 13:13:07 -0500 Subject: Adding the shutdown signal --- libindicator/indicator-service.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index 7a1fa8a..5a252f8 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -4,12 +4,21 @@ #include "indicator-service.h" +/* Private Stuff */ typedef struct _IndicatorServicePrivate IndicatorServicePrivate; struct _IndicatorServicePrivate { int dummy; }; +/* Signals Stuff */ +enum { + SHUTDOWN, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + #define INDICATOR_SERVICE_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), INDICATOR_SERVICE_TYPE, IndicatorServicePrivate)) @@ -30,6 +39,22 @@ indicator_service_class_init (IndicatorServiceClass *klass) object_class->dispose = indicator_service_dispose; object_class->finalize = indicator_service_finalize; + /* Signals */ + + /** + IndicatorService::shutdown: + @arg0: The #IndicatorService object + + Signaled when the service should shutdown as no one + is listening anymore. + */ + signals[SHUTDOWN] = g_signal_new (INDICATOR_SERVICE_SIGNAL_SHUTDOWN, + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (IndicatorServiceClass, shutdown), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0, G_TYPE_NONE); return; } -- cgit v1.2.3 From fbb2bc9cf94cb7a89856a8820f26f9311985fcc8 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 29 Oct 2009 13:45:37 -0500 Subject: Adding in the 'name' property --- libindicator/indicator-service.c | 88 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index 5a252f8..64aa986 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -19,6 +19,18 @@ enum { static guint signals[LAST_SIGNAL] = { 0 }; +/* Properties */ +/* Enum for the properties so that they can be quickly + found and looked up. */ +enum { + PROP_0, + PROP_NAME, +}; + +/* The strings so that they can be slowly looked up. */ +#define PROP_NAME_S "name" + +/* GObject Stuff */ #define INDICATOR_SERVICE_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), INDICATOR_SERVICE_TYPE, IndicatorServicePrivate)) @@ -27,6 +39,10 @@ static void indicator_service_init (IndicatorService *self); static void indicator_service_dispose (GObject *object); static void indicator_service_finalize (GObject *object); +/* Other prototypes */ +static void set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); +static void get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); + G_DEFINE_TYPE (IndicatorService, indicator_service, G_TYPE_OBJECT); static void @@ -39,6 +55,18 @@ indicator_service_class_init (IndicatorServiceClass *klass) object_class->dispose = indicator_service_dispose; object_class->finalize = indicator_service_finalize; + /* Property funcs */ + object_class->set_property = set_property; + object_class->get_property = get_property; + + /* Properties */ + g_object_class_install_property(object_class, PROP_NAME, + g_param_spec_string(PROP_NAME_S, + "The DBus name for this service", + "This is the name that should be used on DBus for this service.", + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /* Signals */ /** @@ -82,10 +110,68 @@ indicator_service_finalize (GObject *object) return; } +static void +set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) +{ + IndicatorService * self = INDICATOR_SERVICE(object); + g_return_if_fail(self != NULL); + + IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(self); + g_return_if_fail(priv != NULL); + + switch (prop_id) { + /* *********************** */ + case PROP_NAME: + break; + /* *********************** */ + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } + + return; +} + +static void +get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) +{ + IndicatorService * self = INDICATOR_SERVICE(object); + g_return_if_fail(self != NULL); + + IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(self); + g_return_if_fail(priv != NULL); + + switch (prop_id) { + /* *********************** */ + case PROP_NAME: + break; + /* *********************** */ + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } + + return; +} + +/** + indicator_service_new: + @name: The name for the service on dbus + + This function creates the service on DBus and tries to + get a well-known name specified in @name. If the name + can't be estabilished then the #IndicatorService::shutdown + signal will be sent. + + Return value: A brand new #IndicatorService object or #NULL + if there is an error. +*/ IndicatorService * indicator_service_new (gchar * name) { - GObject * obj = g_object_new(INDICATOR_SERVICE_TYPE, NULL); + GObject * obj = g_object_new(INDICATOR_SERVICE_TYPE, + PROP_NAME_S, name, + NULL); return INDICATOR_SERVICE(obj); } -- cgit v1.2.3 From 145b214353d592e234387d03fbcabab28b14b34b Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 29 Oct 2009 14:55:25 -0500 Subject: Filling in more of the name property. --- libindicator/indicator-service.c | 54 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index 64aa986..ecbb238 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -1,6 +1,7 @@ #ifdef HAVE_CONFIG_H #include "config.h" #endif +#include #include "indicator-service.h" @@ -8,7 +9,7 @@ typedef struct _IndicatorServicePrivate IndicatorServicePrivate; struct _IndicatorServicePrivate { - int dummy; + gchar * name; }; /* Signals Stuff */ @@ -42,6 +43,7 @@ static void indicator_service_finalize (GObject *object); /* Other prototypes */ static void set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); +static void try_and_get_name (IndicatorService * service); G_DEFINE_TYPE (IndicatorService, indicator_service, G_TYPE_OBJECT); @@ -90,6 +92,9 @@ indicator_service_class_init (IndicatorServiceClass *klass) static void indicator_service_init (IndicatorService *self) { + IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(self); + + priv->name = NULL; return; } @@ -105,6 +110,11 @@ indicator_service_dispose (GObject *object) static void indicator_service_finalize (GObject *object) { + IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(object); + + if (priv->name) { + g_free(priv->name); + } G_OBJECT_CLASS (indicator_service_parent_class)->finalize (object); return; @@ -122,6 +132,16 @@ set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec switch (prop_id) { /* *********************** */ case PROP_NAME: + if (G_VALUE_HOLDS_STRING(value)) { + if (priv->name != NULL) { + g_error("Name can not be set twice!"); + return; + } + priv->name = g_value_dup_string(value); + try_and_get_name(self); + } else { + g_warning("Name is a string bud."); + } break; /* *********************** */ default: @@ -144,6 +164,11 @@ get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspe switch (prop_id) { /* *********************** */ case PROP_NAME: + if (G_VALUE_HOLDS_STRING(value)) { + g_value_set_string(value, priv->name); + } else { + g_warning("Name is a string bud."); + } break; /* *********************** */ default: @@ -154,6 +179,33 @@ get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspe return; } +static void +try_and_get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer data) +{ + IndicatorService * service = INDICATOR_SERVICE(data); + g_return_if_fail(service != NULL); + + +} + +static void +try_and_get_name (IndicatorService * service) +{ + IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(service); + /* g_return_if_fail(priv->dbus_proxy != NULL); */ + g_return_if_fail(priv->name != NULL); + + org_freedesktop_DBus_request_name_async(/* priv->dbus_proxy, */ NULL, + priv->name, + 0, + try_and_get_name_cb, + service); + + return; +} + +/* API */ + /** indicator_service_new: @name: The name for the service on dbus -- cgit v1.2.3 From f99a9f269a702b2db3f96e1b6740e9eceb6b9ca8 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 29 Oct 2009 15:24:49 -0500 Subject: Building ourselves a DBus proxy. --- libindicator/indicator-service.c | 43 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index ecbb238..9b7e885 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -10,6 +10,7 @@ typedef struct _IndicatorServicePrivate IndicatorServicePrivate; struct _IndicatorServicePrivate { gchar * name; + DBusGProxy * dbus_proxy; }; /* Signals Stuff */ @@ -94,7 +95,29 @@ indicator_service_init (IndicatorService *self) { IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(self); + /* Get the private variables in a decent state */ priv->name = NULL; + priv->dbus_proxy = NULL; + + /* Start talkin' dbus */ + GError * error = NULL; + DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error); + if (error != NULL) { + g_error("Unable to get session bus: %s", error->message); + g_error_free(error); + return; + } + + priv->dbus_proxy = dbus_g_proxy_new_for_name_owner(session_bus, + DBUS_SERVICE_DBUS, + DBUS_PATH_DBUS, + DBUS_INTERFACE_DBUS, + &error); + if (error != NULL) { + g_error("Unable to get the proxy to DBus: %s", error->message); + g_error_free(error); + return; + } return; } @@ -102,6 +125,12 @@ indicator_service_init (IndicatorService *self) static void indicator_service_dispose (GObject *object) { + IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(object); + + if (priv->dbus_proxy != NULL) { + g_object_unref(G_OBJECT(priv->dbus_proxy)); + priv->dbus_proxy = NULL; + } G_OBJECT_CLASS (indicator_service_parent_class)->dispose (object); return; @@ -185,19 +214,27 @@ try_and_get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer IndicatorService * service = INDICATOR_SERVICE(data); g_return_if_fail(service != NULL); + if (status != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER && status != DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER) { + /* The already owner seems like it shouldn't ever + happen, but I have a hard time throwing an error + on it as we did achieve our goals. */ + g_signal_emit(G_OBJECT(data), signals[SHUTDOWN], 0, TRUE); + return; + } + return; } static void try_and_get_name (IndicatorService * service) { IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(service); - /* g_return_if_fail(priv->dbus_proxy != NULL); */ + g_return_if_fail(priv->dbus_proxy != NULL); g_return_if_fail(priv->name != NULL); - org_freedesktop_DBus_request_name_async(/* priv->dbus_proxy, */ NULL, + org_freedesktop_DBus_request_name_async(priv->dbus_proxy, priv->name, - 0, + DBUS_NAME_FLAG_DO_NOT_QUEUE, try_and_get_name_cb, service); -- cgit v1.2.3 From 2e39b18fd87c298eeb9e104d3e80f76b1d937c21 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 29 Oct 2009 16:11:02 -0500 Subject: Woot! We're a DBus service now. --- libindicator/indicator-service.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index 9b7e885..125ecfc 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -5,6 +5,11 @@ #include "indicator-service.h" +/* DBus Prototypes */ +void _indicator_service_server_watch (void); + +#include "indicator-service-server.h" + /* Private Stuff */ typedef struct _IndicatorServicePrivate IndicatorServicePrivate; @@ -87,6 +92,10 @@ indicator_service_class_init (IndicatorServiceClass *klass) g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE); + /* Initialize the object as a DBus type */ + dbus_g_object_type_install_info(INDICATOR_SERVICE_TYPE, + &dbus_glib__indicator_service_server_object_info); + return; } @@ -119,6 +128,10 @@ indicator_service_init (IndicatorService *self) return; } + dbus_g_connection_register_g_object(session_bus, + "/need/a/path", + G_OBJECT(self)); + return; } @@ -241,6 +254,8 @@ try_and_get_name (IndicatorService * service) return; } +void _indicator_service_server_watch (void) { } + /* API */ /** -- cgit v1.2.3 From 82aaaed9788d56fa2739da70621e56f1e21ec0a8 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 29 Oct 2009 16:29:47 -0500 Subject: Adding in some shared strings for finding intefaces and objects. --- libindicator/indicator-service.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index 125ecfc..eef916b 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -9,6 +9,7 @@ void _indicator_service_server_watch (void); #include "indicator-service-server.h" +#include "dbus-shared.h" /* Private Stuff */ typedef struct _IndicatorServicePrivate IndicatorServicePrivate; @@ -129,7 +130,7 @@ indicator_service_init (IndicatorService *self) } dbus_g_connection_register_g_object(session_bus, - "/need/a/path", + INDICATOR_SERVICE_OBJECT, G_OBJECT(self)); return; -- cgit v1.2.3 From fbba41584475d598deab170e12ba81b16f3601aa Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 29 Oct 2009 17:18:51 -0500 Subject: Adding in the watchers and timeout parameter. --- libindicator/indicator-service.c | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index eef916b..cf02bac 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -2,11 +2,12 @@ #include "config.h" #endif #include +#include #include "indicator-service.h" /* DBus Prototypes */ -void _indicator_service_server_watch (void); +static gboolean _indicator_service_server_watch (IndicatorService * service, DBusGMethodInvocation * method); #include "indicator-service-server.h" #include "dbus-shared.h" @@ -17,6 +18,8 @@ typedef struct _IndicatorServicePrivate IndicatorServicePrivate; struct _IndicatorServicePrivate { gchar * name; DBusGProxy * dbus_proxy; + guint timeout; + GList * watchers; }; /* Signals Stuff */ @@ -108,6 +111,8 @@ indicator_service_init (IndicatorService *self) /* Get the private variables in a decent state */ priv->name = NULL; priv->dbus_proxy = NULL; + priv->timeout = 0; + priv->watchers = NULL; /* Start talkin' dbus */ GError * error = NULL; @@ -146,6 +151,11 @@ indicator_service_dispose (GObject *object) priv->dbus_proxy = NULL; } + if (priv->timeout != 0) { + g_source_remove(priv->timeout); + priv->timeout = 0; + } + G_OBJECT_CLASS (indicator_service_parent_class)->dispose (object); return; } @@ -155,10 +165,16 @@ indicator_service_finalize (GObject *object) { IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(object); - if (priv->name) { + if (priv->name != NULL) { g_free(priv->name); } + if (priv->watchers != NULL) { + g_list_foreach(priv->watchers, (GFunc)g_free, NULL); + g_list_free(priv->watchers); + priv->watchers = NULL; + } + G_OBJECT_CLASS (indicator_service_parent_class)->finalize (object); return; } @@ -255,7 +271,23 @@ try_and_get_name (IndicatorService * service) return; } -void _indicator_service_server_watch (void) { } +static gboolean +_indicator_service_server_watch (IndicatorService * service, DBusGMethodInvocation * method) +{ + g_return_val_if_fail(INDICATOR_IS_SERVICE(service), FALSE); + IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(service); + + priv->watchers = g_list_append(priv->watchers, + g_strdup(dbus_g_method_get_sender(method))); + + if (priv->timeout != 0) { + g_source_remove(priv->timeout); + priv->timeout = 0; + } + + dbus_g_method_return(method, 1); + return TRUE; +} /* API */ -- cgit v1.2.3 From 58194766a1163b1e1df94ef391403a2a827e3e95 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 29 Oct 2009 17:21:39 -0500 Subject: Sending shutdown signal 500 ms after getting a name if we have no watchers. --- libindicator/indicator-service.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index cf02bac..4cc99d2 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -238,6 +238,13 @@ get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspe return; } +static gboolean +timeout_no_watchers (gpointer data) +{ + g_signal_emit(G_OBJECT(data), signals[SHUTDOWN], 0, TRUE); + return FALSE; +} + static void try_and_get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer data) { @@ -252,6 +259,9 @@ try_and_get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer return; } + IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(service); + priv->timeout = g_timeout_add(500, timeout_no_watchers, service); + return; } -- cgit v1.2.3 From ddb2ab7cba0d8b2c7ea5171595e06c04520f4b81 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 2 Nov 2009 16:08:04 -0600 Subject: Adding a fallback to the session bus after trying the starter bus. --- libindicator/indicator-service.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index 4cc99d2..ff0bd03 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -116,14 +116,24 @@ indicator_service_init (IndicatorService *self) /* Start talkin' dbus */ GError * error = NULL; - DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error); + DBusGConnection * bus = dbus_g_bus_get(DBUS_BUS_STARTER, &error); if (error != NULL) { - g_error("Unable to get session bus: %s", error->message); + g_error("Unable to get starter bus: %s", error->message); g_error_free(error); - return; + + /* Okay, fine let's try the session bus then. */ + /* I think this should automatically, but I can't find confirmation + of that, so we're putting the extra little code in here. */ + error = NULL; + bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error); + if (error != NULL) { + g_error("Unable to get session bus: %s", error->message); + g_error_free(error); + return; + } } - priv->dbus_proxy = dbus_g_proxy_new_for_name_owner(session_bus, + priv->dbus_proxy = dbus_g_proxy_new_for_name_owner(bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, @@ -134,7 +144,7 @@ indicator_service_init (IndicatorService *self) return; } - dbus_g_connection_register_g_object(session_bus, + dbus_g_connection_register_g_object(bus, INDICATOR_SERVICE_OBJECT, G_OBJECT(self)); -- cgit v1.2.3 From cb0c099a07068f374e7ce27b873d2773131e4a48 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 3 Nov 2009 22:42:39 -0600 Subject: Making a warning not use a colloquialism. --- libindicator/indicator-service.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libindicator/indicator-service.c') diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index ff0bd03..69422c5 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -209,7 +209,7 @@ set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec priv->name = g_value_dup_string(value); try_and_get_name(self); } else { - g_warning("Name is a string bud."); + g_warning("Name property requires a string value."); } break; /* *********************** */ @@ -236,7 +236,7 @@ get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspe if (G_VALUE_HOLDS_STRING(value)) { g_value_set_string(value, priv->name); } else { - g_warning("Name is a string bud."); + g_warning("Name property requires a string value."); } break; /* *********************** */ -- cgit v1.2.3