[mutter] Move the cursor renderer to the backend



commit 326740e00ff479f03c83f7dd8fb12949c0fdf8a0
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Tue Apr 22 14:32:55 2014 -0400

    Move the cursor renderer to the backend

 src/backends/meta-backend.c        |   13 ++++++++++++-
 src/backends/meta-backend.h        |    2 ++
 src/backends/meta-cursor-tracker.c |    8 ++++++--
 src/wayland/meta-wayland-stage.c   |   21 ++++++++-------------
 4 files changed, 28 insertions(+), 16 deletions(-)
---
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index cda4bc3..a753c07 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -45,6 +45,7 @@ meta_get_backend (void)
 struct _MetaBackendPrivate
 {
   MetaMonitorManager *monitor_manager;
+  MetaCursorRenderer *cursor_renderer;
 };
 typedef struct _MetaBackendPrivate MetaBackendPrivate;
 
@@ -80,7 +81,9 @@ meta_backend_finalize (GObject *object)
 static void
 meta_backend_real_post_init (MetaBackend *backend)
 {
-  /* Do nothing */
+  MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
+
+  priv->cursor_renderer = meta_cursor_renderer_new ();
 }
 
 static void
@@ -146,6 +149,14 @@ meta_backend_get_monitor_manager (MetaBackend *backend)
   return priv->monitor_manager;
 }
 
+MetaCursorRenderer *
+meta_backend_get_cursor_renderer (MetaBackend *backend)
+{
+  MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
+
+  return priv->cursor_renderer;
+}
+
 static GType
 get_backend_type (void)
 {
diff --git a/src/backends/meta-backend.h b/src/backends/meta-backend.h
index 83aef23..d0a1877 100644
--- a/src/backends/meta-backend.h
+++ b/src/backends/meta-backend.h
@@ -29,6 +29,7 @@
 
 #include <meta/meta-idle-monitor.h>
 #include "meta-monitor-manager.h"
+#include "meta-cursor-renderer.h"
 
 typedef struct _MetaBackend        MetaBackend;
 typedef struct _MetaBackendClass   MetaBackendClass;
@@ -40,6 +41,7 @@ MetaBackend * meta_get_backend (void);
 MetaIdleMonitor * meta_backend_get_idle_monitor (MetaBackend *backend,
                                                  int          device_id);
 MetaMonitorManager * meta_backend_get_monitor_manager (MetaBackend *backend);
+MetaCursorRenderer * meta_backend_get_cursor_renderer (MetaBackend *backend);
 
 void meta_clutter_init (void);
 
diff --git a/src/backends/meta-cursor-tracker.c b/src/backends/meta-cursor-tracker.c
index b05d472..12fe21c 100644
--- a/src/backends/meta-cursor-tracker.c
+++ b/src/backends/meta-cursor-tracker.c
@@ -40,6 +40,8 @@
 #include <gdk/gdk.h>
 #include <gdk/gdkx.h>
 
+#include "meta-backend.h"
+
 #include "meta-cursor-private.h"
 #include "meta-cursor-tracker-private.h"
 #include "screen-private.h"
@@ -134,12 +136,13 @@ meta_cursor_tracker_class_init (MetaCursorTrackerClass *klass)
 static MetaCursorTracker *
 make_wayland_cursor_tracker (MetaScreen *screen)
 {
+  MetaBackend *backend = meta_get_backend ();
   MetaWaylandCompositor *compositor;
   MetaCursorTracker *self;
 
   self = g_object_new (META_TYPE_CURSOR_TRACKER, NULL);
   self->screen = screen;
-  self->renderer = meta_cursor_renderer_new ();
+  self->renderer = meta_backend_get_cursor_renderer (backend);
 
   compositor = meta_wayland_compositor_get_default ();
   compositor->seat->pointer.cursor_tracker = self;
@@ -151,11 +154,12 @@ make_wayland_cursor_tracker (MetaScreen *screen)
 static MetaCursorTracker *
 make_x11_cursor_tracker (MetaScreen *screen)
 {
+  MetaBackend *backend = meta_get_backend ();
   MetaCursorTracker *self;
 
   self = g_object_new (META_TYPE_CURSOR_TRACKER, NULL);
   self->screen = screen;
-  self->renderer = meta_cursor_renderer_new ();
+  self->renderer = meta_backend_get_cursor_renderer (backend);
 
   XFixesSelectCursorInput (screen->display->xdisplay,
                            screen->xroot,
diff --git a/src/wayland/meta-wayland-stage.c b/src/wayland/meta-wayland-stage.c
index 39e41ab..6c83329 100644
--- a/src/wayland/meta-wayland-stage.c
+++ b/src/wayland/meta-wayland-stage.c
@@ -23,27 +23,22 @@
 
 #include "meta-wayland-stage.h"
 
-#include "display-private.h"
-#include "meta-cursor-tracker-private.h"
+#include "meta-backend.h"
+#include <meta/util.h>
 
 G_DEFINE_TYPE (MetaWaylandStage, meta_wayland_stage, CLUTTER_TYPE_STAGE);
 
 static void
 meta_wayland_stage_paint (ClutterActor *actor)
 {
-  MetaDisplay *display = meta_get_display ();
-  MetaCursorTracker *tracker;
-
   CLUTTER_ACTOR_CLASS (meta_wayland_stage_parent_class)->paint (actor);
 
-  /* Early in initialization, we can hit this. */
-  if (!display)
-    return;
-
-  tracker = meta_cursor_tracker_get_for_screen (display->screen);
-
-  if (tracker)
-    meta_cursor_renderer_paint (tracker->renderer);
+  if (meta_is_wayland_compositor ())
+    {
+      MetaBackend *backend = meta_get_backend ();
+      MetaCursorRenderer *renderer = meta_backend_get_cursor_renderer (backend);
+      meta_cursor_renderer_paint (renderer);
+    }
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]