[gnome-session] Make the current session name a property on the session manager
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-session] Make the current session name a property on the session manager
- Date: Wed, 16 Feb 2011 16:15:30 +0000 (UTC)
commit 3de35f663d1a3cb188fe662ca8aed0fa5af1ebeb
Author: Alexander Larsson <alexl redhat com>
Date: Wed Feb 16 12:25:15 2011 +0100
Make the current session name a property on the session manager
This way this is introspectable via dbus, and its also useful internally
as a change notification if it changes at runtime.
https://bugzilla.gnome.org/show_bug.cgi?id=642368
gnome-session/gsm-manager.c | 28 +++++++++++++++++++++++++---
gnome-session/gsm-manager.h | 4 ++--
gnome-session/gsm-session-fill.c | 14 ++++++++++----
3 files changed, 37 insertions(+), 9 deletions(-)
---
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index e5559cf..9ca2e73 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -103,6 +103,7 @@ struct GsmManagerPrivate
GsmStore *apps;
GsmPresence *presence;
+ char *session_name;
gboolean is_fallback_session : 1;
/* Current status */
@@ -144,6 +145,7 @@ struct GsmManagerPrivate
enum {
PROP_0,
PROP_CLIENT_STORE,
+ PROP_SESSION_NAME,
PROP_FALLBACK,
PROP_FAILSAFE
};
@@ -1443,13 +1445,15 @@ _gsm_manager_get_default_session (GsmManager *manager)
}
void
-_gsm_manager_set_is_fallback (GsmManager *manager,
- gboolean is_fallback)
+_gsm_manager_set_active_session (GsmManager *manager,
+ const char *session_name,
+ gboolean is_fallback)
{
+ g_free (manager->priv->session_name);
+ manager->priv->session_name = g_strdup (session_name);
manager->priv->is_fallback_session = is_fallback;
}
-
static gboolean
_app_has_app_id (const char *id,
GsmApp *app,
@@ -2198,6 +2202,9 @@ gsm_manager_get_property (GObject *object,
case PROP_FAILSAFE:
g_value_set_boolean (value, self->priv->failsafe);
break;
+ case PROP_SESSION_NAME:
+ g_value_set_string (value, self->priv->session_name);
+ break;
case PROP_FALLBACK:
g_value_set_boolean (value, self->priv->is_fallback_session);
break;
@@ -2410,6 +2417,21 @@ gsm_manager_class_init (GsmManagerClass *klass)
FALSE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
/**
+ * GsmManager::session-name
+ *
+ * Then name of the currently active session, typically "gnome" or "gnome-fallback".
+ * This may be the name of the configured default session, or the name of a fallback
+ * session in case we fell back.
+ */
+ g_object_class_install_property (object_class,
+ PROP_SESSION_NAME,
+ g_param_spec_string ("session-name",
+ NULL,
+ NULL,
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ /**
* GsmManager::fallback
*
* If %TRUE, the current session is running in the "fallback" mode;
diff --git a/gnome-session/gsm-manager.h b/gnome-session/gsm-manager.h
index 406af8f..942b895 100644
--- a/gnome-session/gsm-manager.h
+++ b/gnome-session/gsm-manager.h
@@ -128,10 +128,10 @@ void gsm_manager_start (GsmManager *
const char * _gsm_manager_get_default_session (GsmManager *manager);
-void _gsm_manager_set_is_fallback (GsmManager *manager,
+void _gsm_manager_set_active_session (GsmManager *manager,
+ const char *session_name,
gboolean is_fallback);
-
/* exported methods */
gboolean gsm_manager_register_client (GsmManager *manager,
diff --git a/gnome-session/gsm-session-fill.c b/gnome-session/gsm-session-fill.c
index f1c61a2..106e2f5 100644
--- a/gnome-session/gsm-session-fill.c
+++ b/gnome-session/gsm-session-fill.c
@@ -360,12 +360,15 @@ find_valid_session_keyfile (const char *session)
static GKeyFile *
get_session_keyfile (const char *session,
+ char **actual_session,
gboolean *is_fallback)
{
GKeyFile *keyfile;
gboolean session_runnable;
char *value;
+ *actual_session = NULL;
+
g_debug ("fill: *** Getting session '%s'", session);
keyfile = find_valid_session_keyfile (session);
@@ -389,6 +392,7 @@ get_session_keyfile (const char *session,
}
if (session_runnable) {
+ *actual_session = g_strdup (session);
if (is_fallback)
*is_fallback = FALSE;
return keyfile;
@@ -407,7 +411,7 @@ get_session_keyfile (const char *session,
if (!IS_STRING_EMPTY (value)) {
if (is_fallback)
*is_fallback = TRUE;
- keyfile = get_session_keyfile (value, NULL);
+ keyfile = get_session_keyfile (value, actual_session, NULL);
}
g_free (value);
@@ -421,6 +425,7 @@ gsm_session_fill (GsmManager *manager,
{
GKeyFile *keyfile;
gboolean is_fallback;
+ char *actual_session;
if (override_autostart_dirs != NULL) {
load_override_apps (manager, override_autostart_dirs);
@@ -430,13 +435,14 @@ gsm_session_fill (GsmManager *manager,
if (IS_STRING_EMPTY (session))
session = _gsm_manager_get_default_session (manager);
- keyfile = get_session_keyfile (session, &is_fallback);
+ keyfile = get_session_keyfile (session, &actual_session, &is_fallback);
if (!keyfile)
return FALSE;
- if (is_fallback)
- _gsm_manager_set_is_fallback (manager, TRUE);
+ _gsm_manager_set_active_session (manager, actual_session, is_fallback);
+
+ g_free (actual_session);
load_standard_apps (manager, keyfile);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]