summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2014-02-28 09:48:10 -0500
committerJasper St. Pierre <jstpierre@mecheye.net>2014-03-05 10:20:50 -0500
commitc5b3492c151b98e06292d2f366f6e5549a9aa39e (patch)
tree06990f1fea38e1aac4f3c5c10980b9f7f3808d40
parent9a28a8f745498a63437bf035336ee7e9d1ac2bdb (diff)
downloadclutter-c5b3492c151b98e06292d2f366f6e5549a9aa39e.tar.gz
kms fd
-rw-r--r--clutter/egl/clutter-backend-eglnative.c31
-rw-r--r--clutter/egl/clutter-egl.h2
2 files changed, 33 insertions, 0 deletions
diff --git a/clutter/egl/clutter-backend-eglnative.c b/clutter/egl/clutter-backend-eglnative.c
index a99d37491..b2794b5aa 100644
--- a/clutter/egl/clutter-backend-eglnative.c
+++ b/clutter/egl/clutter-backend-eglnative.c
@@ -57,6 +57,8 @@
G_DEFINE_TYPE (ClutterBackendEglNative, clutter_backend_egl_native, CLUTTER_TYPE_BACKEND);
+static int _kms_fd = -1;
+
static void
clutter_backend_egl_native_dispose (GObject *gobject)
{
@@ -71,6 +73,18 @@ clutter_backend_egl_native_dispose (GObject *gobject)
G_OBJECT_CLASS (clutter_backend_egl_native_parent_class)->dispose (gobject);
}
+static CoglRenderer *
+clutter_backend_egl_native_get_renderer (ClutterBackend *backend,
+ GError **error)
+{
+ CoglRenderer *renderer;
+
+ renderer = cogl_renderer_new ();
+ cogl_renderer_set_winsys_id (renderer, COGL_WINSYS_ID_EGL_KMS);
+ cogl_kms_renderer_set_kms_fd (renderer, _kms_fd);
+ return renderer;
+}
+
static void
clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass)
{
@@ -80,6 +94,8 @@ clutter_backend_egl_native_class_init (ClutterBackendEglNativeClass *klass)
gobject_class->dispose = clutter_backend_egl_native_dispose;
backend_class->stage_window_type = CLUTTER_TYPE_STAGE_COGL;
+
+ backend_class->get_renderer = clutter_backend_egl_native_get_renderer;
}
static void
@@ -157,3 +173,18 @@ clutter_egl_get_egl_display (void)
return 0;
#endif
}
+
+/**
+ * clutter_egl_native_set_kms_fd:
+ * @fd: The fd to talk to the kms driver with
+ *
+ * Sets the fd that Cogl should use to talk to the
+ * kms driver.
+ *
+ * Since: 1.18
+ */
+void
+clutter_egl_native_set_kms_fd (int fd)
+{
+ _kms_fd = fd;
+}
diff --git a/clutter/egl/clutter-egl.h b/clutter/egl/clutter-egl.h
index c15cd1556..58d10bd51 100644
--- a/clutter/egl/clutter-egl.h
+++ b/clutter/egl/clutter-egl.h
@@ -87,6 +87,8 @@ EGLDisplay clutter_egl_display (void);
*/
EGLDisplay clutter_egl_get_egl_display (void);
+void clutter_egl_native_set_kms_fd (int fd);
+
G_END_DECLS
#endif /* __CLUTTER_EGL_H__ */