← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/indicator-session/no-ck-errors-for-you into lp:indicator-session

 

Ted Gould has proposed merging lp:~ted/indicator-session/no-ck-errors-for-you into lp:indicator-session.

    Requested reviews:
    Indicator Applet Developers (indicator-applet-developers)


Switching the get sessions function to using the dbus-glib generated
interface to get rid of an error.  I still can't tell what's really
changed, but this is a better way to do it anyway.

-- 
https://code.launchpad.net/~ted/indicator-session/no-ck-errors-for-you/+merge/20419
Your team ayatana-commits is subscribed to branch lp:indicator-session.
=== modified file '.bzrignore'
--- .bzrignore	2009-10-08 14:45:29 +0000
+++ .bzrignore	2010-03-02 03:40:29 +0000
@@ -54,3 +54,4 @@
 indicator-session-[0-9].[0-9].tar.gz
 indicator-session-[0-9].[0-9].[0-9].tar.gz.asc
 indicator-session-[0-9].[0-9].tar.gz.asc
+src/consolekit-manager-client.h

=== modified file 'src/Makefile.am'
--- src/Makefile.am	2010-02-11 19:26:17 +0000
+++ src/Makefile.am	2010-03-02 03:40:29 +0000
@@ -17,6 +17,12 @@
 libsession_la_LIBADD = $(APPLET_LIBS)
 libsession_la_LDFLAGS = -module -avoid-version
 
+consolekit-manager-client.h: $(srcdir)/consolekit-manager.xml
+	dbus-binding-tool \
+		--prefix=_consolekit_manager_client \
+		--mode=glib-client \
+		--output=consolekit-manager-client.h \
+		$(srcdir)/consolekit-manager.xml
 
 users-service-client.h: $(srcdir)/users-service.xml
 	dbus-binding-tool \
@@ -56,11 +62,13 @@
 ###############
 
 BUILT_SOURCES = \
+	consolekit-manager-client.h \
 	users-service-client.h \
 	users-service-marshal.h \
 	users-service-marshal.c
 
 EXTRA_DIST = \
+	consolekit-manager.xml \
 	users-service.xml \
 	users-service.list
 

