[mutter/wayland] meta-weston-launch: Call VT_ACTIVATE ourselves
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wayland] meta-weston-launch: Call VT_ACTIVATE ourselves
- Date: Wed, 1 Jan 2014 01:06:44 +0000 (UTC)
commit ebe6e3180ed842445c5145c6947aae9c3fa270a5
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Tue Dec 31 17:44:35 2013 -0500
meta-weston-launch: Call VT_ACTIVATE ourselves
We don't need any special permissions, so we don't need to go through
weston-launch to do so...
src/core/keybindings.c | 39 ++++++++++++++++-------------------
src/wayland/meta-wayland-private.h | 1 -
src/wayland/meta-wayland.c | 6 -----
src/wayland/meta-weston-launch.c | 14 ------------
src/wayland/meta-weston-launch.h | 4 ---
src/wayland/weston-launch.c | 37 ----------------------------------
src/wayland/weston-launch.h | 3 +-
7 files changed, 19 insertions(+), 85 deletions(-)
---
diff --git a/src/core/keybindings.c b/src/core/keybindings.c
index 1f40c68..515e591 100644
--- a/src/core/keybindings.c
+++ b/src/core/keybindings.c
@@ -56,6 +56,9 @@
#ifdef HAVE_WAYLAND
#include "meta-wayland-private.h"
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <linux/vt.h>
#endif
#define SCHEMA_COMMON_KEYBINDINGS "org.gnome.desktop.wm.keybindings"
@@ -4083,6 +4086,18 @@ handle_set_spew_mark (MetaDisplay *display,
}
#ifdef HAVE_WAYLAND
+static gboolean
+activate_vt (int vt)
+{
+ int tty, reply;
+
+ tty = open ("/dev/tty", O_RDWR | O_NOCTTY | O_CLOEXEC);
+ reply = ioctl (tty, VT_ACTIVATE, vt);
+ close (tty);
+
+ return (reply == 0);
+}
+
static void
handle_switch_vt (MetaDisplay *display,
MetaScreen *screen,
@@ -4091,28 +4106,10 @@ handle_switch_vt (MetaDisplay *display,
MetaKeyBinding *binding,
gpointer dummy)
{
- gint vt = binding->handler->data;
- MetaWaylandCompositor *compositor;
- MetaLauncher *launcher;
-
- compositor = meta_wayland_compositor_get_default ();
- launcher = meta_wayland_compositor_get_launcher (compositor);
+ gint vt = binding->handler->data;
- if (launcher)
- {
- GError *error;
-
- error = NULL;
- if (!meta_launcher_activate_vt (launcher, vt, &error))
- {
- g_warning ("Failed to switch VT: %s", error->message);
- g_error_free (error);
- }
- }
- else
- {
- g_debug ("Ignoring VT switch keybinding, not running as VT manager");
- }
+ if (!activate_vt (vt))
+ g_warning ("Failed to switch VT");
}
#endif
diff --git a/src/wayland/meta-wayland-private.h b/src/wayland/meta-wayland-private.h
index e444ae5..3533034 100644
--- a/src/wayland/meta-wayland-private.h
+++ b/src/wayland/meta-wayland-private.h
@@ -99,7 +99,6 @@ void meta_wayland_compositor_set_input_focus (MetaWaylandComp
gboolean meta_wayland_compositor_handle_event (MetaWaylandCompositor *compositor,
const ClutterEvent *event);
-MetaLauncher *meta_wayland_compositor_get_launcher (MetaWaylandCompositor *compositor);
gboolean meta_wayland_compositor_is_native (MetaWaylandCompositor *compositor);
MetaWaylandBuffer * meta_wayland_buffer_from_resource (struct wl_resource *resource);
diff --git a/src/wayland/meta-wayland.c b/src/wayland/meta-wayland.c
index 4cee683..20d0dcd 100644
--- a/src/wayland/meta-wayland.c
+++ b/src/wayland/meta-wayland.c
@@ -754,12 +754,6 @@ meta_wayland_finalize (void)
g_clear_object (&compositor->launcher);
}
-MetaLauncher *
-meta_wayland_compositor_get_launcher (MetaWaylandCompositor *compositor)
-{
- return compositor->launcher;
-}
-
gboolean
meta_wayland_compositor_is_native (MetaWaylandCompositor *compositor)
{
diff --git a/src/wayland/meta-weston-launch.c b/src/wayland/meta-weston-launch.c
index 709eacc..184a48d 100644
--- a/src/wayland/meta-weston-launch.c
+++ b/src/wayland/meta-weston-launch.c
@@ -437,17 +437,3 @@ meta_launcher_new (void)
{
return g_object_new (META_TYPE_LAUNCHER, NULL);
}
-
-gboolean
-meta_launcher_activate_vt (MetaLauncher *launcher,
- int vt,
- GError **error)
-{
- struct weston_launcher_activate_vt message;
-
- message.header.opcode = WESTON_LAUNCHER_ACTIVATE_VT;
- message.vt = vt;
-
- return send_message_to_wl (launcher, &message, sizeof (message), NULL, NULL, error);
-}
-
diff --git a/src/wayland/meta-weston-launch.h b/src/wayland/meta-weston-launch.h
index 19d3756..ea45308 100644
--- a/src/wayland/meta-weston-launch.h
+++ b/src/wayland/meta-weston-launch.h
@@ -37,10 +37,6 @@ GType meta_launcher_get_type (void) G_GNUC_CONST;
MetaLauncher *meta_launcher_new (void);
-gboolean meta_launcher_activate_vt (MetaLauncher *self,
- int number,
- GError **error);
-
gboolean meta_launcher_set_drm_fd (MetaLauncher *self,
int drm_fd,
GError **error);
diff --git a/src/wayland/weston-launch.c b/src/wayland/weston-launch.c
index 773eea4..cbd7c9e 100644
--- a/src/wayland/weston-launch.c
+++ b/src/wayland/weston-launch.c
@@ -270,40 +270,6 @@ out:
}
static int
-handle_activate_vt(struct weston_launch *wl, struct msghdr *msg, ssize_t len)
-{
- struct weston_launcher_reply reply;
- struct weston_launcher_activate_vt *message;
-
- reply.header.opcode = WESTON_LAUNCHER_ACTIVATE_VT;
- reply.ret = -1;
-
- if (len != sizeof(*message)) {
- error(0, 0, "missing value in activate_vt request");
- goto out;
- }
-
- message = msg->msg_iov->iov_base;
-
- reply.ret = ioctl(wl->tty, VT_ACTIVATE, message->vt);
- if (reply.ret < 0)
- reply.ret = -errno;
-
- if (wl->verbose)
- fprintf(stderr, "mutter-launch: activate VT, ret: %d\n", reply.ret);
-
-out:
- do {
- len = send(wl->sock[0], &reply, sizeof reply, 0);
- } while (len < 0 && errno == EINTR);
- if (len < 0)
- return -1;
-
- return 0;
-}
-
-
-static int
handle_open(struct weston_launch *wl, struct msghdr *msg, ssize_t len)
{
struct weston_launcher_reply reply;
@@ -419,9 +385,6 @@ handle_socket_msg(struct weston_launch *wl)
case WESTON_LAUNCHER_CONFIRM_VT_SWITCH:
ret = handle_confirm_vt_switch(wl, &msg, len);
break;
- case WESTON_LAUNCHER_ACTIVATE_VT:
- ret = handle_activate_vt(wl, &msg, len);
- break;
}
return ret;
diff --git a/src/wayland/weston-launch.h b/src/wayland/weston-launch.h
index 74e6c3b..63e2809 100644
--- a/src/wayland/weston-launch.h
+++ b/src/wayland/weston-launch.h
@@ -32,8 +32,7 @@ enum weston_launcher_message_type {
enum weston_launcher_opcode {
WESTON_LAUNCHER_OPEN = (1 << 1 | WESTON_LAUNCHER_REQUEST),
WESTON_LAUNCHER_DRM_SET_FD = (2 << 1 | WESTON_LAUNCHER_REQUEST),
- WESTON_LAUNCHER_ACTIVATE_VT = (3 << 1 | WESTON_LAUNCHER_REQUEST),
- WESTON_LAUNCHER_CONFIRM_VT_SWITCH = (4 << 1 | WESTON_LAUNCHER_REQUEST),
+ WESTON_LAUNCHER_CONFIRM_VT_SWITCH = (3 << 1 | WESTON_LAUNCHER_REQUEST),
};
enum weston_launcher_server_opcode {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]