diff options
author | Ted Gould <ted@gould.cx> | 2011-03-16 14:49:22 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2011-03-16 14:49:22 -0500 |
commit | 7c64f1595fc244617ff1f725ea5f3bd30234542b (patch) | |
tree | c1ca5863d3a63f7b2c91029f1fa15d3d01a0bc03 | |
parent | c8b3e361e64226a549c4536facd6de4bf9a025c5 (diff) | |
parent | 57bf196fb01cd7f9bd4185c5d8d35cfc441795b7 (diff) | |
download | ayatana-indicator-application-7c64f1595fc244617ff1f725ea5f3bd30234542b.tar.gz ayatana-indicator-application-7c64f1595fc244617ff1f725ea5f3bd30234542b.tar.bz2 ayatana-indicator-application-7c64f1595fc244617ff1f725ea5f3bd30234542b.zip |
New upstream release.
∘ Fix ordering of indicators
∘ No more duplication of indicators on the panel (LP: #708243)
∘ Using proper object on async call (LP: #734584)
∘ Protect from the accessible description being NULL. (LP: #724767)
-rw-r--r-- | ChangeLog | 84 | ||||
-rwxr-xr-x | configure | 20 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | data/ordering-override.keyfile | 9 | ||||
-rw-r--r-- | debian/changelog | 10 | ||||
-rw-r--r-- | src/application-service-appstore.c | 12 | ||||
-rw-r--r-- | src/indicator-application.c | 59 |
7 files changed, 176 insertions, 22 deletions
@@ -1,5 +1,89 @@ # Generated by Makefile. Do not edit. +2011-03-16 Ted Gould <ted@gould.cx> + + 0.2.95 + +2011-03-16 Ted Gould <ted@gould.cx> + + Fix ordering of indicators + +2011-03-16 Ted Gould <ted@gould.cx> + + Moving iBus and keyboard under advice of mpt + +2011-03-14 Ted Gould <ted@gould.cx> + + Inserting network manager applet at the front + +2011-03-14 Ted Gould <ted@gould.cx> + + Debug message on missing override file. + +2011-03-14 Ted Gould <ted@gould.cx> + + Debug message on missing override file. + +2011-03-14 Ted Gould <ted@gould.cx> + + Do a sort after deciding the ordering ID + +2011-03-14 Ted Gould <ted@gould.cx> + + Noticing a missing unref + +2011-03-15 Ted Gould <ted@gould.cx> + + Handle the case of getting application signals while still waiting on the full list. + +2011-03-11 Ted Gould <ted@gould.cx> + + Adding bug + +2011-03-11 Ted Gould <ted@gould.cx> + + If we're requeuing we don't really want to continue to process the signal + +2011-03-11 Ted Gould <ted@gould.cx> + + Removing applications before adding new ones. + +2011-03-11 Ted Gould <ted@gould.cx> + + A couple memory leaks + +2011-03-11 Ted Gould <ted@gould.cx> + + Only clear the cancel if we're not being cancelled + +2011-03-11 Ted Gould <ted@gould.cx> + + Unrefing the object, it might not happen right away, so let's clear it ourselves. + +2011-03-11 Ted Gould <ted@gould.cx> + + If we're in the middle of a GetApplications and we get another signal, let's try again. + +2011-03-11 Ted Gould <ted@gould.cx> + + Add a cancellable object for the GetApplications call + +2011-03-15 Ted Gould <ted@gould.cx> + + Using the proper object to finish the call + +2011-03-14 Ted Gould <ted@gould.cx> + + Use the passed in proxy to get the result to ensure it's valid. + +2011-03-02 Ted Gould <ted@gould.cx> + + Protect from the accessible description being NULL + +2011-02-25 Michael Terry <mike@mterry.name> + + fix crash on null string passed to GVariant + 2011-02-24 Ted Gould <ted@gould.cx> 0.2.94 @@ -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.94. +# Generated by GNU Autoconf 2.67 for indicator-application 0.2.95. # # 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.94' -PACKAGE_STRING='indicator-application 0.2.94' +PACKAGE_VERSION='0.2.95' +PACKAGE_STRING='indicator-application 0.2.95' PACKAGE_BUGREPORT='ted@canonical.com' PACKAGE_URL='' @@ -1446,7 +1446,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.94 to adapt to many kinds of systems. +\`configure' configures indicator-application 0.2.95 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1517,7 +1517,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of indicator-application 0.2.94:";; + short | recursive ) echo "Configuration of indicator-application 0.2.95:";; esac cat <<\_ACEOF @@ -1634,7 +1634,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -indicator-application configure 0.2.94 +indicator-application configure 0.2.95 generated by GNU Autoconf 2.67 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1914,7 +1914,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.94, which was +It was created by indicator-application $as_me 0.2.95, which was generated by GNU Autoconf 2.67. Invocation command line was $ $0 $@ @@ -2735,7 +2735,7 @@ fi # Define the identity of the package. PACKAGE=indicator-application - VERSION=0.2.94 + VERSION=0.2.95 cat >>confdefs.h <<_ACEOF @@ -12462,7 +12462,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.94, which was +This file was extended by indicator-application $as_me 0.2.95, which was generated by GNU Autoconf 2.67. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -12528,7 +12528,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.94 +indicator-application config.status 0.2.95 configured by $0, generated by GNU Autoconf 2.67, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index fe010cd..67983a5 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,11 @@ -AC_INIT(indicator-application, 0.2.94, ted@canonical.com) +AC_INIT(indicator-application, 0.2.95, 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.94) +AM_INIT_AUTOMAKE(indicator-application, 0.2.95) AM_MAINTAINER_MODE diff --git a/data/ordering-override.keyfile b/data/ordering-override.keyfile index 71d7c1a..7adef0c 100644 --- a/data/ordering-override.keyfile +++ b/data/ordering-override.keyfile @@ -1,5 +1,6 @@ [Ordering Index Overrides] -gnome-power-manager=1 -gst-keyboard-xkb=2 -gsd-keyboard-xkb=3 -ibus=4 +nm_applet=1 +gnome-power-manager=2 +ibus=3 +gst-keyboard-xkb=4 +gsd-keyboard-xkb=5 diff --git a/debian/changelog b/debian/changelog index 89cc5e8..7cc4d91 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +indicator-application (0.2.95-0ubuntu1~ppa1) UNRELEASED; urgency=low + + * New upstream release. + ∘ Fix ordering of indicators + ∘ No more duplication of indicators on the panel (LP: #708243) + ∘ Using proper object on async call (LP: #734584) + ∘ Protect from the accessible description being NULL. (LP: #724767) + + -- Ted Gould <ted@ubuntu.com> Wed, 16 Mar 2011 14:47:38 -0500 + indicator-application (0.2.94-0ubuntu2) natty; urgency=low * debian/control, debian/rules: diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c index 10feef5..25eba69 100644 --- a/src/application-service-appstore.c +++ b/src/application-service-appstore.c @@ -374,6 +374,7 @@ load_override_file (GHashTable * hash, const gchar * filename) g_return_if_fail(filename != NULL); if (!g_file_test(filename, G_FILE_TEST_EXISTS)) { + g_debug("Override file '%s' doesn't exist", filename); return; } @@ -438,7 +439,7 @@ got_all_properties (GObject * source_object, GAsyncResult * res, * icon_theme_path = NULL, * index = NULL, * label = NULL, * guide = NULL; - GVariant * properties = g_dbus_proxy_call_finish(app->props, res, &error); + GVariant * properties = g_dbus_proxy_call_finish(G_DBUS_PROXY(source_object), res, &error); if (app->props_cancel != NULL) { g_object_unref(app->props_cancel); @@ -486,6 +487,7 @@ got_all_properties (GObject * source_object, GAsyncResult * res, } /* else ignore */ } g_variant_iter_free (iter); + g_variant_unref(properties); if (menu == NULL || id == NULL || category == NULL || status == NULL || icon_name == NULL) { @@ -524,6 +526,7 @@ got_all_properties (GObject * source_object, GAsyncResult * res, app->ordering_index = GPOINTER_TO_UINT(ordering_index_over); } g_debug("'%s' ordering index is '%X'", app->id, app->ordering_index); + app->appstore->priv->applications = g_list_sort_with_data(app->appstore->priv->applications, app_sort_func, NULL); if (label != NULL) { app->label = g_variant_dup_string(label, NULL); @@ -1238,9 +1241,10 @@ get_applications (ApplicationServiceAppstore * appstore) } g_variant_builder_add (&builder, "(sisossss)", app->icon, - position++, app->dbus_name, app->menu, - app->icon_theme_path, app->label, - app->guide, app->icon_desc); + position++, app->dbus_name, app->menu, + app->icon_theme_path, app->label, + app->guide, + (app->icon_desc != NULL) ? app->icon_desc : ""); } out = g_variant_builder_end(&builder); diff --git a/src/indicator-application.c b/src/indicator-application.c index f7ce391..2b26c92 100644 --- a/src/indicator-application.c +++ b/src/indicator-application.c @@ -86,6 +86,7 @@ struct _IndicatorApplicationPrivate { GList * applications; GHashTable * theme_dirs; guint disconnect_kill; + GCancellable * get_apps_cancel; }; typedef struct _ApplicationEntry ApplicationEntry; @@ -166,6 +167,8 @@ indicator_application_init (IndicatorApplication *self) priv->theme_dirs = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + priv->get_apps_cancel = NULL; + return; } @@ -178,6 +181,12 @@ indicator_application_dispose (GObject *object) g_source_remove(priv->disconnect_kill); } + if (priv->get_apps_cancel != NULL) { + g_cancellable_cancel(priv->get_apps_cancel); + g_object_unref(priv->get_apps_cancel); + priv->get_apps_cancel = NULL; + } + while (priv->applications != NULL) { application_removed(INDICATOR_APPLICATION(object), 0); @@ -290,10 +299,20 @@ service_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data) g_signal_connect(proxy, "g-signal", G_CALLBACK(receive_signal), self); + /* We shouldn't be in a situation where we've already + called this function. It doesn't *hurt* anything, but + man we should look into it more. */ + if (priv->get_apps_cancel != NULL) { + g_warning("Already getting applications? Odd."); + return; + } + + priv->get_apps_cancel = g_cancellable_new(); + /* Query it for existing applications */ g_debug("Request current apps"); g_dbus_proxy_call(priv->service_proxy, "GetApplications", NULL, - G_DBUS_CALL_FLAGS_NONE, -1, NULL, + G_DBUS_CALL_FLAGS_NONE, -1, priv->get_apps_cancel, get_applications, self); return; @@ -730,6 +749,22 @@ receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name, GVariant * parameters, gpointer user_data) { IndicatorApplication * self = INDICATOR_APPLICATION(user_data); + IndicatorApplicationPrivate * priv = INDICATOR_APPLICATION_GET_PRIVATE(self); + + /* If we're in the middle of a GetApplications call and we get + any of these our state is probably going to just be confused. Let's + cancel the call we had and try again to try and get a clear answer */ + if (priv->get_apps_cancel != NULL) { + g_cancellable_cancel(priv->get_apps_cancel); + g_object_unref(priv->get_apps_cancel); + + priv->get_apps_cancel = g_cancellable_new(); + + g_dbus_proxy_call(priv->service_proxy, "GetApplications", NULL, + G_DBUS_CALL_FLAGS_NONE, -1, priv->get_apps_cancel, + get_applications, self); + return; + } if (g_strcmp0(signal_name, "ApplicationAdded") == 0) { const gchar * iconname; @@ -791,15 +826,35 @@ get_applications (GObject * obj, GAsyncResult * res, gpointer user_data) result = g_dbus_proxy_call_finish(priv->service_proxy, res, &error); + /* No one can cancel us anymore, we've completed! */ + if (priv->get_apps_cancel != NULL) { + if (error == NULL || error->domain != G_IO_ERROR || error->code != G_IO_ERROR_CANCELLED) { + g_object_unref(priv->get_apps_cancel); + priv->get_apps_cancel = NULL; + } + } + + /* If we got an error, print it and exit out */ if (error != NULL) { g_warning("Unable to get application list: %s", error->message); + g_error_free(error); return; } + /* Remove all applications that we previously had + as we're going to repopulate the list. */ + while (priv->applications != NULL) { + application_removed(self, 0); + } + + /* Get our new applications that we got in the request */ g_variant_get(result, "(a(sisossss))", &iter); - while ((child = g_variant_iter_next_value (iter))) + while ((child = g_variant_iter_next_value (iter))) { get_applications_helper(self, child); + g_variant_unref(child); + } g_variant_iter_free (iter); + g_variant_unref(result); return; } |