gnome-session r4804 - in branches/dbus_based: . gnome-session
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-session r4804 - in branches/dbus_based: . gnome-session
- Date: Tue, 15 Jul 2008 21:01:01 +0000 (UTC)
Author: mccann
Date: Tue Jul 15 21:01:01 2008
New Revision: 4804
URL: http://svn.gnome.org/viewvc/gnome-session?rev=4804&view=rev
Log:
2008-07-15 William Jon McCann <jmccann redhat com>
* gnome-session/gsm-client.c (gsm_client_query_end_session),
(gsm_client_end_session):
* gnome-session/gsm-client.h:
* gnome-session/gsm-client.xml:
* gnome-session/gsm-dbus-client.c (dbus_client_query_end_session),
(dbus_client_end_session), (gsm_dbus_client_class_init):
* gnome-session/gsm-manager.c (_shutdown_client):
* gnome-session/gsm-xsmp-client.c (xsmp_stop),
(xsmp_query_end_session), (xsmp_end_session),
(gsm_xsmp_client_class_init):
Add QueryEndSession and EndSession methods and signals.
Modified:
branches/dbus_based/ChangeLog
branches/dbus_based/gnome-session/gsm-client.c
branches/dbus_based/gnome-session/gsm-client.h
branches/dbus_based/gnome-session/gsm-client.xml
branches/dbus_based/gnome-session/gsm-dbus-client.c
branches/dbus_based/gnome-session/gsm-manager.c
branches/dbus_based/gnome-session/gsm-xsmp-client.c
Modified: branches/dbus_based/gnome-session/gsm-client.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-client.c (original)
+++ branches/dbus_based/gnome-session/gsm-client.c Tue Jul 15 21:01:01 2008
@@ -324,11 +324,21 @@
}
void
-gsm_client_notify_session_over (GsmClient *client)
+gsm_client_query_end_session (GsmClient *client,
+ guint flags)
{
g_return_if_fail (GSM_IS_CLIENT (client));
- GSM_CLIENT_GET_CLASS (client)->impl_notify_session_over (client);
+ GSM_CLIENT_GET_CLASS (client)->impl_query_end_session (client, flags);
+}
+
+void
+gsm_client_end_session (GsmClient *client,
+ guint flags)
+{
+ g_return_if_fail (GSM_IS_CLIENT (client));
+
+ GSM_CLIENT_GET_CLASS (client)->impl_end_session (client, flags);
}
gboolean
Modified: branches/dbus_based/gnome-session/gsm-client.h
==============================================================================
--- branches/dbus_based/gnome-session/gsm-client.h (original)
+++ branches/dbus_based/gnome-session/gsm-client.h Tue Jul 15 21:01:01 2008
@@ -59,9 +59,16 @@
/* signals */
void (*disconnected) (GsmClient *client);
void (*stop) (GsmClient *client);
+ void (*query_end_session) (GsmClient *client,
+ guint flags);
+ void (*end_session) (GsmClient *client,
+ guint flags);
/* virtual methods */
- void (*impl_notify_session_over) (GsmClient *client);
+ void (*impl_query_end_session) (GsmClient *client,
+ guint flags);
+ void (*impl_end_session) (GsmClient *client,
+ guint flags);
gboolean (*impl_stop) (GsmClient *client,
GError **error);
};
@@ -77,7 +84,12 @@
void gsm_client_set_status (GsmClient *client,
int status);
-void gsm_client_notify_session_over (GsmClient *client);
+void gsm_client_end_session (GsmClient *client,
+ guint flags);
+void gsm_client_query_end_session (GsmClient *client,
+ guint flags);
+void gsm_client_end_session (GsmClient *client,
+ guint flags);
gboolean gsm_client_stop (GsmClient *client,
GError **error);
Modified: branches/dbus_based/gnome-session/gsm-client.xml
==============================================================================
--- branches/dbus_based/gnome-session/gsm-client.xml (original)
+++ branches/dbus_based/gnome-session/gsm-client.xml Tue Jul 15 21:01:01 2008
@@ -6,5 +6,13 @@
<signal name="Stop">
</signal>
+ <signal name="QueryEndSession">
+ <arg name="flags" type="u"/>
+ </signal>
+
+ <signal name="EndSession">
+ <arg name="flags" type="u"/>
+ </signal>
+
</interface>
</node>
Modified: branches/dbus_based/gnome-session/gsm-dbus-client.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-dbus-client.c (original)
+++ branches/dbus_based/gnome-session/gsm-dbus-client.c Tue Jul 15 21:01:01 2008
@@ -190,6 +190,100 @@
}
static void
+dbus_client_query_end_session (GsmClient *client,
+ guint flags)
+{
+ GsmDBusClient *dbus_client = (GsmDBusClient *) client;
+ DBusMessage *message;
+ gboolean ret;
+ DBusConnection *connection;
+ DBusError local_error;
+ DBusMessageIter iter;
+
+ ret = FALSE;
+
+ /* unicast the signal to only the registered bus name */
+ message = dbus_message_new_signal (gsm_client_get_id (client),
+ CLIENT_INTERFACE,
+ "QueryEndSession");
+ if (message == NULL) {
+ goto out;
+ }
+ if (!dbus_message_set_destination (message, dbus_client->priv->bus_name)) {
+ goto out;
+ }
+
+ dbus_message_iter_init_append (message, &iter);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &flags);
+
+ dbus_error_init (&local_error);
+ connection = dbus_bus_get (DBUS_BUS_SESSION, &local_error);
+ if (dbus_error_is_set (&local_error)) {
+ g_warning ("%s", local_error.message);
+ dbus_error_free (&local_error);
+ goto out;
+ }
+
+ if (!dbus_connection_send (connection, message, NULL)) {
+ goto out;
+ }
+
+ ret = TRUE;
+
+ out:
+ if (message != NULL) {
+ dbus_message_unref (message);
+ }
+}
+
+static void
+dbus_client_end_session (GsmClient *client,
+ guint flags)
+{
+ GsmDBusClient *dbus_client = (GsmDBusClient *) client;
+ DBusMessage *message;
+ gboolean ret;
+ DBusConnection *connection;
+ DBusError local_error;
+ DBusMessageIter iter;
+
+ ret = FALSE;
+
+ /* unicast the signal to only the registered bus name */
+ message = dbus_message_new_signal (gsm_client_get_id (client),
+ CLIENT_INTERFACE,
+ "EndSession");
+ if (message == NULL) {
+ goto out;
+ }
+ if (!dbus_message_set_destination (message, dbus_client->priv->bus_name)) {
+ goto out;
+ }
+
+ dbus_message_iter_init_append (message, &iter);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_UINT32, &flags);
+
+ dbus_error_init (&local_error);
+ connection = dbus_bus_get (DBUS_BUS_SESSION, &local_error);
+ if (dbus_error_is_set (&local_error)) {
+ g_warning ("%s", local_error.message);
+ dbus_error_free (&local_error);
+ goto out;
+ }
+
+ if (!dbus_connection_send (connection, message, NULL)) {
+ goto out;
+ }
+
+ ret = TRUE;
+
+ out:
+ if (message != NULL) {
+ dbus_message_unref (message);
+ }
+}
+
+static void
gsm_dbus_client_class_init (GsmDBusClientClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -200,7 +294,9 @@
object_class->get_property = gsm_dbus_client_get_property;
object_class->set_property = gsm_dbus_client_set_property;
- client_class->impl_stop = dbus_client_stop;
+ client_class->impl_stop = dbus_client_stop;
+ client_class->impl_query_end_session = dbus_client_query_end_session;
+ client_class->impl_end_session = dbus_client_end_session;
g_object_class_install_property (object_class,
PROP_BUS_NAME,
Modified: branches/dbus_based/gnome-session/gsm-manager.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-manager.c (original)
+++ branches/dbus_based/gnome-session/gsm-manager.c Tue Jul 15 21:01:01 2008
@@ -1406,7 +1406,11 @@
GsmClient *client,
GsmManager *manager)
{
- gsm_client_notify_session_over (client);
+ guint flags;
+
+ flags = 0;
+ gsm_client_end_session (client, flags);
+
return FALSE;
}
Modified: branches/dbus_based/gnome-session/gsm-xsmp-client.c
==============================================================================
--- branches/dbus_based/gnome-session/gsm-xsmp-client.c (original)
+++ branches/dbus_based/gnome-session/gsm-xsmp-client.c Tue Jul 15 21:01:01 2008
@@ -525,7 +525,7 @@
{
GsmXSMPClient *xsmp = (GsmXSMPClient *) client;
- g_debug ("GsmXSMPClient: xsmp_die ('%s')", xsmp->priv->description);
+ g_debug ("GsmXSMPClient: xsmp_stop ('%s')", xsmp->priv->description);
SmsDie (xsmp->priv->conn);
@@ -533,6 +533,20 @@
}
static void
+xsmp_query_end_session (GsmClient *client,
+ guint flags)
+{
+ xsmp_save_yourself (client, FALSE);
+}
+
+static void
+xsmp_end_session (GsmClient *client,
+ guint flags)
+{
+ xsmp_save_yourself (client, FALSE);
+}
+
+static void
gsm_client_set_ice_connection (GsmXSMPClient *client,
gpointer conn)
{
@@ -632,7 +646,9 @@
object_class->get_property = gsm_xsmp_client_get_property;
object_class->set_property = gsm_xsmp_client_set_property;
- client_class->impl_stop = xsmp_stop;
+ client_class->impl_stop = xsmp_stop;
+ client_class->impl_query_end_session = xsmp_query_end_session;
+ client_class->impl_end_session = xsmp_end_session;
signals[REGISTER_REQUEST] =
g_signal_new ("register-request",
@@ -1000,18 +1016,6 @@
callbacks_ret->get_properties.manager_data = client;
}
-gboolean
-gsm_xsmp_client_register_request (GsmXSMPClient *client,
- char **client_idp)
-{
- gboolean res;
-
- res = FALSE;
- g_signal_emit (client, signals[REGISTER_REQUEST], 0, client_idp, &res);
-
- return res;
-}
-
void
gsm_xsmp_client_save_state (GsmXSMPClient *client)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]