summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-11-17 19:44:38 +0100
committerCarlos Garnacho <carlosg@gnome.org>2015-11-18 13:00:53 +0100
commita9b0715df1bc455567981b98a281b750efe64f29 (patch)
tree6d91abeb4ee617d7152f63e88c88caa18a108b47
parent9215852c32f09cb8effc9ea387fd5383df93607d (diff)
downloadclutter-a9b0715df1bc455567981b98a281b750efe64f29.tar.gz
gdk: Implement ClutterEventExtender
This lifts the responsibility off its ClutterBackend. https://bugzilla.gnome.org/show_bug.cgi?id=758238
-rw-r--r--clutter/gdk/clutter-backend-gdk.c25
-rw-r--r--clutter/gdk/clutter-device-manager-gdk.c37
2 files changed, 36 insertions, 26 deletions
diff --git a/clutter/gdk/clutter-backend-gdk.c b/clutter/gdk/clutter-backend-gdk.c
index ce5349ddb..d257c001a 100644
--- a/clutter/gdk/clutter-backend-gdk.c
+++ b/clutter/gdk/clutter-backend-gdk.c
@@ -252,29 +252,6 @@ clutter_backend_gdk_get_features (ClutterBackend *backend)
| CLUTTER_FEATURE_STAGE_CURSOR;
}
-static void
-clutter_backend_gdk_copy_event_data (ClutterBackend *backend,
- const ClutterEvent *src,
- ClutterEvent *dest)
-{
- GdkEvent *gdk_event;
-
- gdk_event = _clutter_event_get_platform_data (src);
- if (gdk_event != NULL)
- _clutter_event_set_platform_data (dest, gdk_event_copy (gdk_event));
-}
-
-static void
-clutter_backend_gdk_free_event_data (ClutterBackend *backend,
- ClutterEvent *event)
-{
- GdkEvent *gdk_event;
-
- gdk_event = _clutter_event_get_platform_data (event);
- if (gdk_event != NULL)
- gdk_event_free (gdk_event);
-}
-
static CoglRenderer *
clutter_backend_gdk_get_renderer (ClutterBackend *backend,
GError **error)
@@ -405,8 +382,6 @@ clutter_backend_gdk_class_init (ClutterBackendGdkClass *klass)
backend_class->post_parse = _clutter_backend_gdk_post_parse;
backend_class->get_features = clutter_backend_gdk_get_features;
- backend_class->copy_event_data = clutter_backend_gdk_copy_event_data;
- backend_class->free_event_data = clutter_backend_gdk_free_event_data;
backend_class->get_renderer = clutter_backend_gdk_get_renderer;
backend_class->get_display = clutter_backend_gdk_get_display;
diff --git a/clutter/gdk/clutter-device-manager-gdk.c b/clutter/gdk/clutter-device-manager-gdk.c
index 3442699b0..442aaa960 100644
--- a/clutter/gdk/clutter-device-manager-gdk.c
+++ b/clutter/gdk/clutter-device-manager-gdk.c
@@ -44,7 +44,12 @@
#define clutter_device_manager_gdk_get_type _clutter_device_manager_gdk_get_type
-G_DEFINE_TYPE (ClutterDeviceManagerGdk, clutter_device_manager_gdk, CLUTTER_TYPE_DEVICE_MANAGER)
+static void clutter_event_extender_iface_init (ClutterEventExtenderInterface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (ClutterDeviceManagerGdk, clutter_device_manager_gdk,
+ CLUTTER_TYPE_DEVICE_MANAGER,
+ G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_EVENT_EXTENDER,
+ clutter_event_extender_iface_init))
enum {
PROP_0,
@@ -52,6 +57,36 @@ enum {
PROP_LAST
};
+static void
+clutter_device_manager_gdk_copy_event_data (ClutterEventExtender *event_extender,
+ const ClutterEvent *src,
+ ClutterEvent *dest)
+{
+ GdkEvent *gdk_event;
+
+ gdk_event = _clutter_event_get_platform_data (src);
+ if (gdk_event != NULL)
+ _clutter_event_set_platform_data (dest, gdk_event_copy (gdk_event));
+}
+
+static void
+clutter_device_manager_gdk_free_event_data (ClutterEventExtender *event_extender,
+ ClutterEvent *event)
+{
+ GdkEvent *gdk_event;
+
+ gdk_event = _clutter_event_get_platform_data (event);
+ if (gdk_event != NULL)
+ gdk_event_free (gdk_event);
+}
+
+static void
+clutter_event_extender_iface_init (ClutterEventExtenderInterface *iface)
+{
+ iface->copy_event_data = clutter_device_manager_gdk_copy_event_data;
+ iface->free_event_data = clutter_device_manager_gdk_free_event_data;
+}
+
ClutterInputDevice *
_clutter_device_manager_gdk_lookup_device (ClutterDeviceManager *manager,
GdkDevice *device)