From b7fa014af970d0dfd836c2798cab52da5c9d61ea Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 20 Nov 2013 15:35:14 +0100 Subject: main: Generate org.gnome.Shell proxy This will be used across multiple plugins, so put it together with the screensaver and session proxies. --- gnome-settings-daemon/Makefile.am | 15 +++++++++++++ gnome-settings-daemon/gnome-settings-bus.c | 30 +++++++++++++++++++++++++ gnome-settings-daemon/gnome-settings-bus.h | 2 ++ gnome-settings-daemon/org.gnome.Shell.xml | 36 ++++++++++++++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 gnome-settings-daemon/org.gnome.Shell.xml (limited to 'gnome-settings-daemon') diff --git a/gnome-settings-daemon/Makefile.am b/gnome-settings-daemon/Makefile.am index f9e209e0..e5f12183 100644 --- a/gnome-settings-daemon/Makefile.am +++ b/gnome-settings-daemon/Makefile.am @@ -44,9 +44,23 @@ $(screen_saver_dbus_built_sources) : Makefile.am org.gnome.ScreenSaver.xml "org.gtk.GDBus.C.Name" ScreenSaver \ $(srcdir)/org.gnome.ScreenSaver.xml +shell_dbus_built_sources = gsd-shell-glue.c gsd-shell-glue.h + +BUILT_SOURCES += $(shell_dbus_built_sources) + +$(shell_dbus_built_sources) : Makefile.am org.gnome.Shell.xml + gdbus-codegen \ + --interface-prefix org.gnome.Shell. \ + --generate-c-code gsd-shell-glue \ + --c-namespace Gsd \ + --annotate "org.gnome.Shell" \ + "org.gtk.GDBus.C.Name" Shell \ + $(srcdir)/org.gnome.Shell.xml + libgsd_la_SOURCES = \ $(session_manager_dbus_built_sources) \ $(screen_saver_dbus_built_sources) \ + $(shell_dbus_built_sources) \ gnome-settings-profile.c \ gnome-settings-profile.h \ gnome-settings-bus.c \ @@ -84,6 +98,7 @@ EXTRA_DIST = \ gnome-settings-daemon-localeexec.in \ org.gnome.SessionManager.xml \ org.gnome.ScreenSaver.xml \ + org.gnome.Shell.xml \ $(NULL) gnome-settings-daemon-localeexec: gnome-settings-daemon-localeexec.in diff --git a/gnome-settings-daemon/gnome-settings-bus.c b/gnome-settings-daemon/gnome-settings-bus.c index dbd5df3d..1eb5dfc5 100644 --- a/gnome-settings-daemon/gnome-settings-bus.c +++ b/gnome-settings-daemon/gnome-settings-bus.c @@ -35,6 +35,9 @@ #define GNOME_SCREENSAVER_DBUS_NAME "org.gnome.ScreenSaver" #define GNOME_SCREENSAVER_DBUS_OBJECT "/org/gnome/ScreenSaver" +#define GNOME_SHELL_DBUS_NAME "org.gnome.Shell" +#define GNOME_SHELL_DBUS_OBJECT "/org/gnome/Shell" + GsdSessionManager * gnome_settings_bus_get_session_proxy (void) { @@ -87,3 +90,30 @@ gnome_settings_bus_get_screen_saver_proxy (void) return screen_saver_proxy; } + +GsdShell * +gnome_settings_bus_get_shell_proxy (void) +{ + static GsdShell *shell_proxy = NULL; + GError *error = NULL; + + if (shell_proxy != NULL) { + g_object_ref (shell_proxy); + } else { + shell_proxy = gsd_shell_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES | + G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, + GNOME_SHELL_DBUS_NAME, + GNOME_SHELL_DBUS_OBJECT, + NULL, + &error); + if (error) { + g_warning ("Failed to connect to the shell: %s", error->message); + g_error_free (error); + } else { + g_object_add_weak_pointer (G_OBJECT (shell_proxy), (gpointer*)&shell_proxy); + } + } + + return shell_proxy; +} diff --git a/gnome-settings-daemon/gnome-settings-bus.h b/gnome-settings-daemon/gnome-settings-bus.h index f569f144..22711b63 100644 --- a/gnome-settings-daemon/gnome-settings-bus.h +++ b/gnome-settings-daemon/gnome-settings-bus.h @@ -25,11 +25,13 @@ #include #include "gsd-session-manager-glue.h" #include "gsd-screen-saver-glue.h" +#include "gsd-shell-glue.h" G_BEGIN_DECLS GsdSessionManager *gnome_settings_bus_get_session_proxy (void); GsdScreenSaver *gnome_settings_bus_get_screen_saver_proxy (void); +GsdShell *gnome_settings_bus_get_shell_proxy (void); G_END_DECLS diff --git a/gnome-settings-daemon/org.gnome.Shell.xml b/gnome-settings-daemon/org.gnome.Shell.xml new file mode 100644 index 00000000..54bdf421 --- /dev/null +++ b/gnome-settings-daemon/org.gnome.Shell.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + -- cgit v1.2.1