[clutter/wip/backend-next] Add a CEx100-specific backend
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter/wip/backend-next] Add a CEx100-specific backend
- Date: Fri, 4 Nov 2011 17:54:00 +0000 (UTC)
commit a7fc743c7a6425bd1ba97579fa589c080ff68414
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Fri Nov 4 17:44:55 2011 +0000
Add a CEx100-specific backend
Instead of piggybacking on the EGL backend, let's create a small
ClutterBackend for the CEx100 platforms. This allows us to handle the
CEx100-specific details in a much cleaner way.
.gitignore | 2 +-
clutter/Makefile.am | 11 +-
clutter/cex100/clutter-backend-cex100.c | 264 +++++++++++++++++++++++++++
clutter/cex100/clutter-backend-cex100.h | 74 ++++++++
clutter/{egl => cex100}/clutter-cex100.h.in | 35 +---
configure.ac | 134 +++++++-------
6 files changed, 422 insertions(+), 98 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index a9bec30..8278da8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,7 +22,7 @@ stamp-marshal
/clutter/clutter-version.h
/clutter/gcov-report.txt
/clutter/clutter-json.h
-/clutter/egl/clutter-cex100.h
+/clutter/cex100/clutter-cex100.h
/build/autotools/*.m4
!/build/autotools/introspection.m4
!/build/autotools/as-linguas.m4
diff --git a/clutter/Makefile.am b/clutter/Makefile.am
index 748dffa..46128bc 100644
--- a/clutter/Makefile.am
+++ b/clutter/Makefile.am
@@ -548,7 +548,9 @@ evdev_h_priv = \
$(srcdir)/evdev/clutter-input-device-evdev.h \
$(NULL)
-cex_h = egl/clutter-cex100.h
+cex_source_h_priv = $(srcdir)/cex100/clutter-backend-cex100.h
+cex_source_c = $(srcdir)/cex100/clutter-backend-cex100.c
+cex_h = cex100/clutter-cex100.h
BUILT_SOURCES += $(cex_h)
EXTRA_DIST += $(srcdir)/$(cex_h).in
@@ -563,7 +565,12 @@ egl_source_h_priv += $(evdev_h_priv)
endif # SUPPORT_EVDEV
if SUPPORT_CEX100
-egl_source_h += $(cex_h)
+backend_source_h += $(cex_h)
+backend_source_c += $(cex_source_c)
+backend_source_h_priv += $(cex_source_h_priv)
+
+cluttercex100_includedir = $(clutter_includedir)/cex100
+cluttercex100_include_HEADERS = $(cex_h)
clutter-cex100-$(CLUTTER_API_VERSION).pc: clutter-$(CLUTTER_API_VERSION).pc
$(QUIET_GEN)cp -f $< $(@F)
diff --git a/clutter/cex100/clutter-backend-cex100.c b/clutter/cex100/clutter-backend-cex100.c
new file mode 100644
index 0000000..093fb1f
--- /dev/null
+++ b/clutter/cex100/clutter-backend-cex100.c
@@ -0,0 +1,264 @@
+/*
+ * Clutter.
+ *
+ * An OpenGL based 'interactive canvas' library.
+ *
+ * Copyright (C) 2010,2011 Intel Corporation.
+ * 2011 Giovanni Campagna <scampa giovanni gmail com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+ * Authors:
+ * Matthew Allum
+ * Emmanuele Bassi
+ * Robert Bragg
+ * Neil Roberts
+ */
+
+#include "config.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include <errno.h>
+
+#include "clutter-backend-eglnative.h"
+
+/* This is a Cogl based backend */
+#include "cogl/clutter-stage-cogl.h"
+
+#ifdef HAVE_EVDEV
+#include "clutter-device-manager-evdev.h"
+#endif
+
+#include "clutter-debug.h"
+#include "clutter-private.h"
+#include "clutter-main.h"
+#include "clutter-stage-private.h"
+
+#ifdef COGL_HAS_EGL_SUPPORT
+#include "clutter-egl.h"
+#endif
+
+#include "clutter-cex100.h"
+
+static gdl_plane_id_t gdl_plane = GDL_PLANE_ID_UPP_C;
+static guint gdl_n_buffers = CLUTTER_CEX100_TRIPLE_BUFFERING;
+
+#define clutter_backend_cex100_get_type _clutter_backend_cex100_get_type
+
+G_DEFINE_TYPE (ClutterBackendCex100, clutter_backend_cex100, CLUTTER_TYPE_BACKEND);
+
+static ClutterDeviceManager *
+clutter_backend_cex100_get_device_manager (ClutterBackend *backend)
+{
+ ClutterBackendCex100 *backend_cex100 = CLUTTER_BACKEND_CEX100 (backend);
+
+#ifdef HAVE_EVDEV
+ if (G_UNLIKELY (backend_cex100->device_manager == NULL))
+ {
+ backend_cex100->device_manager =
+ g_object_new (CLUTTER_TYPE_DEVICE_MANAGER_EVDEV,
+ "backend", backend_cex100,
+ NULL);
+ }
+#endif /* HAVE_EVDEV */
+
+ return backend_cex100->device_manager;
+}
+
+static void
+clutter_backend_cex100_dispose (GObject *gobject)
+{
+ ClutterBackendCex100 *backend_cex100 = CLUTTER_BACKEND_CEX100 (gobject);
+
+ if (backend_cex100->event_timer != NULL)
+ {
+ g_timer_destroy (backend_cex100->event_timer);
+ backend_cex100->event_timer = NULL;
+ }
+
+ if (backend_cex100->device_manager != NULL)
+ {
+ g_object_unref (backend_cex100->device_manager);
+ backend_cex100->device_manager = NULL;
+ }
+
+ G_OBJECT_CLASS (clutter_backend_cex100_parent_class)->dispose (gobject);
+}
+
+static ClutterStageWindow *
+clutter_backend_cex100_create_stage (ClutterBackend *backend,
+ ClutterStage *wrapper,
+ GError **error)
+{
+ ClutterBackendCex100 *backend_cex100 = CLUTTER_BACKEND_CEX100 (backend);
+ ClutterStageWindow *stage;
+
+ if (G_UNLIKELY (backend_cex100->stage != NULL))
+ {
+ g_set_error (error, CLUTTER_INIT_ERROR,
+ CLUTTER_INIT_ERROR_BACKEND,
+ "The Cex100 backend does not support multiple "
+ "onscreen windows");
+ return backend_cex100->stage;
+ }
+
+ stage = g_object_new (CLUTTER_TYPE_STAGE_COGL,
+ "backend", backend,
+ "wrapper", wrapper,
+ NULL);
+ backend_cex100->stage = stage;
+
+ return stage;
+}
+
+static CoglDisplay *
+clutter_backend_cex100_get_display (ClutterBackend *backend,
+ CoglRenderer *renderer,
+ CoglSwapChain *swap_chain,
+ GError **error)
+{
+ CoglOnscreenTemplate *onscreen_template = NULL;
+ CoglDisplay *display;
+
+ swap_chain = cogl_swap_chain_new ();
+
+#if defined(COGL_HAS_GDL_SUPPORT)
+ cogl_swap_chain_set_length (swap_chain, gdl_n_buffers);
+#endif
+
+ onscreen_template = cogl_onscreen_template_new (swap_chain);
+
+ /* XXX: I have some doubts that this is a good design.
+ * Conceptually should we be able to check an onscreen_template
+ * without more details about the CoglDisplay configuration?
+ */
+ if (!cogl_renderer_check_onscreen_template (renderer,
+ onscreen_template,
+ error))
+ goto error;
+
+ display = cogl_display_new (renderer, onscreen_template);
+
+#if defined(COGL_HAS_GDL_SUPPORT)
+ cogl_gdl_display_set_plane (cogl_display, gdl_plane);
+#endif
+
+ return display;
+}
+
+static void
+clutter_backend_cex100_class_init (ClutterBackendCex100Class *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ ClutterBackendClass *backend_class = CLUTTER_BACKEND_CLASS (klass);
+
+ gobject_class->dispose = clutter_backend_cex100_dispose;
+
+ backend_class->get_device_manager = clutter_backend_cex100_get_device_manager;
+ backend_class->create_stage = clutter_backend_cex100_create_stage;
+ backend_class->get_display = clutter_backend_cex100_get_display;
+}
+
+static void
+clutter_backend_cex100_init (ClutterBackendCex100 *backend_cex100)
+{
+ backend_cex100->event_timer = g_timer_new ();
+}
+
+/**
+ * clutter_cex100_set_plane:
+ * @plane: a GDL plane
+ *
+ * Intel CE3100 and CE4100 have several planes (frame buffers) and a
+ * hardware blender to blend the planes togeteher and produce the final
+ * image.
+ *
+ * clutter_cex100_set_plane() let's you configure the GDL plane where
+ * the stage will be drawn. By default Clutter will pick UPP_C
+ * (GDL_PLANE_ID_UPP_C).
+ *
+ * <note>This function has to be called before clutter_init()</note>
+ *
+ * Since: 1.6
+ */
+void
+clutter_cex100_set_plane (gdl_plane_id_t plane)
+{
+ g_return_if_fail (plane >= GDL_PLANE_ID_UPP_A && plane <= GDL_PLANE_ID_UPP_E);
+
+ gdl_plane = plane;
+}
+
+/**
+ * clutter_cex100_set_buffering_mode:
+ * @mode: a #ClutterCex100BufferingMode
+ *
+ * Configure the buffering mode of the underlying GDL plane. The GDL
+ * surface used by Clutter to draw can be backed up by either one or two
+ * back buffers thus being double or triple buffered, respectively.
+ *
+ * Clutter defaults to %CLUTTER_CEX100_TRIPLE_BUFFERING.
+ *
+ * <note>This function has to be called before clutter_init()</note>
+ *
+ * Since: 1.6
+ */
+void
+clutter_cex100_set_buffering_mode (ClutterCex100BufferingMode mode)
+{
+ g_return_if_fail (mode == CLUTTER_CEX100_DOUBLE_BUFFERING ||
+ mode == CLUTTER_CEX100_TRIPLE_BUFFERING);
+
+ gdl_n_buffers = mode;
+}
+
+/**
+ * clutter_cex100_get_egl_display:
+ *
+ * Retrieves the EGL display used by Clutter, if it supports the
+ * EGL windowing system and if it is running using an EGL backend.
+ *
+ * Return value: the EGL display used by Clutter, or 0
+ *
+ * Since: 1.10
+ */
+EGLDisplay
+clutter_cex100_get_egl_display (void)
+{
+ ClutterBackend *backend;
+
+ if (!_clutter_context_is_initialized ())
+ {
+ g_critical ("The Clutter backend has not been initialized yet");
+ return 0;
+ }
+
+ backend = clutter_get_default_backend ();
+
+ if (!CLUTTER_IS_BACKEND_CEX100 (backend))
+ {
+ g_critical ("The Clutter backend is not a CEX100 backend");
+ return 0;
+ }
+
+#if COGL_HAS_EGL_SUPPORT
+ return cogl_egl_context_get_egl_display (backend->cogl_context);
+#else
+ return 0;
+#endif
+}
diff --git a/clutter/cex100/clutter-backend-cex100.h b/clutter/cex100/clutter-backend-cex100.h
new file mode 100644
index 0000000..b55b89a
--- /dev/null
+++ b/clutter/cex100/clutter-backend-cex100.h
@@ -0,0 +1,74 @@
+/* Clutter.
+ * An OpenGL based 'interactive canvas' library.
+ *
+ * Copyright (C) 2006, 2007 OpenedHand
+ * Copyright (C) 2010 Intel Corp
+ * 2011 Giovanni Campagna <scampa giovanni gmail com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Authors:
+ * Matthew Allum
+ * Robert Bragg
+ */
+
+#ifndef __CLUTTER_BACKEND_CEX100_H__
+#define __CLUTTER_BACKEND_CEX100_H__
+
+#include <glib-object.h>
+#include <clutter/clutter-event.h>
+#include <clutter/clutter-backend.h>
+#include <clutter/clutter-device-manager.h>
+
+#include "clutter-backend-private.h"
+
+G_BEGIN_DECLS
+
+#define CLUTTER_TYPE_BACKEND_CEX100 (_clutter_backend_cex100_get_type ())
+#define CLUTTER_BACKEND_CEX100(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLUTTER_TYPE_BACKEND_CEX100, ClutterBackendCex100))
+#define CLUTTER_IS_BACKEND_CEX100(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CLUTTER_TYPE_BACKEND_CEX100))
+#define CLUTTER_BACKEND_CEX100_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CLUTTER_TYPE_BACKEND_CEX100, ClutterBackendCex100Class))
+#define CLUTTER_IS_BACKEND_CEX100_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CLUTTER_TYPE_BACKEND_CEX100))
+#define CLUTTER_BACKEND_CEX100_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CLUTTER_TYPE_BACKEND_CEX100, ClutterBackendCex100Class))
+
+typedef struct _ClutterBackendCex100 ClutterBackendCex100;
+typedef struct _ClutterBackendCex100Class ClutterBackendCex100Class;
+
+struct _ClutterBackendCex100
+{
+ ClutterBackend parent_instance;
+
+ /* main stage singleton */
+ ClutterStageWindow *stage;
+
+ /* device manager (ie evdev) */
+ ClutterDeviceManager *device_manager;
+
+ /* event source */
+ GSource *event_source;
+
+ /* event timer */
+ GTimer *event_timer;
+};
+
+struct _ClutterBackendCex100Class
+{
+ ClutterBackendClass parent_class;
+};
+
+GType _clutter_backend_cex100_get_type (void) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __CLUTTER_BACKEND_CEX100_H__ */
diff --git a/clutter/egl/clutter-cex100.h.in b/clutter/cex100/clutter-cex100.h.in
similarity index 63%
rename from clutter/egl/clutter-cex100.h.in
rename to clutter/cex100/clutter-cex100.h.in
index d6d976d..cbf7cef 100644
--- a/clutter/egl/clutter-cex100.h.in
+++ b/clutter/cex100/clutter-cex100.h.in
@@ -44,27 +44,13 @@
G_BEGIN_DECLS
/**
- * clutter_cex100_set_plane:
- * @plane: a GDL plane
- *
- * Intel CE3100 and CE4100 have several planes (frame buffers) and a
- * hardware blender to blend the planes togeteher and produce the final
- * image.
- *
- * clutter_cex100_set_plane() let's you configure the GDL plane where
- * the stage will be drawn. By default Clutter will pick UPP_C
- * (GDL_PLANE_ID_UPP_C).
- *
- * <note>This function has to be called before clutter_init()</note>
- */
-void clutter_cex100_set_plane (gdl_plane_id_t plane);
-
-/**
* ClutterCex100BufferingMode:
* @CLUTTER_CEX100_DOUBLE_BUFFERING: The GDL plane will be double buffered
* @CLUTTER_CEX100_TRIPLE_BUFFERING: The GDL plane will be triple buffered
*
* Enum passed to clutter_cex100_set_buffering_mode().
+ *
+ * Since: 1.6
*/
typedef enum /*< prefix=CLUTTER_CEX100 >*/
{
@@ -72,19 +58,10 @@ typedef enum /*< prefix=CLUTTER_CEX100 >*/
CLUTTER_CEX100_TRIPLE_BUFFERING = 3
} ClutterCex100BufferingMode;
-/**
- * clutter_cex100_set_buffering_mode:
- * @mode: a #ClutterCex100BufferingMode
- *
- * Configure the buffering mode of the underlying GDL plane. The GDL
- * surface used by Clutter to draw can be backed up by either one or two
- * back buffers thus being double or triple buffered, respectively.
- *
- * Clutter defaults to %CLUTTER_CEX100_TRIPLE_BUFFERING.
- *
- * <note>This function has to be called before clutter_init()</note>
- */
-void clutter_cex100_set_buffering_mode (ClutterCex100BufferingMode mode);
+void clutter_cex100_set_plane (gdl_plane_id_t plane);
+void clutter_cex100_set_buffering_mode (ClutterCex100BufferingMode mode);
+
+EGLDisplay clutter_cex100_get_egl_display (void);
G_END_DECLS
diff --git a/configure.ac b/configure.ac
index ea1ad40..7ff01ff 100644
--- a/configure.ac
+++ b/configure.ac
@@ -227,6 +227,10 @@ AC_ARG_ENABLE([egl-backend],
[AS_HELP_STRING([--enable-egl-backend=@<:@yes/no@:>@], [Enable the EGL framebuffer backend (default=no)])],
[enable_egl=$enableval],
[enable_egl=no])
+AC_ARG_ENABLE([cex100-backend],
+ [AS_HELP_STRING([--enable-cex100-backend=@<:@yes/no@:>@], [Enable the CEx100 backend (default=no)])],
+ [enable_cex100=$enableval],
+ [enable_cex100=no])
dnl Define default values
AS_IF([test "x$enable_x11" = "xcheck"],
@@ -313,84 +317,51 @@ AS_IF([test "x$enable_wayland" = "xyes"],
AC_DEFINE([HAVE_CLUTTER_WAYLAND], [1], [Have the Wayland backend])
])
-AS_IF([test "x$enable_egl" = "xyes"],
+AS_IF([test "x$enable_cex100" = "xyes"],
[
- CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl"
+ CLUTTER_BACKENDS="$CLUTTER_BACKENDS cex100"
- SUPPORT_EGL=1
SUPPORT_COGL=1
+ SUPPORT_EGL_PLATFORM_GDL=1
- # if Mesa has support for egl, we can use it as well
- PKG_CHECK_EXISTS([egl],
- [
- BACKEND_PC_FILES="$BACKEND_PC_FILES egl"
- ],
- [])
-
- AC_ARG_WITH([tslib],
- [AS_HELP_STRING([--with-tslib=@<:@yes/no@:>@], [Use TSLib for events (default=no)])],
- [],
- [with_tslib=no])
-
- AC_ARG_WITH([evdev],
- [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Use evdev for events (default=yes)])],
- [],
- [with_evdev=yes])
-
- AC_ARG_WITH([gdl],
- [AS_HELP_STRING([--with-gdl=@<:@yes/no@:>@], [Use libgdl for CE3100/CE4100 support (default=no)])],
- [],
- [with_gdl=no])
-
- AS_IF([test "x$with_tslib" = "xyes"],
- [
- PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
- AS_IF([test "x$have_tslib" = "xyes"],
- [
- AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
- SUPPORT_TSLIB=1
- ])
- ],
- [have_tslib=no])
+ have_gdl=no
+ AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes])
- AS_IF([test "x$with_evdev" = "xyes"],
+ AS_IF([test "x$have_gdl" = "xno"],
[
- PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
- AS_IF([test "x$have_evdev" = "xyes"],
- [
- AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
- SUPPORT_EVDEV=1
- ])
- ],
- [have_evdev=no])
-
- AS_IF([test "x$with_gdl" = "xyes"],
- [
- have_gdl=no
+ AC_CHECK_HEADERS([CE4100/libgdl.h],
+ [
+ FLAVOUR_CFLAGS="-I/usr/include/CE4100"
+ have_gdl=yes
+ CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/
+ ])
+ ])
- AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes])
+ AS_IF([test "x$have_gdl" = "xno"],
+ [AC_MSG_ERROR([libgdl.h not found but the CEx100 backend has been explicitly enabled])])
- AS_IF([test "x$have_gdl" = "xno"],
- [
- AC_CHECK_HEADERS([CE4100/libgdl.h],
- [
- FLAVOUR_CFLAGS="-I/usr/include/CE4100"
- have_gdl=yes
- CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/
- ])
- ])
+ AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX)
- AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX)
+ FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl"
- AS_IF([test "x$have_gdl" = "xno"], [AC_MSG_ERROR([libgdl.h not found])])
+ AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend])
+ AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
+ AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
+ ])
- FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl"
+AS_IF([test "x$enable_egl" = "xyes"],
+ [
+ CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl"
- SUPPORT_EGL_PLATFORM_GDL=1
+ SUPPORT_EGL=1
+ SUPPORT_COGL=1
- AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend])
- ],
- [have_gdl=no])
+ # if Mesa has support for egl, we can use it as well
+ PKG_CHECK_EXISTS([egl],
+ [
+ BACKEND_PC_FILES="$BACKEND_PC_FILES egl"
+ ],
+ [])
FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS"
FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS"
@@ -430,6 +401,37 @@ AS_IF([test "x$CLUTTER_BACKENDS" = "x"],
AC_MSG_ERROR([No backend enabled. You need to enable at least one backend.])
])
+# additional input backends
+
+AC_ARG_ENABLE([tslib-input],
+ [AS_HELP_STRING([--enable-tslib-input=@<:@yes/no@:>@], [Enable TSLib for input events (default=no)])],
+ [enable_tslib=$enableval],
+ [enable_tslib=no])
+AC_ARG_ENABLE([evdev-input],
+ [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Enable evdev for input events (default=yes)])],
+ [enable_evdev=$enableval],
+ [enable_evdev=yes])
+
+AS_IF([test "x$enable_tslib" = "xyes"],
+ [
+ PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
+ AS_IF([test "x$have_tslib" = "xyes"],
+ [
+ AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
+ SUPPORT_TSLIB=1
+ ])
+ ])
+
+AS_IF([test "x$enable_evdev" = "xyes"],
+ [
+ PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
+ AS_IF([test "x$have_evdev" = "xyes"],
+ [
+ AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
+ SUPPORT_EVDEV=1
+ ])
+ ])
+
# conditionals for use in automake files...
AM_CONDITIONAL(SUPPORT_GLX, [test "x$SUPPORT_GLX" = "x1"])
AM_CONDITIONAL(SUPPORT_X11, [test "x$SUPPORT_X11" = "x1"])
@@ -1001,7 +1003,7 @@ AC_CONFIG_FILES([
clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
- clutter/egl/clutter-cex100.h
+ clutter/cex100/clutter-cex100.h
tests/Makefile
tests/accessibility/Makefile
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]