[clutter] backend: Bridge platform-dependent event data creation to device managers
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] backend: Bridge platform-dependent event data creation to device managers
- Date: Wed, 18 Nov 2015 12:05:41 +0000 (UTC)
commit 4115f215aca5b4b9fe7dd6b32e66f81d12c1176f
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue Nov 17 17:37:45 2015 +0100
backend: Bridge platform-dependent event data creation to device managers
Device managers can now implement the ClutterEventExtender interface
that allows them to set their own data to events, make the backend call
those implementations if the device manager implements the interface.
https://bugzilla.gnome.org/show_bug.cgi?id=758238
clutter/clutter-backend.c | 20 ++++++++++++++++++--
1 files changed, 18 insertions(+), 2 deletions(-)
---
diff --git a/clutter/clutter-backend.c b/clutter/clutter-backend.c
index 91bda83..3122273 100644
--- a/clutter/clutter-backend.c
+++ b/clutter/clutter-backend.c
@@ -53,6 +53,7 @@
#include "clutter-stage-private.h"
#include "clutter-stage-window.h"
#include "clutter-version.h"
+#include "clutter-device-manager-private.h"
#define CLUTTER_DISABLE_DEPRECATION_WARNINGS
#include "deprecated/clutter-backend.h"
@@ -998,10 +999,17 @@ _clutter_backend_copy_event_data (ClutterBackend *backend,
const ClutterEvent *src,
ClutterEvent *dest)
{
+ ClutterEventExtenderInterface *iface;
ClutterBackendClass *klass;
klass = CLUTTER_BACKEND_GET_CLASS (backend);
- if (klass->copy_event_data != NULL)
+ if (CLUTTER_IS_EVENT_EXTENDER (backend->device_manager))
+ {
+ iface = CLUTTER_EVENT_EXTENDER_GET_IFACE (backend->device_manager);
+ iface->copy_event_data (CLUTTER_EVENT_EXTENDER (backend->device_manager),
+ src, dest);
+ }
+ else if (klass->copy_event_data != NULL)
klass->copy_event_data (backend, src, dest);
}
@@ -1009,10 +1017,18 @@ void
_clutter_backend_free_event_data (ClutterBackend *backend,
ClutterEvent *event)
{
+ ClutterEventExtenderInterface *iface;
ClutterBackendClass *klass;
klass = CLUTTER_BACKEND_GET_CLASS (backend);
- if (klass->free_event_data != NULL)
+
+ if (CLUTTER_IS_EVENT_EXTENDER (backend->device_manager))
+ {
+ iface = CLUTTER_EVENT_EXTENDER_GET_IFACE (backend->device_manager);
+ iface->free_event_data (CLUTTER_EVENT_EXTENDER (backend->device_manager),
+ event);
+ }
+ else if (klass->free_event_data != NULL)
klass->free_event_data (backend, event);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]