From b983e9ab6113c9b00183ec4d0712b3adb294fb13 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 21 Jun 2010 21:26:33 +0000 Subject: make the panel work with glib 2.25.9 --- 0001-Update-to-GDBus-API-change.patch | 160 ++++++++++++++++++++++++++++++++++ gnome-panel.spec | 11 ++- 2 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 0001-Update-to-GDBus-API-change.patch diff --git a/0001-Update-to-GDBus-API-change.patch b/0001-Update-to-GDBus-API-change.patch new file mode 100644 index 0000000..2e1ed5b --- /dev/null +++ b/0001-Update-to-GDBus-API-change.patch @@ -0,0 +1,160 @@ +From eb9b57ea502c268f2e4eddacc1c2cfb5283a407d Mon Sep 17 00:00:00 2001 +From: Carlos Garcia Campos +Date: Fri, 18 Jun 2010 12:17:26 +0200 +Subject: [PATCH 1/3] Update to GDBus API change + +Fixes bug #621766. +--- + configure.in | 2 +- + .../panel-applet-container.c | 64 ++++++++++---------- + 2 files changed, 32 insertions(+), 34 deletions(-) + +diff --git a/configure.in b/configure.in +index ba108b0..f3b3fbd 100644 +--- a/configure.in ++++ b/configure.in +@@ -57,7 +57,7 @@ AC_CHECK_FUNCS(_NSGetEnviron) + LIBGNOME_DESKTOP_REQUIRED=2.24.0 + GDK_PIXBUF_REQUIRED=2.7.1 + PANGO_REQUIRED=1.15.4 +-GLIB_REQUIRED=2.25.7 ++GLIB_REQUIRED=2.25.9 + GTK_REQUIRED=2.19.7 + LIBWNCK_REQUIRED=2.19.5 + GCONF_REQUIRED=2.6.1 +diff --git a/gnome-panel/libpanel-applet-private/panel-applet-container.c b/gnome-panel/libpanel-applet-private/panel-applet-container.c +index ad5eeaf..96d4aa4 100644 +--- a/gnome-panel/libpanel-applet-private/panel-applet-container.c ++++ b/gnome-panel/libpanel-applet-private/panel-applet-container.c +@@ -27,7 +27,6 @@ + struct _PanelAppletContainerPrivate { + GDBusProxy *applet_proxy; + +- guint proxy_watcher_id; + guint name_watcher_id; + gchar *bus_name; + +@@ -142,11 +141,6 @@ panel_applet_container_dispose (GObject *object) + container->priv->name_watcher_id = 0; + } + +- if (container->priv->proxy_watcher_id > 0) { +- g_bus_unwatch_proxy (container->priv->proxy_watcher_id); +- container->priv->proxy_watcher_id = 0; +- } +- + if (container->priv->applet_proxy) { + g_object_unref (container->priv->applet_proxy); + container->priv->applet_proxy = NULL; +@@ -255,10 +249,6 @@ panel_applet_container_plug_removed (PanelAppletContainer *container) + g_bus_unwatch_name (container->priv->name_watcher_id); + container->priv->name_watcher_id = 0; + } +- if (container->priv->proxy_watcher_id > 0) { +- g_bus_unwatch_proxy (container->priv->proxy_watcher_id); +- container->priv->proxy_watcher_id = 0; +- } + + g_object_unref (container->priv->applet_proxy); + container->priv->applet_proxy = NULL; +@@ -322,23 +312,33 @@ on_property_changed (GDBusConnection *connection, + } + + static void +-on_proxy_appeared (GDBusConnection *connection, +- const gchar *name, +- const gchar *name_owner, +- GDBusProxy *proxy, +- gpointer user_data) ++on_proxy_appeared (GObject *source_object, ++ GAsyncResult *res, ++ gpointer user_data) + { + GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT (user_data); + PanelAppletContainer *container; ++ GDBusProxy *proxy; ++ GError *error = NULL; ++ ++ proxy = g_dbus_proxy_new_finish (res, &error); ++ if (!proxy) { ++ g_simple_async_result_set_from_error (result, error); ++ g_error_free (error); ++ g_simple_async_result_complete (result); ++ g_object_unref (result); ++ ++ return; ++ } + + container = PANEL_APPLET_CONTAINER (g_async_result_get_source_object (G_ASYNC_RESULT (result))); + +- container->priv->applet_proxy = g_object_ref (proxy); ++ container->priv->applet_proxy = proxy; + g_signal_connect (container->priv->applet_proxy, "g-signal", + G_CALLBACK (panel_applet_container_child_signal), + container); +- g_dbus_connection_signal_subscribe (connection, +- name_owner, ++ g_dbus_connection_signal_subscribe (g_dbus_proxy_get_connection (proxy), ++ g_dbus_proxy_get_name (proxy), + "org.freedesktop.DBus.Properties", + "PropertiesChanged", + g_dbus_proxy_get_object_path (proxy), +@@ -384,18 +384,16 @@ get_applet_cb (GObject *source_object, + container = PANEL_APPLET_CONTAINER (g_async_result_get_source_object (G_ASYNC_RESULT (result))); + g_variant_get (retvals, "(&ou)", &applet_path, &container->priv->xid); + +- container->priv->proxy_watcher_id = +- g_bus_watch_proxy_on_connection (connection, +- container->priv->bus_name, +- G_BUS_NAME_WATCHER_FLAGS_NONE, +- applet_path, +- PANEL_APPLET_INTERFACE, +- G_TYPE_DBUS_PROXY, +- G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, +- (GBusProxyAppearedCallback) on_proxy_appeared, +- NULL, +- result, +- NULL); ++ g_dbus_proxy_new (connection, ++ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, ++ NULL, ++ container->priv->bus_name, ++ applet_path, ++ PANEL_APPLET_INTERFACE, ++ NULL, ++ (GAsyncReadyCallback) on_proxy_appeared, ++ result); ++ + g_variant_unref (retvals); + + /* g_async_result_get_source_object returns new ref */ +@@ -601,7 +599,7 @@ panel_applet_container_child_set (PanelAppletContainer *container, + g_hash_table_insert (container->priv->pending_ops, result, cancellable); + + g_dbus_connection_call (g_dbus_proxy_get_connection (proxy), +- g_dbus_proxy_get_unique_bus_name (proxy), ++ g_dbus_proxy_get_name (proxy), + g_dbus_proxy_get_object_path (proxy), + "org.freedesktop.DBus.Properties", + "Set", +@@ -701,7 +699,7 @@ panel_applet_container_child_get (PanelAppletContainer *container, + g_hash_table_insert (container->priv->pending_ops, result, cancellable); + + g_dbus_connection_call (g_dbus_proxy_get_connection (proxy), +- g_dbus_proxy_get_unique_bus_name (proxy), ++ g_dbus_proxy_get_name (proxy), + g_dbus_proxy_get_object_path (proxy), + "org.freedesktop.DBus.Properties", + "Get", +@@ -772,7 +770,7 @@ panel_applet_container_child_popup_menu (PanelAppletContainer *container, + panel_applet_container_child_popup_menu); + + g_dbus_connection_call (g_dbus_proxy_get_connection (proxy), +- g_dbus_proxy_get_unique_bus_name (proxy), ++ g_dbus_proxy_get_name (proxy), + g_dbus_proxy_get_object_path (proxy), + PANEL_APPLET_INTERFACE, + "PopupMenu", +-- +1.7.1 + diff --git a/gnome-panel.spec b/gnome-panel.spec index 1a08c2e..737b4b4 100644 --- a/gnome-panel.spec +++ b/gnome-panel.spec @@ -1,7 +1,7 @@ %define gettext_package gnome-panel-2.0 %define gnome_desktop_version 2.11.1 -%define glib2_version 2.15.5 +%define glib2_version 2.25.9 %define gtk2_version 2.11.3 %define libgnome_version 2.13.0 %define libgnomeui_version 2.5.4 @@ -22,7 +22,7 @@ Summary: GNOME panel Name: gnome-panel Version: 2.31.2 -Release: 3%{?dist} +Release: 4%{?dist} URL: http://www.gnome.org #VCS: git:git://git.gnome.org/gnome-panel Source0: http://download.gnome.org/sources/gnome-panel/2.31/%{name}-%{version}.tar.bz2 @@ -127,6 +127,9 @@ Patch48: gnome-panel-libs.patch # https://bugzilla.gnome.org/show_bug.cgi?id=621864 Patch49: gnome-panel-2.31.2-libm.patch +# upstream fix +Patch50: 0001-Update-to-GDBus-API-change.patch + Conflicts: gnome-power-manager < 2.15.3 %description @@ -178,6 +181,7 @@ Panel Applets using the libpanel-applet library. %patch47 -p1 -b .fix-clock-crash %patch48 -p1 -b .libs %patch49 -p1 -b .libm +%patch50 -p1 -b .gdbus cp -f %{SOURCE3} gnome-panel/panel-default-setup.entries cp -f %{SOURCE4} m4 @@ -371,6 +375,9 @@ gtk-update-icon-cache -q %{_datadir}/icons/hicolor >&/dev/null || : %{_datadir}/gtk-doc/html/* %changelog +* Mon Jun 21 2010 Matthias Clasen 2.31.2-4 +- Update for GLib api change + * Thu Jun 17 2010 Dan HorĂ¡k 2.31.2-3 - link also with libm -- cgit