aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen VanDine <ken.vandine@canonical.com>2011-01-27 16:43:49 -0500
committerKen VanDine <ken.vandine@canonical.com>2011-01-27 16:43:49 -0500
commit326b5bf46ccc31ce53355d2cdba88102e8d8ca64 (patch)
tree6ab08ab7aae36b4a845351111247b95a33c35d64
parent3814e3d2d075044d7a77d0e0ccd0989f32f15010 (diff)
parent1246174af6fb0750bf72455fd3d10f30425562d5 (diff)
downloadlibayatana-indicator-326b5bf46ccc31ce53355d2cdba88102e8d8ca64.tar.gz
libayatana-indicator-326b5bf46ccc31ce53355d2cdba88102e8d8ca64.tar.bz2
libayatana-indicator-326b5bf46ccc31ce53355d2cdba88102e8d8ca64.zip
releasing version 0.3.18-0ubuntu10.3.18-0ubuntu1
-rw-r--r--AUTHORS1
-rw-r--r--ChangeLog44
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac4
-rw-r--r--debian/changelog15
-rwxr-xr-xdebian/rules4
-rw-r--r--libindicator/Makefile.am4
-rw-r--r--libindicator/Makefile.in4
-rw-r--r--libindicator/indicator-object-marshal.c43
-rw-r--r--libindicator/indicator-object-marshal.h12
-rw-r--r--libindicator/indicator-object-marshal.list3
-rw-r--r--libindicator/indicator-object.c25
-rw-r--r--libindicator/indicator-object.h4
-rw-r--r--libindicator/indicator-service-manager.c43
14 files changed, 191 insertions, 35 deletions
diff --git a/AUTHORS b/AUTHORS
index 9a1e489..186fb9f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -5,6 +5,7 @@
Eitan Isaacson
Karl
Ken VanDine
+ Marco Trevisan (Treviño)
Martin Pitt
Michael Terry
Mikkel Kamstrup Erlandsen
diff --git a/ChangeLog b/ChangeLog
index 7f992bb..8ce7055 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,49 @@
# Generated by Makefile. Do not edit.
+2011-01-27 Ted Gould <ted@gould.cx>
+
+ 0.3.18
+
+2011-01-27 Ted Gould <ted@gould.cx>
+
+ Adding a signal for scrolling that includes the entry
+
+2011-01-27 Marco Trevisan (Treviño) <mail@3v1n0.net>
+
+ Removed typo in code.
+
+ Pasted a more SCROLL value :P
+
+2011-01-27 Marco Trevisan (Treviño) <mail@3v1n0.net>
+
+ Added support for "signal-entry" signal
+
+ libindicator support the new "scroll-entry" signal (which get called
+ using the target entry as parameter too) I think that maybe we could
+ simply rewrite the "scroll" signal, but I kept it there for
+ compatibility reasons; however, actually just the indicator-sound
+ should be fixed in case of switch...
+
+2011-01-14 Ted Gould <ted@gould.cx>
+
+ 0.3.17
+
+2011-01-13 Ted Gould <ted@gould.cx>
+
+ Use dbus name watches instead of g-owner-change signal for watching for restarts.
+
+2011-01-13 Michael Terry <mike@mterry.name>
+
+ use actual DBus NameOwnerChanged interface rather than GDBus's higher level signal because that one only works for well-known names
+
+2011-01-13 Michael Terry <mike@mterry.name>
+
+ fix basename issue when make is given full path
+
+2011-01-13 Ted Gould <ted@gould.cx>
+
+ 0.3.16
+
2011-01-10 Ted Gould <ted@gould.cx>
Adding a signal for the menu being closed.
diff --git a/configure b/configure
index 1d3377f..e6f52a6 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for libindicator 0.3.16.
+# Generated by GNU Autoconf 2.67 for libindicator 0.3.18.
#
# Report bugs to <ted@canonical.com>.
#
@@ -701,8 +701,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libindicator'
PACKAGE_TARNAME='libindicator'
-PACKAGE_VERSION='0.3.16'
-PACKAGE_STRING='libindicator 0.3.16'
+PACKAGE_VERSION='0.3.18'
+PACKAGE_STRING='libindicator 0.3.18'
PACKAGE_BUGREPORT='ted@canonical.com'
PACKAGE_URL=''
@@ -1443,7 +1443,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libindicator 0.3.16 to adapt to many kinds of systems.
+\`configure' configures libindicator 0.3.18 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1513,7 +1513,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libindicator 0.3.16:";;
+ short | recursive ) echo "Configuration of libindicator 0.3.18:";;
esac
cat <<\_ACEOF
@@ -1628,7 +1628,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libindicator configure 0.3.16
+libindicator configure 0.3.18
generated by GNU Autoconf 2.67
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1906,7 +1906,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libindicator $as_me 0.3.16, which was
+It was created by libindicator $as_me 0.3.18, which was
generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@
@@ -2726,7 +2726,7 @@ fi
# Define the identity of the package.
PACKAGE=libindicator
- VERSION=0.3.16
+ VERSION=0.3.18
cat >>confdefs.h <<_ACEOF
@@ -12361,7 +12361,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libindicator $as_me 0.3.16, which was
+This file was extended by libindicator $as_me 0.3.18, which was
generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -12427,7 +12427,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libindicator config.status 0.3.16
+libindicator config.status 0.3.18
configured by $0, generated by GNU Autoconf 2.67,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index d78af70..839cff1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,10 +1,10 @@
-AC_INIT(libindicator, 0.3.16, ted@canonical.com)
+AC_INIT(libindicator, 0.3.18, ted@canonical.com)
AC_PREREQ(2.53)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(libindicator, 0.3.16)
+AM_INIT_AUTOMAKE(libindicator, 0.3.18)
AM_MAINTAINER_MODE
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES])
diff --git a/debian/changelog b/debian/changelog
index f286daf..1764509 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,18 @@
+libindicator (0.3.18-0ubuntu1) natty; urgency=low
+
+ * New upstream release.
+ * Adding a signal for scrolling that includes the entry
+ * debian/rules: Updating shlibs
+
+ -- Ted Gould <ted@ubuntu.com> Thu, 27 Jan 2011 15:31:04 -0600
+
+libindicator (0.3.17-0ubuntu1~ppa1) natty; urgency=low
+
+ * New upstream release.
+ * Fixing catching services dropping off
+
+ -- Ted Gould <ted@ubuntu.com> Fri, 14 Jan 2011 11:09:36 -0600
+
libindicator (0.3.16-0ubuntu1) natty; urgency=low
* New upstream release.
diff --git a/debian/rules b/debian/rules
index e4f4f04..de71b0a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -9,8 +9,8 @@ DEB_BUILDDIR = $(DEB_SRCDIR)/build
LDFLAGS += -Wl,-z,defs -Wl,--as-needed
-DEB_DH_MAKESHLIBS_ARGS_libindicator1 += -V 'libindicator1 (>= 0.3.15)'
-DEB_DH_MAKESHLIBS_ARGS_libindicator3 += -V 'libindicator3-1 (>= 0.3.15)'
+DEB_DH_MAKESHLIBS_ARGS_libindicator1 += -V 'libindicator1 (>= 0.3.18)'
+DEB_DH_MAKESHLIBS_ARGS_libindicator3 += -V 'libindicator3-1 (>= 0.3.18)'
configure/libindicator3-1:: stamp-configure-gtk3
stamp-configure-gtk3:
diff --git a/libindicator/Makefile.am b/libindicator/Makefile.am
index 5c70345..47a902a 100644
--- a/libindicator/Makefile.am
+++ b/libindicator/Makefile.am
@@ -104,11 +104,11 @@ DBUS_SPECS = \
gen-%.xml.h: %.xml
@echo "Building $@ from $<"
- @echo "extern const char * _$(subst -,_,$(subst .,_,$(basename $<)));" > $@
+ @echo "extern const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<))));" > $@
gen-%.xml.c: %.xml
@echo "Building $@ from $<"
- @echo "const char * _$(subst -,_,$(subst .,_,$(basename $<))) = " > $@
+ echo "const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<)))) = " > $@
@sed -e "s:\":\\\\\":g" -e s:^:\": -e s:\$$:\\\\n\": $< >> $@
@echo ";" >> $@
diff --git a/libindicator/Makefile.in b/libindicator/Makefile.in
index cfbeb09..78b19ad 100644
--- a/libindicator/Makefile.in
+++ b/libindicator/Makefile.in
@@ -932,11 +932,11 @@ s-enum-types-c: $(indicator_headers)
gen-%.xml.h: %.xml
@echo "Building $@ from $<"
- @echo "extern const char * _$(subst -,_,$(subst .,_,$(basename $<)));" > $@
+ @echo "extern const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<))));" > $@
gen-%.xml.c: %.xml
@echo "Building $@ from $<"
- @echo "const char * _$(subst -,_,$(subst .,_,$(basename $<))) = " > $@
+ echo "const char * _$(subst -,_,$(subst .,_,$(basename $(notdir $<)))) = " > $@
@sed -e "s:\":\\\\\":g" -e s:^:\": -e s:\$$:\\\\n\": $< >> $@
@echo ";" >> $@
diff --git a/libindicator/indicator-object-marshal.c b/libindicator/indicator-object-marshal.c
index 76a8cdf..a6415d2 100644
--- a/libindicator/indicator-object-marshal.c
+++ b/libindicator/indicator-object-marshal.c
@@ -126,7 +126,46 @@ _indicator_object_marshal_VOID__UINT_ENUM (GClosure *closure,
data2);
}
-/* VOID:POINTER,UINT (./indicator-object-marshal.list:3) */
+/* VOID:POINTER,UINT,ENUM (./indicator-object-marshal.list:3) */
+void
+_indicator_object_marshal_VOID__POINTER_UINT_ENUM (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__POINTER_UINT_ENUM) (gpointer data1,
+ gpointer arg_1,
+ guint arg_2,
+ gint arg_3,
+ gpointer data2);
+ register GMarshalFunc_VOID__POINTER_UINT_ENUM callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 4);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__POINTER_UINT_ENUM) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_marshal_value_peek_pointer (param_values + 1),
+ g_marshal_value_peek_uint (param_values + 2),
+ g_marshal_value_peek_enum (param_values + 3),
+ data2);
+}
+
+/* VOID:POINTER,UINT (./indicator-object-marshal.list:4) */
void
_indicator_object_marshal_VOID__POINTER_UINT (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
@@ -163,7 +202,7 @@ _indicator_object_marshal_VOID__POINTER_UINT (GClosure *closure,
data2);
}
-/* VOID:POINTER,BOOLEAN (./indicator-object-marshal.list:4) */
+/* VOID:POINTER,BOOLEAN (./indicator-object-marshal.list:5) */
void
_indicator_object_marshal_VOID__POINTER_BOOLEAN (GClosure *closure,
GValue *return_value G_GNUC_UNUSED,
diff --git a/libindicator/indicator-object-marshal.h b/libindicator/indicator-object-marshal.h
index f2475b2..ba91c72 100644
--- a/libindicator/indicator-object-marshal.h
+++ b/libindicator/indicator-object-marshal.h
@@ -22,7 +22,15 @@ extern void _indicator_object_marshal_VOID__UINT_ENUM (GClosure *closure,
gpointer invocation_hint,
gpointer marshal_data);
-/* VOID:POINTER,UINT (./indicator-object-marshal.list:3) */
+/* VOID:POINTER,UINT,ENUM (./indicator-object-marshal.list:3) */
+extern void _indicator_object_marshal_VOID__POINTER_UINT_ENUM (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* VOID:POINTER,UINT (./indicator-object-marshal.list:4) */
extern void _indicator_object_marshal_VOID__POINTER_UINT (GClosure *closure,
GValue *return_value,
guint n_param_values,
@@ -30,7 +38,7 @@ extern void _indicator_object_marshal_VOID__POINTER_UINT (GClosure *closure,
gpointer invocation_hint,
gpointer marshal_data);
-/* VOID:POINTER,BOOLEAN (./indicator-object-marshal.list:4) */
+/* VOID:POINTER,BOOLEAN (./indicator-object-marshal.list:5) */
extern void _indicator_object_marshal_VOID__POINTER_BOOLEAN (GClosure *closure,
GValue *return_value,
guint n_param_values,
diff --git a/libindicator/indicator-object-marshal.list b/libindicator/indicator-object-marshal.list
index 4ea1e8b..73f1fac 100644
--- a/libindicator/indicator-object-marshal.list
+++ b/libindicator/indicator-object-marshal.list
@@ -1,4 +1,5 @@
VOID: POINTER, UINT, UINT
-VOID: UINT,ENUM
+VOID: UINT, ENUM
+VOID: POINTER, UINT, ENUM
VOID: POINTER, UINT
VOID: POINTER, BOOLEAN
diff --git a/libindicator/indicator-object.c b/libindicator/indicator-object.c
index 988a8ae..95ab08a 100644
--- a/libindicator/indicator-object.c
+++ b/libindicator/indicator-object.c
@@ -58,6 +58,7 @@ enum {
ENTRY_REMOVED,
ENTRY_MOVED,
SCROLL,
+ SCROLL_ENTRY,
MENU_SHOW,
SHOW_NOW_CHANGED,
LAST_SIGNAL
@@ -146,7 +147,6 @@ indicator_object_class_init (IndicatorObjectClass *klass)
_indicator_object_marshal_VOID__POINTER_UINT_UINT,
G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_NONE);
-
/**
IndicatorObject::scroll:
@arg0: The #IndicatorObject object
@@ -162,7 +162,28 @@ indicator_object_class_init (IndicatorObjectClass *klass)
G_STRUCT_OFFSET (IndicatorObjectClass, scroll),
NULL, NULL,
_indicator_object_marshal_VOID__UINT_ENUM,
- G_TYPE_NONE, 2, G_TYPE_UINT, INDICATOR_OBJECT_TYPE_SCROLL_DIRECTION);
+ G_TYPE_NONE, 2, G_TYPE_UINT,
+ INDICATOR_OBJECT_TYPE_SCROLL_DIRECTION);
+
+/**
+ IndicatorObject::scroll-entry:
+ @arg0: The #IndicatorObject object
+ @arg1: A pointer to the #IndicatorObjectEntry that
+ receives the scroll event.
+ @arg2: The delta of the scroll event
+ @arg3: The orientation of the scroll event.
+
+ When the indicator receives a mouse scroll wheel event
+ from the user, this signal is emitted.
+ */
+ signals[SCROLL_ENTRY] = g_signal_new (INDICATOR_OBJECT_SIGNAL_SCROLL_ENTRY,
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (IndicatorObjectClass, scroll_entry),
+ NULL, NULL,
+ _indicator_object_marshal_VOID__POINTER_UINT_ENUM,
+ G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_UINT,
+ INDICATOR_OBJECT_TYPE_SCROLL_DIRECTION);
/**
IndicatorObject::menu-show:
diff --git a/libindicator/indicator-object.h b/libindicator/indicator-object.h
index 9ad1366..4b3ce0b 100644
--- a/libindicator/indicator-object.h
+++ b/libindicator/indicator-object.h
@@ -51,6 +51,8 @@ typedef enum
#define INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED, INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_SIGNAL_SCROLL "scroll"
#define INDICATOR_OBJECT_SIGNAL_SCROLL_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_SCROLL, INDICATOR_OBJECT_TYPE))
+#define INDICATOR_OBJECT_SIGNAL_SCROLL_ENTRY "scroll-entry"
+#define INDICATOR_OBJECT_SIGNAL_SCROLL_ENTRY_ID (g_signal_lookup(#define INDICATOR_OBJECT_SIGNAL_SCROLL_ENTRY, INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_SIGNAL_MENU_SHOW "menu-show"
#define INDICATOR_OBJECT_SIGNAL_MENU_SHOW_ID (g_signal_lookup(INDICATOR_OBJECT_SIGNAL_MENU_SHOW, INDICATOR_OBJECT_TYPE))
#define INDICATOR_OBJECT_SIGNAL_SHOW_NOW_CHANGED "show-now-changed"
@@ -114,6 +116,7 @@ struct _IndicatorObjectClass {
void (*scroll) (IndicatorObject * io, gint delta, IndicatorScrollDirection direction);
void (*menu_show) (IndicatorObject * io, IndicatorObjectEntry * entry, guint timestamp, gpointer user_data);
void (*show_now_changed) (IndicatorObject * io, IndicatorObjectEntry * entry, gboolean show_now_state, gpointer user_data);
+ void (*scroll_entry) (IndicatorObject * io, IndicatorObjectEntry * entry, gint delta, IndicatorScrollDirection direction);
/* Reserved */
void (*reserved1) (void);
@@ -121,7 +124,6 @@ struct _IndicatorObjectClass {
void (*reserved3) (void);
void (*reserved4) (void);
void (*reserved5) (void);
- void (*reserved6) (void);
};
/**
diff --git a/libindicator/indicator-service-manager.c b/libindicator/indicator-service-manager.c
index 34b6baa..f3a29d0 100644
--- a/libindicator/indicator-service-manager.c
+++ b/libindicator/indicator-service-manager.c
@@ -46,6 +46,7 @@ struct _IndicatorServiceManagerPrivate {
gchar * name;
GDBusProxy * service_proxy;
GCancellable * service_proxy_cancel;
+ guint name_watcher;
gboolean connected;
guint this_service_version;
guint restart_count;
@@ -102,7 +103,7 @@ static void start_service (IndicatorServiceManager * service);
static void start_service_again (IndicatorServiceManager * manager);
static void unwatch (GDBusProxy * proxy);
static void service_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data);
-static void service_proxy_name_change (GObject * object, GParamSpec * pspec, gpointer user_data);
+static void service_proxy_name_changed (GDBusConnection * connection, const gchar * sender_name, const gchar * object_path, const gchar * interface_name, const gchar * signal_name, GVariant * parameters, gpointer user_data);
G_DEFINE_TYPE (IndicatorServiceManager, indicator_service_manager, G_TYPE_OBJECT);
@@ -186,6 +187,7 @@ indicator_service_manager_init (IndicatorServiceManager *self)
priv->name = NULL;
priv->service_proxy = NULL;
priv->service_proxy_cancel = NULL;
+ priv->name_watcher = 0;
priv->connected = FALSE;
priv->this_service_version = 0;
priv->restart_count = 0;
@@ -218,6 +220,12 @@ indicator_service_manager_dispose (GObject *object)
g_signal_emit(object, signals[CONNECTION_CHANGE], 0, FALSE, TRUE);
}
+ if (priv->name_watcher != 0) {
+ g_dbus_connection_signal_unsubscribe(g_dbus_proxy_get_connection(priv->service_proxy),
+ priv->name_watcher);
+ priv->name_watcher = 0;
+ }
+
/* If we're still getting the proxy, stop looking so we
can then clean up some more. */
if (priv->service_proxy_cancel != NULL) {
@@ -442,7 +450,7 @@ start_service (IndicatorServiceManager * service)
return;
}
-/* Callback from trying to create the proxy for the serivce, this
+/* Callback from trying to create the proxy for the service, this
could include starting the service. Sometime it'll fail and
we'll try to start that dang service again! */
static void
@@ -486,7 +494,17 @@ service_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data)
priv->service_proxy = proxy;
/* Signal for drop */
- g_signal_connect(G_OBJECT(priv->service_proxy), "notify::g-name-owner", G_CALLBACK(service_proxy_name_change), user_data);
+ priv->name_watcher = g_dbus_connection_signal_subscribe(
+ g_dbus_proxy_get_connection(proxy),
+ "org.freedesktop.DBus",
+ "org.freedesktop.DBus",
+ "NameOwnerChanged",
+ "/org/freedesktop/DBus",
+ g_dbus_proxy_get_name(proxy),
+ G_DBUS_SIGNAL_FLAGS_NONE,
+ service_proxy_name_changed,
+ user_data,
+ NULL);
/* Build cancelable if we need it */
if (priv->watch_cancel == NULL) {
@@ -510,12 +528,18 @@ service_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data)
usually means the service died. We're dropping the proxy
and recreating it so that it'll restart the service. */
static void
-service_proxy_name_change (GObject * object, GParamSpec * pspec, gpointer user_data)
+service_proxy_name_changed (GDBusConnection * connection, const gchar * sender_name,
+ const gchar * object_path, const gchar * interface_name,
+ const gchar * signal_name, GVariant * parameters,
+ gpointer user_data)
+
{
IndicatorServiceManagerPrivate * priv = INDICATOR_SERVICE_MANAGER_GET_PRIVATE(user_data);
- gchar * name = g_dbus_proxy_get_name_owner(priv->service_proxy);
- if (name == NULL) {
+ const gchar * new_name;
+ g_variant_get(parameters, "(&s&s&s)", NULL, NULL, &new_name);
+
+ if (new_name == NULL || new_name[0] == 0) {
if (priv->connected) {
priv->connected = FALSE;
g_signal_emit(G_OBJECT(user_data), signals[CONNECTION_CHANGE], 0, FALSE, TRUE);
@@ -523,9 +547,10 @@ service_proxy_name_change (GObject * object, GParamSpec * pspec, gpointer user_d
start_service_again(INDICATOR_SERVICE_MANAGER(user_data));
} else {
- /* This case is an oddity, and really can only be a weird race
- condition. So we're going to ignore it for now. */
- g_free(name);
+ if (!priv->connected) {
+ priv->connected = TRUE;
+ g_signal_emit(G_OBJECT(user_data), signals[CONNECTION_CHANGE], 0, TRUE, TRUE);
+ }
}
return;