diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2013-11-20 15:35:14 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2013-11-20 20:30:59 +0100 |
commit | b7fa014af970d0dfd836c2798cab52da5c9d61ea (patch) | |
tree | 7fd245a2916ccdc43d7c31336e48ec2d3c2ac400 /gnome-settings-daemon | |
parent | 535ab175832d5ec2171a748f017f4ab3f37970ad (diff) | |
download | gnome-settings-daemon-b7fa014af970d0dfd836c2798cab52da5c9d61ea.tar.gz |
main: Generate org.gnome.Shell proxy
This will be used across multiple plugins, so put it together with
the screensaver and session proxies.
Diffstat (limited to 'gnome-settings-daemon')
-rw-r--r-- | gnome-settings-daemon/Makefile.am | 15 | ||||
-rw-r--r-- | gnome-settings-daemon/gnome-settings-bus.c | 30 | ||||
-rw-r--r-- | gnome-settings-daemon/gnome-settings-bus.h | 2 | ||||
-rw-r--r-- | gnome-settings-daemon/org.gnome.Shell.xml | 36 |
4 files changed, 83 insertions, 0 deletions
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 <glib-object.h> #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 @@ +<!DOCTYPE node PUBLIC + "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" + "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> + +<!-- + Copyright (C) 2013 Red Hat, Inc. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307, USA. +--> + +<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd"> + <!-- + org.gnome.Shell: + + An interface used to request shell features. + --> + <interface name="org.gnome.Shell"> + <method name="FocusSearch"/> + <method name="ShowOSD"> + <arg type="a{sv}" direction="in" name="params"/> + </method> + </interface> +</node> |