aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure22
-rw-r--r--configure.ac6
-rw-r--r--docs/libdbusmenu-glib/reference/version.xml2
-rw-r--r--docs/libdbusmenu-gtk/reference/version.xml2
-rw-r--r--libdbusmenu-glib/server.c41
5 files changed, 56 insertions, 17 deletions
diff --git a/configure b/configure
index 50bc1cc..5c3b631 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 libdbusmenu 0.3.13.
+# Generated by GNU Autoconf 2.67 for libdbusmenu 0.3.14.
#
# Report bugs to <ted@canonical.com>.
#
@@ -703,8 +703,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libdbusmenu'
PACKAGE_TARNAME='libdbusmenu'
-PACKAGE_VERSION='0.3.13'
-PACKAGE_STRING='libdbusmenu 0.3.13'
+PACKAGE_VERSION='0.3.14'
+PACKAGE_STRING='libdbusmenu 0.3.14'
PACKAGE_BUGREPORT='ted@canonical.com'
PACKAGE_URL=''
@@ -1533,7 +1533,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 libdbusmenu 0.3.13 to adapt to many kinds of systems.
+\`configure' configures libdbusmenu 0.3.14 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1603,7 +1603,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libdbusmenu 0.3.13:";;
+ short | recursive ) echo "Configuration of libdbusmenu 0.3.14:";;
esac
cat <<\_ACEOF
@@ -1741,7 +1741,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libdbusmenu configure 0.3.13
+libdbusmenu configure 0.3.14
generated by GNU Autoconf 2.67
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2112,7 +2112,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 libdbusmenu $as_me 0.3.13, which was
+It was created by libdbusmenu $as_me 0.3.14, which was
generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@
@@ -2933,7 +2933,7 @@ fi
# Define the identity of the package.
PACKAGE=libdbusmenu
- VERSION=0.3.13
+ VERSION=0.3.14
# Some tools Automake needs.
@@ -13065,7 +13065,7 @@ fi
###########################
LIBDBUSMENU_CURRENT=1
-LIBDBUSMENU_REVISION=15
+LIBDBUSMENU_REVISION=16
LIBDBUSMENU_AGE=0
@@ -14379,7 +14379,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 libdbusmenu $as_me 0.3.13, which was
+This file was extended by libdbusmenu $as_me 0.3.14, which was
generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14445,7 +14445,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="\\
-libdbusmenu config.status 0.3.13
+libdbusmenu config.status 0.3.14
configured by $0, generated by GNU Autoconf 2.67,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 792d065..7e7bf6b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,11 +1,11 @@
-AC_INIT(libdbusmenu, 0.3.13, ted@canonical.com)
+AC_INIT(libdbusmenu, 0.3.14, ted@canonical.com)
AC_COPYRIGHT([Copyright 2009,2010 Canonical])
AC_PREREQ(2.62)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(libdbusmenu, 0.3.13, [-Wno-portability])
+AM_INIT_AUTOMAKE(libdbusmenu, 0.3.14, [-Wno-portability])
AM_MAINTAINER_MODE
@@ -99,7 +99,7 @@ AC_PATH_PROG([VALA_API_GEN], [vapigen])
###########################
LIBDBUSMENU_CURRENT=1
-LIBDBUSMENU_REVISION=15
+LIBDBUSMENU_REVISION=16
LIBDBUSMENU_AGE=0
AC_SUBST(LIBDBUSMENU_CURRENT)
diff --git a/docs/libdbusmenu-glib/reference/version.xml b/docs/libdbusmenu-glib/reference/version.xml
index e473765..0b69c00 100644
--- a/docs/libdbusmenu-glib/reference/version.xml
+++ b/docs/libdbusmenu-glib/reference/version.xml
@@ -1 +1 @@
-0.3.13
+0.3.14
diff --git a/docs/libdbusmenu-gtk/reference/version.xml b/docs/libdbusmenu-gtk/reference/version.xml
index e473765..0b69c00 100644
--- a/docs/libdbusmenu-gtk/reference/version.xml
+++ b/docs/libdbusmenu-gtk/reference/version.xml
@@ -1 +1 @@
-0.3.13
+0.3.14
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c
index 26e7a0d..68afb92 100644
--- a/libdbusmenu-glib/server.c
+++ b/libdbusmenu-glib/server.c
@@ -633,6 +633,10 @@ serialize_menuitem(gpointer data, gpointer user_data)
_gvalue_array_append_hashtable(item, dict);
g_ptr_array_add(output, item);
+
+ g_hash_table_unref(dict);
+
+ return;
}
static gboolean
@@ -659,6 +663,33 @@ _dbusmenu_server_get_children (DbusmenuServer * server, gint id, GPtrArray * pro
return TRUE;
}
+/* Structure for holding the event data for the idle function
+ to pick it up. */
+typedef struct _idle_event_t idle_event_t;
+struct _idle_event_t {
+ DbusmenuMenuitem * mi;
+ gchar * eventid;
+ GValue data;
+ guint timestamp;
+};
+
+/* A handler for else where in the main loop so that the dbusmenu
+ event response doesn't get blocked */
+static gboolean
+event_local_handler (gpointer user_data)
+{
+ idle_event_t * data = (idle_event_t *)user_data;
+
+ dbusmenu_menuitem_handle_event(data->mi, data->eventid, &data->data, data->timestamp);
+
+ g_object_unref(data->mi);
+ g_free(data->eventid);
+ g_value_unset(&data->data);
+ g_free(data);
+ return FALSE;
+}
+
+/* Handles the even coming off of DBus */
static gboolean
_dbusmenu_server_event (DbusmenuServer * server, gint id, gchar * eventid, GValue * data, guint timestamp, GError ** error)
{
@@ -676,7 +707,15 @@ _dbusmenu_server_event (DbusmenuServer * server, gint id, gchar * eventid, GValu
return FALSE;
}
- dbusmenu_menuitem_handle_event(mi, eventid, data, timestamp);
+ idle_event_t * event_data = g_new0(idle_event_t, 1);
+ event_data->mi = mi;
+ g_object_ref(event_data->mi);
+ event_data->eventid = g_strdup(eventid);
+ event_data->timestamp = timestamp;
+ g_value_init(&(event_data->data), G_VALUE_TYPE(data));
+ g_value_copy(data, &(event_data->data));
+
+ g_timeout_add(0, event_local_handler, event_data);
return TRUE;
}