← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/indicator-session/actually-get-sessions into lp:indicator-session

 

Ted Gould has proposed merging lp:~ted/indicator-session/actually-get-sessions into lp:indicator-session.

Requested reviews:
  Conor Curran (cjcurran)

For more details, see:
https://code.launchpad.net/~ted/indicator-session/actually-get-sessions/+merge/71950

Makes it so that when we create the seat proxy we check to see if there are any existing sessions.  A good idea really!
-- 
https://code.launchpad.net/~ted/indicator-session/actually-get-sessions/+merge/71950
Your team ayatana-commits is subscribed to branch lp:indicator-session.
=== modified file 'src/Makefile.am'
--- src/Makefile.am	2011-07-26 17:23:59 +0000
+++ src/Makefile.am	2011-08-17 21:14:24 +0000
@@ -25,19 +25,26 @@
 libsession_la_LIBADD = $(APPLET_LIBS)
 libsession_la_LDFLAGS = -module -avoid-version
 
-consolekit-manager-client.h: $(srcdir)/consolekit-manager.xml
+consolekit-manager-client.h: $(srcdir)/org.freedesktop.ConsoleKit.Manager.xml
 	dbus-binding-tool \
 		--prefix=_consolekit_manager_client \
 		--mode=glib-client \
 		--output=consolekit-manager-client.h \
-		$(srcdir)/consolekit-manager.xml
-
-consolekit-session-client.h: $(srcdir)/consolekit-session.xml
+		$(srcdir)/org.freedesktop.ConsoleKit.Manager.xml
+
+consolekit-seat-client.h: $(srcdir)/org.freedesktop.ConsoleKit.Seat.xml
+	dbus-binding-tool \
+		--prefix=_consolekit_seat_client \
+		--mode=glib-client \
+		--output=consolekit-seat-client.h \
+		$(srcdir)/org.freedesktop.ConsoleKit.Seat.xml
+
+consolekit-session-client.h: $(srcdir)/org.freedesktop.ConsoleKit.Session.xml
 	dbus-binding-tool \
 		--prefix=_consolekit_session_client \
 		--mode=glib-client \
 		--output=consolekit-session-client.h \
-		$(srcdir)/consolekit-session.xml
+		$(srcdir)/org.freedesktop.ConsoleKit.Session.xml
 
 display-manager-client.h: $(srcdir)/display-manager.xml
 	dbus-binding-tool \
@@ -143,6 +150,7 @@
 
 BUILT_SOURCES = \
 	consolekit-manager-client.h \
+	consolekit-seat-client.h \
 	consolekit-session-client.h \
 	display-manager-client.h \
 	gen-session-dbus.xml.c \
@@ -152,8 +160,9 @@
 	accounts-service-user-client.h
 
 EXTRA_DIST = \
-	consolekit-manager.xml \
-	consolekit-session.xml \
+	org.freedesktop.ConsoleKit.Manager.xml \
+	org.freedesktop.ConsoleKit.Seat.xml \
+	org.freedesktop.ConsoleKit.Session.xml \
 	display-manager.xml \
 	session-dbus.xml \
 	upower.xml \