=== added file 'src/consolekit-manager.xml'
--- src/consolekit-manager.xml	1970-01-01 00:00:00 +0000
+++ src/consolekit-manager.xml	2010-03-02 03:40:29 +0000
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/org/freedesktop/ConsoleKit/Manager"
+  xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd";
+>
+
+  <interface name="org.freedesktop.ConsoleKit.Manager">
+    <method name="Restart">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <doc:doc>
+        <doc:description>
+          <doc:para>This method initiates a request to restart (ie. reboot) the computer system.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+
+    <method name="CanRestart">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="can_restart" type="b" direction="out"/>
+    </method>
+
+    <method name="Stop">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <doc:doc>
+        <doc:description>
+          <doc:para>This method initiates a request to stop (ie. shutdown) the computer system.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+
+    <method name="CanStop">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="can_stop" type="b" direction="out"/>
+    </method>
+
+    <method name="OpenSession">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="cookie" direction="out" type="s">
+        <doc:doc>
+          <doc:summary>The secret cookie that is used to identify the new session</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>This method requests that a new <doc:ref type="interface" to="Session">Session</doc:ref>
+          be created for the calling process.  The properties of this new Session are set automatically
+          from information collected about the calling process.
+          </doc:para>
+          <doc:para>This new session exists until the calling process disconnects from the system bus or
+          calls <doc:ref type="method" to="Manager.CloseSession">CloseSession()</doc:ref>.
+          </doc:para>
+          <doc:para>It is the responsibility of the calling process to set the environment variable
+          XDG_SESSION_COOKIE to the value of the returned cookie.  This cookie should only
+          be made available to child processes of the caller so that they may be identified
+          as members of this session.
+          </doc:para>
+          <doc:para>See this simple example:
+          <doc:example language="c" title="simple example"><doc:code>
+	DBusError       error;
+	DBusMessage    *message;
+	DBusMessage    *reply;
+
+	message = dbus_message_new_method_call ("org.freedesktop.ConsoleKit",
+						"/org/freedesktop/ConsoleKit/Manager",
+						"org.freedesktop.ConsoleKit.Manager",
+						"OpenSession");
+	if (message == NULL) {
+		goto out;
+	}
+
+        dbus_error_init (&amp;error);
+        reply = dbus_connection_send_with_reply_and_block (connector->connection,
+                                                           message,
+                                                           -1,
+                                                           &amp;error);
+        if (reply == NULL) {
+		goto out;
+        }
+
+        dbus_error_init (&amp;error);
+        if (! dbus_message_get_args (reply,
+                                     &amp;error,
+                                     DBUS_TYPE_STRING, &amp;cookie,
+                                     DBUS_TYPE_INVALID)) {
+		goto out;
+        }
+
+          </doc:code></doc:example></doc:para>
+        </doc:description>
+        <doc:seealso><doc:ref type="method" to="Manager.OpenSessionWithParameters">OpenSessionWithParameters()</doc:ref></doc:seealso>
+      </doc:doc>
+    </method>
+    <method name="OpenSessionWithParameters">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="parameters" direction="in" type="a(sv)">
+        <doc:doc>
+          <doc:summary>An array of sets of property names and values</doc:summary>
+        </doc:doc>
+      </arg>
+      <arg name="cookie" direction="out" type="s">
+        <doc:doc>
+          <doc:summary>The secret cookie that is used to identify the new session</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>This method requests that a new <doc:ref type="interface" to="Session">Session</doc:ref>
+          be created for the calling process.  The properties of this new Session are from the
+          parameters provided.
+          </doc:para>
+          <doc:para>This new session exists until the calling process disconnects from the system bus or
+          calls <doc:ref type="method" to="Manager.CloseSession">CloseSession()</doc:ref>.
+          </doc:para>
+          <doc:para>It is the responsibility of the calling process to set the environment variable
+          XDG_SESSION_COOKIE to the value of the returned cookie.  This cookie should only
+          be made available to child processes of the caller so that they may be identified
+          as members of this session.
+          </doc:para>
+          <doc:para>See the <doc:ref type="interface" to="Session">Session</doc:ref> properties for a list of valid parameters.</doc:para>
+        </doc:description>
+        <doc:seealso><doc:ref type="interface" to="Session">org.freedesktop.ConsoleKit.Session</doc:ref></doc:seealso>
+        <doc:permission>This method is restricted to privileged users by D-Bus policy.</doc:permission>
+      </doc:doc>
+    </method>
+    <method name="CloseSession">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="cookie" direction="in" type="s">
+        <doc:doc>
+          <doc:summary>The secret cookie that is used to identify the session</doc:summary>
+        </doc:doc>
+      </arg>
+      <arg name="result" direction="out" type="b">
+        <doc:doc>
+          <doc:summary>Whether the session was successfully closed</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>This method is used to close the session identified by the supplied cookie.
+          </doc:para>
+          <doc:para>The session can only be closed by the same process that opened the session.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+
+    <method name="GetSeats">
+      <arg name="seats" direction="out" type="ao">
+        <doc:doc>
+          <doc:summary>an array of Seat IDs</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>This gets a list of all the <doc:ref type="interface" to="Seat">Seats</doc:ref>
+          that are currently present on the system.</doc:para>
+          <doc:para>Each Seat ID is an D-Bus object path for the object that implements the
+          <doc:ref type="interface" to="Seat">Seat</doc:ref> interface.</doc:para>
+        </doc:description>
+        <doc:seealso><doc:ref type="interface" to="Seat">org.freedesktop.ConsoleKit.Seat</doc:ref></doc:seealso>
+      </doc:doc>
+    </method>
+
+    <method name="GetSessions">
+      <arg name="sessions" direction="out" type="ao">
+        <doc:doc>
+          <doc:summary>an array of Session IDs</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>This gets a list of all the <doc:ref type="interface" to="Session">Sessions</doc:ref>
+          that are currently present on the system.</doc:para>
+          <doc:para>Each Session ID is an D-Bus object path for the object that implements the
+          <doc:ref type="interface" to="Session">Session</doc:ref> interface.</doc:para>
+        </doc:description>
+        <doc:seealso><doc:ref type="interface" to="Session">org.freedesktop.ConsoleKit.Session</doc:ref></doc:seealso>
+      </doc:doc>
+    </method>
+
+    <method name="GetSessionForCookie">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="cookie" direction="in" type="s">
+        <doc:doc>
+          <doc:summary>The secret cookie that is used to identify the session</doc:summary>
+        </doc:doc>
+      </arg>
+      <arg name="ssid" direction="out" type="o">
+        <doc:doc>
+          <doc:summary>The object identifier for the current session</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Returns the session ID that is associated with the specified cookie.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+    <method name="GetSessionForUnixProcess">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="pid" direction="in" type="u">
+        <doc:doc>
+          <doc:summary>The POSIX process ID</doc:summary>
+        </doc:doc>
+      </arg>
+      <arg name="ssid" direction="out" type="o">
+        <doc:doc>
+          <doc:summary>The object identifier for the current session</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Attempts to determine the session ID for the specified
+          POSIX process ID (pid).
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+    <method name="GetCurrentSession">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="ssid" direction="out" type="o">
+        <doc:doc>
+          <doc:summary>The object identifier for the current session</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Attempts to determine the session ID that the caller belongs to.
+          </doc:para>
+          <doc:para>See this example of using dbus-send:
+          <doc:example language="shell" title="shell example"><doc:code>
+  dbus-send --system --dest=org.freedesktop.ConsoleKit \
+  --type=method_call --print-reply --reply-timeout=2000 \
+  /org/freedesktop/ConsoleKit/Manager \
+  org.freedesktop.ConsoleKit.Manager.GetCurrentSession
+          </doc:code></doc:example></doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+    <method name="GetSessionsForUnixUser">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="uid" direction="in" type="u">
+         <doc:doc>
+          <doc:summary>POSIX User identification</doc:summary>
+        </doc:doc>
+     </arg>
+      <arg name="sessions" direction="out" type="ao">
+        <doc:doc>
+          <doc:summary>an array of Session IDs</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>This gets a list of all the <doc:ref type="interface" to="Session">Sessions</doc:ref>
+          that are currently open for the specified user.</doc:para>
+          <doc:para>Each Session ID is an D-Bus object path for the object that implements the
+          <doc:ref type="interface" to="Session">Session</doc:ref> interface.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+    <method name="GetSessionsForUser">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="uid" direction="in" type="u">
+         <doc:doc>
+          <doc:summary>User identification</doc:summary>
+        </doc:doc>
+     </arg>
+      <arg name="sessions" direction="out" type="ao">
+        <doc:doc>
+          <doc:summary>an array of Session IDs</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>This gets a list of all the <doc:ref type="interface" to="Session">Sessions</doc:ref>
+          that are currently open for the specified user.</doc:para>
+          <doc:para>Each Session ID is an D-Bus object path for the object that implements the
+          <doc:ref type="interface" to="Session">Session</doc:ref> interface.</doc:para>
+        </doc:description>
+        <doc:deprecated version="0.1.3" instead="GetSessionsForUnixUser"/>
+      </doc:doc>
+    </method>
+
+    <method name="GetSystemIdleHint">
+      <arg name="idle_hint" type="b" direction="out">
+        <doc:doc>
+          <doc:summary>The value of the system-idle-hint</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Returns TRUE if the <doc:ref type="property" to="Session:idle-hint">idle-hint</doc:ref>
+          property of every open session is TRUE or if there are no open sessions.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+    <method name="GetSystemIdleSinceHint">
+      <arg name="iso8601_datetime" type="s" direction="out">
+        <doc:doc>
+          <doc:summary>An ISO 8601 format date-type string</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Returns an ISO 8601 date-time string that corresponds to
+          the time of the last change of the system-idle-hint.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+
+    <signal name="SeatAdded">
+      <arg name="sid" type="o">
+        <doc:doc>
+          <doc:summary>The Seat ID for the added seat</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Emitted when a Seat has been added to the system.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </signal>
+    <signal name="SeatRemoved">
+      <arg name="sid" type="o">
+        <doc:doc>
+          <doc:summary>The Seat ID for the removed seat</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Emitted when a Seat has been removed from the system.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </signal>
+    <signal name="SystemIdleHintChanged">
+      <arg name="hint" type="b">
+        <doc:doc>
+          <doc:summary>The value of the system-idle-hint</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Emitted when the value of the system-idle-hint has changed.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </signal>
+  </interface>
+</node>

=== modified file 'src/users-service-dbus.c'
--- src/users-service-dbus.c	2010-02-19 12:28:45 +0000
+++ src/users-service-dbus.c	2010-03-02 03:40:29 +0000
@@ -34,6 +34,7 @@
 #include "users-service-dbus.h"
 #include "users-service-client.h"
 #include "users-service-marshal.h"
+#include "consolekit-manager-client.h"
 
 static void     users_service_dbus_class_init         (UsersServiceDbusClass *klass);
 static void     users_service_dbus_init               (UsersServiceDbus  *self);
@@ -509,14 +510,7 @@
   int              i;
 
   error = NULL;
-  if (!dbus_g_proxy_call (priv->ck_proxy,
-                          "GetSessionsForUnixUser",
-                          &error,
-                          G_TYPE_UINT, user->uid,
-                          G_TYPE_INVALID,
-                          dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_G_OBJECT_PATH),
-                          &sessions,
-                          G_TYPE_INVALID))
+  if (!org_freedesktop_ConsoleKit_Manager_get_sessions_for_unix_user(priv->ck_proxy, user->uid, &sessions, &error))
     {
       g_debug ("Failed to call GetSessionsForUnixUser: %s", error->message);
       g_error_free (error);


Follow ups