aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog20
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac4
-rw-r--r--debian/changelog7
-rw-r--r--docs/reference/libappindicator-docs.sgml2
-rw-r--r--docs/reference/version.xml2
-rw-r--r--src/application-service-appstore.c20
7 files changed, 60 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index bab1a9d..0731757 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,25 @@
# Generated by Makefile. Do not edit.
+2010-09-09 Ted Gould <ted@gould.cx>
+
+ Handle double registration of indicators.
+
+2010-09-07 Ted Gould <ted@gould.cx>
+
+ Check for duplicate additions of applications and just rerequest properties.
+
+2010-09-07 Ted Gould <ted@gould.cx>
+
+ Extra debugging info
+
+2010-09-07 Ted Gould <ted@gould.cx>
+
+ Logging status change
+
+2010-08-26 Ted Gould <ted@gould.cx>
+
+ 0.2.6
+
2010-08-25 Ted Gould <ted@gould.cx>
Ordering i18n and keyboard indicators
diff --git a/configure b/configure
index ab7214b..b1a9ffe 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 indicator-application 0.2.6.
+# Generated by GNU Autoconf 2.67 for indicator-application 0.2.7.
#
# Report bugs to <ted@canonical.com>.
#
@@ -703,8 +703,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='indicator-application'
PACKAGE_TARNAME='indicator-application'
-PACKAGE_VERSION='0.2.6'
-PACKAGE_STRING='indicator-application 0.2.6'
+PACKAGE_VERSION='0.2.7'
+PACKAGE_STRING='indicator-application 0.2.7'
PACKAGE_BUGREPORT='ted@canonical.com'
PACKAGE_URL=''
@@ -1510,7 +1510,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 indicator-application 0.2.6 to adapt to many kinds of systems.
+\`configure' configures indicator-application 0.2.7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1581,7 +1581,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of indicator-application 0.2.6:";;
+ short | recursive ) echo "Configuration of indicator-application 0.2.7:";;
esac
cat <<\_ACEOF
@@ -1718,7 +1718,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-indicator-application configure 0.2.6
+indicator-application configure 0.2.7
generated by GNU Autoconf 2.67
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1998,7 +1998,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 indicator-application $as_me 0.2.6, which was
+It was created by indicator-application $as_me 0.2.7, which was
generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@
@@ -2819,7 +2819,7 @@ fi
# Define the identity of the package.
PACKAGE=indicator-application
- VERSION=0.2.6
+ VERSION=0.2.7
cat >>confdefs.h <<_ACEOF
@@ -13695,7 +13695,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 indicator-application $as_me 0.2.6, which was
+This file was extended by indicator-application $as_me 0.2.7, which was
generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -13761,7 +13761,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="\\
-indicator-application config.status 0.2.6
+indicator-application config.status 0.2.7
configured by $0, generated by GNU Autoconf 2.67,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 3f77cca..ebfc58f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,11 +1,11 @@
-AC_INIT(indicator-application, 0.2.6, ted@canonical.com)
+AC_INIT(indicator-application, 0.2.7, ted@canonical.com)
AC_COPYRIGHT([Copyright 2009, 2010 Canonical])
AC_PREREQ(2.53)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(indicator-application, 0.2.6)
+AM_INIT_AUTOMAKE(indicator-application, 0.2.7)
AM_MAINTAINER_MODE
diff --git a/debian/changelog b/debian/changelog
index 471b60d..86ac147 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+indicator-application (0.2.7-0ubuntu1) maverick; urgency=low
+
+ * New upstream release.
+ * Handle double registration of indicators (LP: #621838)
+
+ -- Ted Gould <ted@ubuntu.com> Thu, 09 Sep 2010 13:00:37 -0500
+
indicator-application (0.2.6-0ubuntu1) maverick; urgency=low
* New upstream release.
diff --git a/docs/reference/libappindicator-docs.sgml b/docs/reference/libappindicator-docs.sgml
index 383b4ac..0182b41 100644
--- a/docs/reference/libappindicator-docs.sgml
+++ b/docs/reference/libappindicator-docs.sgml
@@ -8,7 +8,7 @@
<bookinfo>
<title>libappindicator Reference Manual</title>
<releaseinfo>
- for libappindicator 0.2.6
+ for libappindicator 0.2.7
</releaseinfo>
</bookinfo>
diff --git a/docs/reference/version.xml b/docs/reference/version.xml
index 53a75d6..b003284 100644
--- a/docs/reference/version.xml
+++ b/docs/reference/version.xml
@@ -1 +1 @@
-0.2.6
+0.2.7
diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c
index d5f9a81..7096382 100644
--- a/src/application-service-appstore.c
+++ b/src/application-service-appstore.c
@@ -72,6 +72,8 @@ typedef enum {
VISIBLE_STATE_SHOWN
} visible_state_t;
+#define STATE2STRING(x) ((x) == VISIBLE_STATE_HIDDEN ? "hidden" : "visible")
+
typedef struct _Approver Approver;
struct _Approver {
DBusGProxy * proxy;
@@ -129,6 +131,7 @@ static AppIndicatorCategory string_to_cat(const gchar * cat_string);
static void approver_free (gpointer papprover, gpointer user_data);
static void check_with_new_approver (gpointer papp, gpointer papprove);
static void check_with_old_approver (gpointer papprove, gpointer papp);
+static Application * find_application (ApplicationServiceAppstore * appstore, const gchar * address, const gchar * object);
G_DEFINE_TYPE (ApplicationServiceAppstore, application_service_appstore, G_TYPE_OBJECT);
@@ -485,6 +488,7 @@ get_position (Application * app) {
}
if (lapp == NULL) {
+ g_warning("Unable to find position for app '%s'", app->id);
return -1;
}
@@ -497,6 +501,7 @@ static void
application_free (Application * app)
{
if (app == NULL) return;
+ g_debug("Application free '%s'", app->id);
/* Handle the case where this could be called by unref'ing one of
the proxy objects. */
@@ -554,6 +559,7 @@ static void
application_removed_cb (DBusGProxy * proxy, gpointer userdata)
{
Application * app = (Application *)userdata;
+ g_debug("Application proxy destroyed '%s'", app->id);
/* Remove from the panel */
app->status = APP_INDICATOR_STATUS_PASSIVE;
@@ -600,6 +606,8 @@ apply_status (Application * app)
return;
}
+ g_debug("Changing app '%s' state from %s to %s", app->id, STATE2STRING(app->visible_state), STATE2STRING(goal_state));
+
/* This means we're going off line */
if (goal_state == VISIBLE_STATE_HIDDEN) {
gint position = get_position(app);
@@ -848,10 +856,20 @@ application_service_appstore_application_add (ApplicationServiceAppstore * appst
g_return_if_fail(dbus_name != NULL && dbus_name[0] != '\0');
g_return_if_fail(dbus_object != NULL && dbus_object[0] != '\0');
ApplicationServiceAppstorePrivate * priv = appstore->priv;
+ Application * app = find_application(appstore, dbus_name, dbus_object);
+
+ if (app != NULL) {
+ g_warning("Application already exists! Rerequesting properties.");
+ org_freedesktop_DBus_Properties_get_all_async(app->prop_proxy,
+ NOTIFICATION_ITEM_DBUS_IFACE,
+ get_all_properties_cb,
+ app);
+ return;
+ }
/* Build the application entry. This will be carried
along until we're sure we've got everything. */
- Application * app = g_new0(Application, 1);
+ app = g_new0(Application, 1);
app->validated = FALSE;
app->dbus_name = g_strdup(dbus_name);