aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2011-03-16 14:49:22 -0500
committerTed Gould <ted@gould.cx>2011-03-16 14:49:22 -0500
commit7c64f1595fc244617ff1f725ea5f3bd30234542b (patch)
treec1ca5863d3a63f7b2c91029f1fa15d3d01a0bc03
parentc8b3e361e64226a549c4536facd6de4bf9a025c5 (diff)
parent57bf196fb01cd7f9bd4185c5d8d35cfc441795b7 (diff)
downloadayatana-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--ChangeLog84
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac4
-rw-r--r--data/ordering-override.keyfile9
-rw-r--r--debian/changelog10
-rw-r--r--src/application-service-appstore.c12
-rw-r--r--src/indicator-application.c59
7 files changed, 176 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index 632461a..eaa70e2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/configure b/configure
index 8b55bec..e1e7d31 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.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;
}