=== renamed file 'src/consolekit-manager.xml' => 'src/org.freedesktop.ConsoleKit.Manager.xml'
=== added file 'src/org.freedesktop.ConsoleKit.Seat.xml'
--- src/org.freedesktop.ConsoleKit.Seat.xml	1970-01-01 00:00:00 +0000
+++ src/org.freedesktop.ConsoleKit.Seat.xml	2011-08-17 21:14:24 +0000
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd";>
+
+  <interface name="org.freedesktop.ConsoleKit.Seat">
+    <doc:doc>
+      <doc:description>
+        <doc:para>A seat is a collection of sessions and a set of hardware (usually at
+least a keyboard and mouse).  Only one session may be active on a
+seat at a time.</doc:para>
+      </doc:description>
+    </doc:doc>
+
+    <method name="GetId">
+      <arg name="sid" direction="out" type="o">
+        <doc:doc>
+          <doc:summary>Seat ID</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Returns the ID for Seat.</doc:para>
+        </doc:description>
+      </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 attached to this seat.</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="GetDevices">
+      <arg name="devices" direction="out" type="a(ss)">
+        <doc:doc>
+          <doc:summary>an array of devices</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>This gets a list of all the devices
+          that are currently associated with this seat.</doc:para>
+          <doc:para>Each device is an D-Bus structure that represents
+          the device type and the device id.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+
+    <method name="GetActiveSession">
+      <arg name="ssid" direction="out" type="o">
+        <doc:doc>
+          <doc:summary>Session ID</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Gets the Session ID that is currently active on this Seat.</doc:para>
+          <doc:para>Returns NULL if there is no active session.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+
+    <method name="CanActivateSessions">
+      <arg name="can_activate" direction="out" type="b">
+        <doc:doc>
+          <doc:summary>TRUE if seat supports session activation</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description><doc:para>Used to determine whether the seat supports session activation.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </method>
+
+    <method name="ActivateSession">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+      <arg name="ssid" direction="in" type="o">
+        <doc:doc>
+          <doc:summary>Session ID</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Attempt to activate the specified session.  In most
+          cases, if successful, this will cause the session to
+          become visible and take control of the hardware that is
+          associated with this seat.</doc:para>
+        </doc:description>
+        <doc:seealso><doc:ref type="method" to="Session.Activate">Activate()</doc:ref></doc:seealso>
+      </doc:doc>
+    </method>
+
+    <signal name="ActiveSessionChanged">
+      <arg name="ssid" type="o">
+        <doc:doc>
+          <doc:summary>Session ID</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Emitted when the active session has changed.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </signal>
+    <signal name="SessionAdded">
+      <arg name="ssid" type="o">
+        <doc:doc>
+          <doc:summary>Session ID</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Emitted when a session has been added to the seat.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </signal>
+    <signal name="SessionRemoved">
+      <arg name="ssid" type="o">
+        <doc:doc>
+          <doc:summary>Session ID</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Emitted when a session has been removed from the seat.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </signal>
+    <signal name="DeviceAdded">
+      <arg name="device" type="(ss)">
+        <doc:doc>
+          <doc:summary>Device structure</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Emitted when a device has been associated with the seat.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </signal>
+    <signal name="DeviceRemoved">
+      <arg name="device" type="(ss)">
+        <doc:doc>
+          <doc:summary>Device structure</doc:summary>
+        </doc:doc>
+      </arg>
+      <doc:doc>
+        <doc:description>
+          <doc:para>Emitted when a device has been dissociated from the seat.</doc:para>
+        </doc:description>
+      </doc:doc>
+    </signal>
+  </interface>
+</node>

=== renamed file 'src/consolekit-session.xml' => 'src/org.freedesktop.ConsoleKit.Session.xml'
=== modified file 'src/users-service-dbus.c'
--- src/users-service-dbus.c	2011-07-28 16:41:59 +0000
+++ src/users-service-dbus.c	2011-08-17 21:14:24 +0000
@@ -36,6 +36,7 @@
 #include "accounts-service-client.h"
 #include "consolekit-manager-client.h"
 #include "consolekit-session-client.h"
+#include "consolekit-seat-client.h"
 
 #define CK_ADDR             "org.freedesktop.ConsoleKit"
 #define CK_SESSION_IFACE    "org.freedesktop.ConsoleKit.Session"
@@ -315,6 +316,28 @@
     }
 }
 
+/* Get the initial sessions when starting up */
+static void 
+get_cksessions_cb (DBusGProxy *proxy, GPtrArray * sessions, GError * error, gpointer userdata)
+{
+	if (error != NULL) {
+		g_warning("Unable to get initial sessions: %s", error->message);
+		return;
+	}
+
+	/* If there's no error we should at least get an
+	   array of zero entries */
+	g_return_if_fail(sessions != NULL);
+	g_debug("Got %d initial sessions", sessions->len);
+
+	int i;
+	for (i = 0; i < sessions->len; i++) {
+		seat_proxy_session_added(proxy, g_ptr_array_index(sessions, i), USERS_SERVICE_DBUS(userdata));
+	}
+
+	return;
+}
+
 static void
 create_seat_proxy (UsersServiceDbus *self)
 {
@@ -363,6 +386,10 @@
                                G_CALLBACK (seat_proxy_session_removed),
                                self,
                                NULL);
+
+  org_freedesktop_ConsoleKit_Seat_get_sessions_async (priv->seat_proxy, get_cksessions_cb, self);
+
+  return;
 }
 
 static void


Follow ups