diff options
author | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-03-11 17:04:22 -0400 |
---|---|---|
committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2014-03-11 17:25:40 -0400 |
commit | d47b7ba0384324a588043f246f91da3b1318b887 (patch) | |
tree | d2b38287ef649ce169260b6b931b8e5e9a1c5d08 | |
parent | f21312e2fd3793ff7566d9a301e6927b6840697f (diff) | |
download | mutter-d47b7ba0384324a588043f246f91da3b1318b887.tar.gz |
Add meta_activate_session
This will be used on startup to switch to the newly activated session.
-rw-r--r-- | src/core/main.c | 26 | ||||
-rw-r--r-- | src/meta/main.h | 1 | ||||
-rw-r--r-- | src/wayland/meta-wayland.c | 15 | ||||
-rw-r--r-- | src/wayland/meta-wayland.h | 2 | ||||
-rw-r--r-- | src/wayland/meta-weston-launch.c | 2 | ||||
-rw-r--r-- | src/wayland/meta-weston-launch.h | 2 |
6 files changed, 46 insertions, 2 deletions
diff --git a/src/core/main.c b/src/core/main.c index 5c0e1cc1d..84d808751 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -503,6 +503,32 @@ meta_register_with_session (void) } /** + * meta_activate_session: + * + * Tells mutter to activate the session. When mutter is a + * Wayland compositor, this tells logind to switch over to + * the new session. + */ +gboolean +meta_activate_session (void) +{ + if (meta_is_wayland_compositor ()) + { + MetaWaylandCompositor *compositor = meta_wayland_compositor_get_default (); + GError *error = NULL; + + if (!meta_wayland_compositor_activate_session (compositor, &error)) + { + g_warning ("Could not activate session: %s\n", error->message); + g_error_free (error); + return FALSE; + } + } + + return TRUE; +} + +/** * meta_run: (skip) * * Runs mutter. Call this after completing initialization that doesn't require diff --git a/src/meta/main.h b/src/meta/main.h index 35eb73da7..9a748099e 100644 --- a/src/meta/main.h +++ b/src/meta/main.h @@ -28,6 +28,7 @@ GOptionContext *meta_get_option_context (void); void meta_init (void); int meta_run (void); void meta_register_with_session (void); +gboolean meta_activate_session (void); gboolean meta_get_replace_current_wm (void); /* Actually defined in util.c */ void meta_set_wm_name (const char *wm_name); diff --git a/src/wayland/meta-wayland.c b/src/wayland/meta-wayland.c index f1f564e0e..8cbe6cf4a 100644 --- a/src/wayland/meta-wayland.c +++ b/src/wayland/meta-wayland.c @@ -734,3 +734,18 @@ meta_wayland_compositor_activate_vt (MetaWaylandCompositor *compositor, return TRUE; } } + +gboolean +meta_wayland_compositor_activate_session (MetaWaylandCompositor *compositor, + GError **error) +{ + if (compositor->launcher) + { + return meta_launcher_activate_vt (compositor->launcher, -1, error); + } + else + { + g_debug ("Ignoring activate_session, not running as display server"); + return TRUE; + } +} diff --git a/src/wayland/meta-wayland.h b/src/wayland/meta-wayland.h index 481695a75..81bb2e535 100644 --- a/src/wayland/meta-wayland.h +++ b/src/wayland/meta-wayland.h @@ -46,6 +46,8 @@ void meta_wayland_compositor_paint_finished (MetaWaylandComp gboolean meta_wayland_compositor_activate_vt (MetaWaylandCompositor *compositor, int vt, GError **error); +gboolean meta_wayland_compositor_activate_session (MetaWaylandCompositor *compositor, + GError **error); #endif diff --git a/src/wayland/meta-weston-launch.c b/src/wayland/meta-weston-launch.c index a33ed4957..95321104c 100644 --- a/src/wayland/meta-weston-launch.c +++ b/src/wayland/meta-weston-launch.c @@ -399,7 +399,7 @@ meta_launcher_free (MetaLauncher *launcher) gboolean meta_launcher_activate_vt (MetaLauncher *launcher, - int vt, + signed char vt, GError **error) { struct weston_launcher_activate_vt message; diff --git a/src/wayland/meta-weston-launch.h b/src/wayland/meta-weston-launch.h index d341eaeac..7fdd03c23 100644 --- a/src/wayland/meta-weston-launch.h +++ b/src/wayland/meta-weston-launch.h @@ -29,7 +29,7 @@ MetaLauncher *meta_launcher_new (void); void meta_launcher_free (MetaLauncher *self); gboolean meta_launcher_activate_vt (MetaLauncher *self, - int number, + signed char vt, GError **error); gboolean meta_launcher_set_drm_fd (MetaLauncher *self, |