[gnome-panel/wip/segeiger/crash] test (crashes panel)
- From: Sebastian Geiger <segeiger src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel/wip/segeiger/crash] test (crashes panel)
- Date: Wed, 10 Feb 2016 23:00:14 +0000 (UTC)
commit e363a21e0d12b3a418ad2dc005824d59a403611e
Author: Sebastian Geiger <sbastig gmx net>
Date: Wed Feb 10 23:59:43 2016 +0100
test (crashes panel)
.../panel-applet-container.c | 37 +++++++++++++------
1 files changed, 25 insertions(+), 12 deletions(-)
---
diff --git a/gnome-panel/libpanel-applet-private/panel-applet-container.c
b/gnome-panel/libpanel-applet-private/panel-applet-container.c
index af57ee3..4ad3b46 100644
--- a/gnome-panel/libpanel-applet-private/panel-applet-container.c
+++ b/gnome-panel/libpanel-applet-private/panel-applet-container.c
@@ -368,13 +368,21 @@ on_proxy_appeared (GObject *source_object,
g_object_unref (container);
}
+typedef struct {
+ GTask *task;
+ gchar *factory_id;
+ GVariant *parameters;
+ GCancellable *cancellable;
+} AppletFactoryData;
+
static void
get_applet_cb (GObject *source_object,
- GAsyncResult *res,
- gpointer user_data)
+ GAsyncResult *res,
+ gpointer user_data)
{
+ AppletFactoryData *data = (AppletFactoryData*) user_data;
GDBusConnection *connection = G_DBUS_CONNECTION (source_object);
- GTask *task = G_TASK (user_data);
+ GTask *task = data->task;
PanelAppletContainer *container;
GVariant *retvals;
const gchar *applet_path;
@@ -413,16 +421,13 @@ get_applet_cb (GObject *source_object,
g_object_unref (container);
}
-typedef struct {
- GTask *task;
- gchar *factory_id;
- GVariant *parameters;
- GCancellable *cancellable;
-} AppletFactoryData;
-
static void
applet_factory_data_free (AppletFactoryData *data)
{
+ if (!data)
+ return;
+
+ g_object_unref (data->task);
g_free (data->factory_id);
if (data->cancellable)
g_object_unref (data->cancellable);
@@ -442,6 +447,10 @@ on_factory_appeared (GDBusConnection *connection,
gchar *object_path;
container = PANEL_APPLET_CONTAINER (g_async_result_get_source_object (G_ASYNC_RESULT (data->task)));
+
+ g_bus_unwatch_name (container->priv->name_watcher_id);
+ container->priv->name_watcher_id = 0;
+
container->priv->bus_name = g_strdup (name_owner);
g_object_unref (container);
@@ -457,7 +466,7 @@ on_factory_appeared (GDBusConnection *connection,
-1,
data->cancellable,
get_applet_cb,
- data->task);
+ data);
g_free (object_path);
}
@@ -478,6 +487,8 @@ panel_applet_container_get_applet (PanelAppletContainer *container,
gchar *factory_id;
gchar *applet_id;
+ g_message ("panel_applet_container_get_applet");
+
task = g_task_new (container, cancellable, callback, user_data);
applet_id = g_strrstr (iid, "::");
@@ -501,7 +512,7 @@ panel_applet_container_get_applet (PanelAppletContainer *container,
parameters = g_variant_new ("(si*)", applet_id, screen_number, props);
data = g_new (AppletFactoryData, 1);
- data->task = task;
+ data->task = g_object_ref (task);
data->factory_id = factory_id;
data->parameters = g_variant_ref_sink (parameters);
data->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
@@ -535,6 +546,8 @@ panel_applet_container_add (PanelAppletContainer *container,
panel_applet_container_cancel_pending_operations (container);
+ g_message ("panel_applet_container_add");
+
panel_applet_container_get_applet (container, screen, iid, properties,
cancellable, callback, user_data);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]