summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libmate-panel-applet/mate-panel-applet-factory.c12
-rw-r--r--mate-panel/libmate-panel-applet-private/panel-applet-container.c11
2 files changed, 19 insertions, 4 deletions
diff --git a/libmate-panel-applet/mate-panel-applet-factory.c b/libmate-panel-applet/mate-panel-applet-factory.c
index f3978aeb..b7e237c1 100644
--- a/libmate-panel-applet/mate-panel-applet-factory.c
+++ b/libmate-panel-applet/mate-panel-applet-factory.c
@@ -176,6 +176,7 @@ mate_panel_applet_factory_get_applet (MatePanelAppletFactory *factory,
const gchar *applet_id;
gint screen_num;
GVariant *props;
+ GVariant *return_value;
GdkScreen *screen;
guint32 xid;
guint32 uid;
@@ -205,8 +206,13 @@ mate_panel_applet_factory_get_applet (MatePanelAppletFactory *factory,
g_hash_table_insert (factory->applets, GUINT_TO_POINTER (uid), applet);
g_object_set_data (applet, "uid", GUINT_TO_POINTER (uid));
- g_dbus_method_invocation_return_value (invocation,
- g_variant_new ("(ou)", object_path, xid));
+ return_value = g_variant_new ("(obuu)",
+ object_path,
+ factory->out_of_process,
+ xid,
+ uid);
+
+ g_dbus_method_invocation_return_value (invocation, return_value);
}
static void
@@ -234,7 +240,9 @@ static const gchar introspection_xml[] =
"<arg name='screen' type='i' direction='in'/>"
"<arg name='props' type='a{sv}' direction='in'/>"
"<arg name='applet' type='o' direction='out'/>"
+ "<arg name='out-of-process' type='b' direction='out'/>"
"<arg name='xid' type='u' direction='out'/>"
+ "<arg name='uid' type='u' direction='out'/>"
"</method>"
"</interface>"
"</node>";
diff --git a/mate-panel/libmate-panel-applet-private/panel-applet-container.c b/mate-panel/libmate-panel-applet-private/panel-applet-container.c
index e4232fcb..4b4ffd2b 100644
--- a/mate-panel/libmate-panel-applet-private/panel-applet-container.c
+++ b/mate-panel/libmate-panel-applet-private/panel-applet-container.c
@@ -32,7 +32,9 @@ struct _MatePanelAppletContainerPrivate {
guint name_watcher_id;
gchar *bus_name;
+ gboolean out_of_process;
guint32 xid;
+ guint32 uid;
GtkWidget *socket;
GHashTable *pending_ops;
@@ -379,7 +381,12 @@ get_applet_cb (GObject *source_object,
}
container = MATE_PANEL_APPLET_CONTAINER (g_async_result_get_source_object (G_ASYNC_RESULT (result)));
- g_variant_get (retvals, "(&ou)", &applet_path, &container->priv->xid);
+ g_variant_get (retvals,
+ "(&obuu)",
+ &applet_path,
+ &container->priv->out_of_process,
+ &container->priv->xid,
+ &container->priv->uid);
g_dbus_proxy_new (connection,
G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
@@ -432,7 +439,7 @@ on_factory_appeared (GDBusConnection *connection,
MATE_PANEL_APPLET_FACTORY_INTERFACE,
"GetApplet",
data->parameters,
- G_VARIANT_TYPE ("(ou)"),
+ G_VARIANT_TYPE ("(obuu)"),
G_DBUS_CALL_FLAGS_NONE,
-1,
data->cancellable,