[gnome-settings-daemon] main: Generate org.gnome.Shell proxy



commit b7fa014af970d0dfd836c2798cab52da5c9d61ea
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Nov 20 15:35:14 2013 +0100

    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(+), 0 deletions(-)
---
diff --git a/gnome-settings-daemon/Makefile.am b/gnome-settings-daemon/Makefile.am
index f9e209e..e5f1218 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 dbd5df3..1eb5dfc 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 f569f14..22711b6 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 0000000..54bdf42
--- /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>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]