diff options
Diffstat (limited to 'src/wayland/meta-weston-launch.c')
-rw-r--r-- | src/wayland/meta-weston-launch.c | 48 |
1 files changed, 18 insertions, 30 deletions
diff --git a/src/wayland/meta-weston-launch.c b/src/wayland/meta-weston-launch.c index 99a444215..624d95146 100644 --- a/src/wayland/meta-weston-launch.c +++ b/src/wayland/meta-weston-launch.c @@ -23,6 +23,7 @@ #include <gio/gunixfdmessage.h> #include <clutter/clutter.h> +#include <clutter/egl/clutter-egl.h> #include <clutter/evdev/clutter-evdev.h> #include <glib.h> @@ -156,36 +157,11 @@ send_message_to_wl (MetaLauncher *self, return TRUE; } -gboolean -meta_launcher_set_drm_fd (MetaLauncher *self, - int drm_fd, - GError **error) -{ - struct weston_launcher_message message; - GSocketControlMessage *cmsg; - gboolean ok; - - message.opcode = WESTON_LAUNCHER_DRM_SET_FD; - - cmsg = g_unix_fd_message_new (); - if (g_unix_fd_message_append_fd (G_UNIX_FD_MESSAGE (cmsg), - drm_fd, error) == FALSE) - { - g_object_unref (cmsg); - return FALSE; - } - - ok = send_message_to_wl (self, &message, sizeof message, cmsg, NULL, error); - - g_object_unref (cmsg); - return ok; -} - static int -meta_launcher_open_input_device (MetaLauncher *self, - const char *name, - int flags, - GError **error) +meta_launcher_open_device (MetaLauncher *self, + const char *name, + int flags, + GError **error) { struct weston_launcher_open *message; GSocketControlMessage *cmsg; @@ -261,7 +237,7 @@ on_evdev_device_open (const char *path, { MetaLauncher *launcher = user_data; - return meta_launcher_open_input_device (launcher, path, flags, error); + return meta_launcher_open_device (launcher, path, flags, error); } static void @@ -382,6 +358,18 @@ meta_launcher_new (void) clutter_evdev_set_open_callback (on_evdev_device_open, self); +#if defined(CLUTTER_WINDOWING_EGL) + if (clutter_check_windowing_backend (CLUTTER_WINDOWING_EGL)) + { + GError *error = NULL; + int fd = meta_launcher_open_device (self, "/dev/dri/card0", O_RDWR, &error); + if (error) + g_error ("Failed to open /dev/dri/card0: %s", error->message); + + clutter_egl_native_set_kms_fd (fd); + } +#endif + return self; } |