summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backends/meta-backend.c3
-rw-r--r--src/compositor/compositor.c9
-rw-r--r--src/compositor/meta-background.c7
-rw-r--r--src/compositor/meta-compositor-x11.c13
-rw-r--r--src/compositor/meta-dnd-actor-private.h7
-rw-r--r--src/compositor/meta-dnd-actor.c8
-rw-r--r--src/compositor/meta-dnd-private.h28
-rw-r--r--src/compositor/meta-dnd.c74
-rw-r--r--src/compositor/meta-feedback-actor-private.h6
-rw-r--r--src/compositor/meta-feedback-actor.c50
-rw-r--r--src/compositor/meta-later.c5
-rw-r--r--src/compositor/meta-plugin-manager.c7
-rw-r--r--src/compositor/meta-plugin.c8
-rw-r--r--src/compositor/meta-window-actor.c10
-rw-r--r--src/compositor/plugins/default.c15
-rw-r--r--src/wayland/meta-wayland-data-device.c5
16 files changed, 196 insertions, 59 deletions
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index a81c5baca..c5c367c29 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -67,6 +67,7 @@
#include "backends/x11/meta-backend-x11.h"
#include "clutter/clutter-mutter.h"
#include "clutter/clutter-seat-private.h"
+#include "compositor/meta-dnd-private.h"
#include "core/meta-context-private.h"
#include "meta/main.h"
#include "meta/meta-backend.h"
@@ -1210,7 +1211,7 @@ meta_backend_initable_init (GInitable *initable,
priv->cursor_tracker =
META_BACKEND_GET_CLASS (backend)->create_cursor_tracker (backend);
- priv->dnd = g_object_new (META_TYPE_DND, NULL);
+ priv->dnd = meta_dnd_new (backend);
priv->cancellable = g_cancellable_new ();
g_bus_get (G_BUS_TYPE_SYSTEM,
diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
index ef9252bd2..5a95fc909 100644
--- a/src/compositor/compositor.c
+++ b/src/compositor/compositor.c
@@ -376,10 +376,11 @@ meta_compositor_grab_end (MetaCompositor *compositor)
}
static void
-redirect_windows (MetaX11Display *x11_display)
+redirect_windows (MetaCompositor *compositor,
+ MetaX11Display *x11_display)
{
- MetaBackend *backend = meta_get_backend ();
- MetaContext *context = meta_backend_get_context (backend);
+ MetaDisplay *display = meta_compositor_get_display (compositor);
+ MetaContext *context = meta_display_get_context (display);
Display *xdisplay = meta_x11_display_get_xdisplay (x11_display);
Window xroot = meta_x11_display_get_xroot (x11_display);
int screen_number = meta_x11_display_get_screen_number (x11_display);
@@ -427,7 +428,7 @@ meta_compositor_redirect_x11_windows (MetaCompositor *compositor)
MetaDisplay *display = priv->display;
if (display->x11_display)
- redirect_windows (display->x11_display);
+ redirect_windows (compositor, display->x11_display);
}
static MetaCompositorView *
diff --git a/src/compositor/meta-background.c b/src/compositor/meta-background.c
index 99d6eb252..7aab04254 100644
--- a/src/compositor/meta-background.c
+++ b/src/compositor/meta-background.c
@@ -316,8 +316,11 @@ meta_background_finalize (GObject *object)
static void
meta_background_constructed (GObject *object)
{
- MetaBackground *self = META_BACKGROUND (object);
- MetaMonitorManager *monitor_manager = meta_monitor_manager_get ();
+ MetaBackground *self = META_BACKGROUND (object);
+ MetaContext *context = meta_display_get_context (self->display);
+ MetaBackend *backend = meta_context_get_backend (context);
+ MetaMonitorManager *monitor_manager =
+ meta_backend_get_monitor_manager (backend);
G_OBJECT_CLASS (meta_background_parent_class)->constructed (object);
diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c
index e7cb39abe..9deab97f7 100644
--- a/src/compositor/meta-compositor-x11.c
+++ b/src/compositor/meta-compositor-x11.c
@@ -141,10 +141,11 @@ meta_compositor_x11_manage (MetaCompositor *compositor,
{
MetaCompositorX11 *compositor_x11 = META_COMPOSITOR_X11 (compositor);
MetaDisplay *display = meta_compositor_get_display (compositor);
+ MetaContext *context = meta_display_get_context (display);
+ MetaBackend *backend = meta_context_get_backend (context);
MetaX11Display *x11_display = display->x11_display;
Display *xdisplay = meta_x11_display_get_xdisplay (x11_display);
int composite_version;
- MetaBackend *backend = meta_get_backend ();
Window xwindow;
if (!META_X11_DISPLAY_HAS_COMPOSITE (x11_display) ||
@@ -446,7 +447,10 @@ meta_compositor_x11_monotonic_to_high_res_xserver_time (MetaCompositor *composit
static void
meta_compositor_x11_grab_begin (MetaCompositor *compositor)
{
- MetaBackendX11 *backend_x11 = META_BACKEND_X11 (meta_get_backend ());
+ MetaDisplay *display = meta_compositor_get_display (compositor);
+ MetaContext *context = meta_display_get_context (display);
+ MetaBackend *backend = meta_context_get_backend (context);
+ MetaBackendX11 *backend_x11 = META_BACKEND_X11 (backend);
meta_backend_x11_sync_pointer (backend_x11);
}
@@ -454,7 +458,10 @@ meta_compositor_x11_grab_begin (MetaCompositor *compositor)
static void
meta_compositor_x11_grab_end (MetaCompositor *compositor)
{
- MetaBackendX11 *backend_x11 = META_BACKEND_X11 (meta_get_backend ());
+ MetaDisplay *display = meta_compositor_get_display (compositor);
+ MetaContext *context = meta_display_get_context (display);
+ MetaBackend *backend = meta_context_get_backend (context);
+ MetaBackendX11 *backend_x11 = META_BACKEND_X11 (backend);
meta_backend_x11_sync_pointer (backend_x11);
}
diff --git a/src/compositor/meta-dnd-actor-private.h b/src/compositor/meta-dnd-actor-private.h
index 20be369eb..9f0bb02d1 100644
--- a/src/compositor/meta-dnd-actor-private.h
+++ b/src/compositor/meta-dnd-actor-private.h
@@ -38,9 +38,10 @@ G_DECLARE_FINAL_TYPE (MetaDnDActor,
MetaFeedbackActor)
-ClutterActor *meta_dnd_actor_new (ClutterActor *drag_origin,
- int start_x,
- int start_y);
+ClutterActor *meta_dnd_actor_new (MetaCompositor *compositor,
+ ClutterActor *drag_origin,
+ int start_x,
+ int start_y);
void meta_dnd_actor_drag_finish (MetaDnDActor *self,
gboolean success);
diff --git a/src/compositor/meta-dnd-actor.c b/src/compositor/meta-dnd-actor.c
index 80bffdeb7..eefe43a3e 100644
--- a/src/compositor/meta-dnd-actor.c
+++ b/src/compositor/meta-dnd-actor.c
@@ -155,13 +155,15 @@ meta_dnd_actor_init (MetaDnDActor *self)
* Return value: the newly created background actor
*/
ClutterActor *
-meta_dnd_actor_new (ClutterActor *drag_origin,
- int drag_start_x,
- int drag_start_y)
+meta_dnd_actor_new (MetaCompositor *compositor,
+ ClutterActor *drag_origin,
+ int drag_start_x,
+ int drag_start_y)
{
MetaDnDActor *self;
self = g_object_new (META_TYPE_DND_ACTOR,
+ "compositor", compositor,
"drag-origin", drag_origin,
"drag-start-x", drag_start_x,
"drag-start-y", drag_start_y,
diff --git a/src/compositor/meta-dnd-private.h b/src/compositor/meta-dnd-private.h
new file mode 100644
index 000000000..925a1f413
--- /dev/null
+++ b/src/compositor/meta-dnd-private.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2022 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef META_DND_PRIVATE_H
+#define META_DND_PRIVATE_H
+
+#include "backends/meta-backend-types.h"
+#include "meta/meta-dnd.h"
+
+MetaDnd * meta_dnd_new (MetaBackend *backend);
+
+MetaBackend * meta_dnd_get_backend (MetaDnd *dnd);
+
+#endif /* META_DND_PRIVATE_H */
diff --git a/src/compositor/meta-dnd.c b/src/compositor/meta-dnd.c
index ffe695643..d495cb24c 100644
--- a/src/compositor/meta-dnd.c
+++ b/src/compositor/meta-dnd.c
@@ -19,6 +19,8 @@
#include "config.h"
+#include "compositor/meta-dnd-private.h"
+
#include <gdk/gdkx.h>
#include "meta/meta-backend.h"
@@ -28,7 +30,6 @@
#include "backends/x11/meta-backend-x11.h"
#include "backends/x11/meta-clutter-backend-x11.h"
#include "backends/x11/meta-stage-x11.h"
-#include "meta/meta-dnd.h"
#include "x11/meta-x11-display-private.h"
struct _MetaDndClass
@@ -45,19 +46,16 @@ typedef struct _MetaDndPrivate MetaDndPrivate;
struct _MetaDndPrivate
{
+ MetaBackend *backend;
+
#ifdef HAVE_WAYLAND
gboolean dnd_during_modal;
-#else
- /* to avoid warnings (g_type_class_add_private: assertion `private_size > 0' failed) */
- gchar dummy;
#endif
};
struct _MetaDnd
{
GObject parent;
-
- MetaDndPrivate *priv;
};
G_DEFINE_TYPE_WITH_PRIVATE (MetaDnd, meta_dnd, G_TYPE_OBJECT);
@@ -108,10 +106,33 @@ meta_dnd_init (MetaDnd *dnd)
{
}
+MetaDnd *
+meta_dnd_new (MetaBackend *backend)
+{
+ MetaDnd *dnd;
+ MetaDndPrivate *priv;
+
+ dnd = g_object_new (META_TYPE_DND, NULL);
+ priv = meta_dnd_get_instance_private (dnd);
+ priv->backend = backend;
+
+ return dnd;
+}
+
+MetaBackend *
+meta_dnd_get_backend (MetaDnd *dnd)
+{
+ MetaDndPrivate *priv = meta_dnd_get_instance_private (dnd);
+
+ return priv->backend;
+}
+
void
meta_dnd_init_xdnd (MetaX11Display *x11_display)
{
- MetaBackend *backend = meta_get_backend ();
+ MetaDisplay *display = meta_x11_display_get_display (x11_display);
+ MetaContext *context = meta_display_get_context (display);
+ MetaBackend *backend = meta_context_get_backend (context);
Display *xdisplay = x11_display->xdisplay;
Window xwindow, overlay_xwindow;
long xdnd_version = 5;
@@ -226,20 +247,31 @@ meta_dnd_handle_xdnd_event (MetaBackend *backend,
}
#ifdef HAVE_WAYLAND
+static MetaWaylandDataDevice *
+data_device_from_dnd (MetaDnd *dnd)
+{
+ MetaBackend *backend = meta_dnd_get_backend (dnd);
+ MetaContext *context = meta_backend_get_context (backend);
+ MetaWaylandCompositor *compositor =
+ meta_context_get_wayland_compositor (context);
+
+ return &compositor->seat->data_device;
+}
+
static void
meta_dnd_wayland_on_motion_event (MetaDnd *dnd,
const ClutterEvent *event)
{
MetaWaylandDragGrab *current_grab;
gfloat event_x, event_y;
- MetaWaylandCompositor *wl_compositor = meta_wayland_compositor_get_default ();
+ MetaWaylandDataDevice *data_device = data_device_from_dnd (dnd);
g_return_if_fail (event != NULL);
clutter_event_get_coords (event, &event_x, &event_y);
meta_dnd_notify_dnd_position_change (dnd, (int)event_x, (int)event_y);
- current_grab = meta_wayland_data_device_get_current_grab (&wl_compositor->seat->data_device);
+ current_grab = meta_wayland_data_device_get_current_grab (data_device);
if (current_grab)
meta_wayland_drag_grab_update_feedback_actor (current_grab, event);
}
@@ -248,9 +280,9 @@ static void
meta_dnd_wayland_end_notify (MetaDnd *dnd)
{
MetaDndPrivate *priv = meta_dnd_get_instance_private (dnd);
- MetaWaylandCompositor *wl_compositor = meta_wayland_compositor_get_default ();
+ MetaWaylandDataDevice *data_device = data_device_from_dnd (dnd);
- meta_wayland_data_device_end_drag (&wl_compositor->seat->data_device);
+ meta_wayland_data_device_end_drag (data_device);
priv->dnd_during_modal = FALSE;
@@ -280,10 +312,10 @@ void
meta_dnd_wayland_maybe_handle_event (MetaDnd *dnd,
const ClutterEvent *event)
{
- MetaWaylandCompositor *wl_compositor = meta_wayland_compositor_get_default ();
+ MetaWaylandDataDevice *data_device = data_device_from_dnd (dnd);
MetaDndPrivate *priv = meta_dnd_get_instance_private (dnd);
- if (!meta_wayland_data_device_get_current_grab (&wl_compositor->seat->data_device))
+ if (!meta_wayland_data_device_get_current_grab (data_device))
return;
g_warn_if_fail (priv->dnd_during_modal);
@@ -299,12 +331,17 @@ meta_dnd_wayland_maybe_handle_event (MetaDnd *dnd,
void
meta_dnd_wayland_handle_begin_modal (MetaCompositor *compositor)
{
- MetaWaylandCompositor *wl_compositor = meta_wayland_compositor_get_default ();
- MetaDnd *dnd = meta_backend_get_dnd (meta_get_backend ());
+ MetaDisplay *display = meta_compositor_get_display (compositor);
+ MetaContext *context = meta_display_get_context (display);
+ MetaWaylandCompositor *wayland_compositor =
+ meta_context_get_wayland_compositor (context);
+ MetaWaylandDataDevice *data_device = &wayland_compositor->seat->data_device;
+ MetaBackend *backend = meta_context_get_backend (context);
+ MetaDnd *dnd = meta_backend_get_dnd (backend);
MetaDndPrivate *priv = meta_dnd_get_instance_private (dnd);
if (!priv->dnd_during_modal &&
- meta_wayland_data_device_get_current_grab (&wl_compositor->seat->data_device) != NULL)
+ meta_wayland_data_device_get_current_grab (data_device))
{
priv->dnd_during_modal = TRUE;
@@ -315,7 +352,10 @@ meta_dnd_wayland_handle_begin_modal (MetaCompositor *compositor)
void
meta_dnd_wayland_handle_end_modal (MetaCompositor *compositor)
{
- MetaDnd *dnd = meta_backend_get_dnd (meta_get_backend ());
+ MetaDisplay *display = meta_compositor_get_display (compositor);
+ MetaContext *context = meta_display_get_context (display);
+ MetaBackend *backend = meta_context_get_backend (context);
+ MetaDnd *dnd = meta_backend_get_dnd (backend);
MetaDndPrivate *priv = meta_dnd_get_instance_private (dnd);
if (!priv->dnd_during_modal)
diff --git a/src/compositor/meta-feedback-actor-private.h b/src/compositor/meta-feedback-actor-private.h
index 86cacb360..eb181faad 100644
--- a/src/compositor/meta-feedback-actor-private.h
+++ b/src/compositor/meta-feedback-actor-private.h
@@ -24,6 +24,7 @@
#define META_FEEDBACK_ACTOR_PRIVATE_H
#include "clutter/clutter.h"
+#include "meta/types.h"
/**
* MetaFeedbackActor:
@@ -45,8 +46,9 @@ struct _MetaFeedbackActorClass
};
-ClutterActor *meta_feedback_actor_new (float anchor_x,
- float anchor_y);
+ClutterActor * meta_feedback_actor_new (MetaCompositor *compositor,
+ float anchor_x,
+ float anchor_y);
void meta_feedback_actor_set_anchor (MetaFeedbackActor *actor,
float anchor_x,
diff --git a/src/compositor/meta-feedback-actor.c b/src/compositor/meta-feedback-actor.c
index 7baba3a18..8a933e37a 100644
--- a/src/compositor/meta-feedback-actor.c
+++ b/src/compositor/meta-feedback-actor.c
@@ -32,14 +32,21 @@
enum
{
- PROP_ANCHOR_X = 1,
- PROP_ANCHOR_Y
+ PROP_0,
+
+ PROP_COMPOSITOR,
+ PROP_ANCHOR_X,
+ PROP_ANCHOR_Y,
+
+ N_PROPS
};
typedef struct _MetaFeedbackActorPrivate MetaFeedbackActorPrivate;
struct _MetaFeedbackActorPrivate
{
+ MetaCompositor *compositor;
+
float anchor_x;
float anchor_y;
float pos_x;
@@ -53,11 +60,13 @@ G_DEFINE_TYPE_WITH_PRIVATE (MetaFeedbackActor, meta_feedback_actor, CLUTTER_TYPE
static void
meta_feedback_actor_constructed (GObject *object)
{
- MetaDisplay *display;
+ MetaFeedbackActor *self = META_FEEDBACK_ACTOR (object);
+ MetaFeedbackActorPrivate *priv =
+ meta_feedback_actor_get_instance_private (self);
+ MetaDisplay *display = meta_compositor_get_display (priv->compositor);
ClutterActor *feedback_group;
- display = meta_get_display ();
- feedback_group = meta_get_feedback_group_for_display (display);
+ feedback_group = meta_compositor_get_feedback_group (priv->compositor);
clutter_actor_add_child (feedback_group, CLUTTER_ACTOR (object));
meta_disable_unredirect_for_display (display);
}
@@ -65,7 +74,12 @@ meta_feedback_actor_constructed (GObject *object)
static void
meta_feedback_actor_finalize (GObject *object)
{
- meta_enable_unredirect_for_display (meta_get_display ());
+ MetaFeedbackActor *self = META_FEEDBACK_ACTOR (object);
+ MetaFeedbackActorPrivate *priv =
+ meta_feedback_actor_get_instance_private (self);
+ MetaDisplay *display = meta_compositor_get_display (priv->compositor);
+
+ meta_enable_unredirect_for_display (display);
G_OBJECT_CLASS (meta_feedback_actor_parent_class)->finalize (object);
}
@@ -93,6 +107,9 @@ meta_feedback_actor_set_property (GObject *object,
switch (prop_id)
{
+ case PROP_COMPOSITOR:
+ priv->compositor = g_value_get_object (value);
+ break;
case PROP_ANCHOR_X:
priv->anchor_x = g_value_get_int (value);
meta_feedback_actor_update_position (self);
@@ -118,6 +135,9 @@ meta_feedback_actor_get_property (GObject *object,
switch (prop_id)
{
+ case PROP_COMPOSITOR:
+ g_value_set_object (value, priv->compositor);
+ break;
case PROP_ANCHOR_X:
g_value_set_float (value, priv->anchor_x);
break;
@@ -141,6 +161,18 @@ meta_feedback_actor_class_init (MetaFeedbackActorClass *klass)
object_class->set_property = meta_feedback_actor_set_property;
object_class->get_property = meta_feedback_actor_get_property;
+ pspec = g_param_spec_object ("compositor",
+ "compositor",
+ "The compositor instance",
+ META_TYPE_COMPOSITOR,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT_ONLY);
+
+ g_object_class_install_property (object_class,
+ PROP_COMPOSITOR,
+ pspec);
+
pspec = g_param_spec_float ("anchor-x",
"Anchor X",
"The X axis of the anchor point",
@@ -178,12 +210,14 @@ meta_feedback_actor_init (MetaFeedbackActor *self)
* Return value: the newly created background actor
*/
ClutterActor *
-meta_feedback_actor_new (float anchor_x,
- float anchor_y)
+meta_feedback_actor_new (MetaCompositor *compositor,
+ float anchor_x,
+ float anchor_y)
{
MetaFeedbackActor *self;
self = g_object_new (META_TYPE_FEEDBACK_ACTOR,
+ "compositor", compositor,
"anchor-x", anchor_x,
"anchor-y", anchor_y,
NULL);
diff --git a/src/compositor/meta-later.c b/src/compositor/meta-later.c
index 6c564d6ef..3713811ba 100644
--- a/src/compositor/meta-later.c
+++ b/src/compositor/meta-later.c
@@ -28,6 +28,8 @@
typedef struct _MetaLater
{
+ MetaLaters *laters;
+
unsigned int id;
unsigned int ref_count;
MetaLaterType when;
@@ -198,7 +200,7 @@ invoke_later_idle (gpointer data)
if (!later->func (later->user_data))
{
- meta_later_remove (later->id);
+ meta_laters_remove (later->laters, later->id);
return FALSE;
}
else
@@ -237,6 +239,7 @@ meta_laters_add (MetaLaters *laters,
MetaLater *later = g_new0 (MetaLater, 1);
later->id = ++laters->last_later_id;
+ later->laters = laters;
later->ref_count = 1;
later->when = when;
later->func = func;
diff --git a/src/compositor/meta-plugin-manager.c b/src/compositor/meta-plugin-manager.c
index d9e3393ce..2c28e1a4c 100644
--- a/src/compositor/meta-plugin-manager.c
+++ b/src/compositor/meta-plugin-manager.c
@@ -117,9 +117,11 @@ on_prepare_shutdown (MetaContext *context,
MetaPluginManager *
meta_plugin_manager_new (MetaCompositor *compositor)
{
+ MetaBackend *backend = meta_compositor_get_backend (compositor);
+ MetaMonitorManager *monitor_manager =
+ meta_backend_get_monitor_manager (backend);
MetaPluginManager *plugin_mgr;
MetaPlugin *plugin;
- MetaMonitorManager *monitors;
MetaDisplay *display;
MetaContext *context;
@@ -130,8 +132,7 @@ meta_plugin_manager_new (MetaCompositor *compositor)
_meta_plugin_set_compositor (plugin, compositor);
- monitors = meta_monitor_manager_get ();
- g_signal_connect (monitors, "confirm-display-change",
+ g_signal_connect (monitor_manager, "confirm-display-change",
G_CALLBACK (on_confirm_display_change), plugin_mgr);
display = meta_compositor_get_display (compositor);
diff --git a/src/compositor/meta-plugin.c b/src/compositor/meta-plugin.c
index 7f000b653..8fdd691a3 100644
--- a/src/compositor/meta-plugin.c
+++ b/src/compositor/meta-plugin.c
@@ -164,8 +164,10 @@ void
meta_plugin_complete_display_change (MetaPlugin *plugin,
gboolean ok)
{
- MetaMonitorManager *manager;
+ MetaPluginPrivate *priv = meta_plugin_get_instance_private (plugin);
+ MetaBackend *backend = meta_compositor_get_backend (priv->compositor);
+ MetaMonitorManager *monitor_manager =
+ meta_backend_get_monitor_manager (backend);
- manager = meta_monitor_manager_get ();
- meta_monitor_manager_confirm_configuration (manager, ok);
+ meta_monitor_manager_confirm_configuration (monitor_manager, ok);
}
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index 8299a7b7d..ba90c4c28 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -1222,13 +1222,16 @@ meta_window_actor_transform_cursor_position (MetaScreenCastWindow *screen_cast_w
meta_cursor_sprite_get_cogl_texture (cursor_sprite) &&
out_cursor_scale)
{
+ MetaDisplay *display = meta_compositor_get_display (priv->compositor);
+ MetaContext *context = meta_display_get_context (display);
+ MetaBackend *backend = meta_context_get_backend (context);
MetaLogicalMonitor *logical_monitor;
float view_scale;
float cursor_texture_scale;
logical_monitor = meta_window_get_main_logical_monitor (window);
- if (meta_is_stage_views_scaled ())
+ if (meta_backend_is_stage_views_scaled (backend))
view_scale = meta_logical_monitor_get_scale (logical_monitor);
else
view_scale = 1.0;
@@ -1436,8 +1439,11 @@ create_framebuffer_from_window_actor (MetaWindowActor *self,
MetaRectangle *clip,
GError **error)
{
+ MetaWindowActorPrivate *priv = meta_window_actor_get_instance_private (self);
ClutterActor *actor = CLUTTER_ACTOR (self);
- MetaBackend *backend = meta_get_backend ();
+ MetaDisplay *display = meta_compositor_get_display (priv->compositor);
+ MetaContext *context = meta_display_get_context (display);
+ MetaBackend *backend = meta_context_get_backend (context);
ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend);
CoglContext *cogl_context =
clutter_backend_get_cogl_context (clutter_backend);
diff --git a/src/compositor/plugins/default.c b/src/compositor/plugins/default.c
index 0eb7ee1a8..8d1c1a274 100644
--- a/src/compositor/plugins/default.c
+++ b/src/compositor/plugins/default.c
@@ -32,6 +32,7 @@
#include "meta/meta-background-actor.h"
#include "meta/meta-background-content.h"
#include "meta/meta-background-group.h"
+#include "meta/meta-context.h"
#include "meta/meta-monitor-manager.h"
#include "meta/meta-plugin.h"
#include "meta/util.h"
@@ -413,7 +414,8 @@ on_monitors_changed (MetaMonitorManager *monitor_manager,
}
static void
-init_keymap (MetaDefaultPlugin *self)
+init_keymap (MetaDefaultPlugin *self,
+ MetaBackend *backend)
{
g_autoptr (GError) error = NULL;
g_autoptr (GDBusProxy) proxy = NULL;
@@ -469,8 +471,7 @@ init_keymap (MetaDefaultPlugin *self)
if (!g_variant_lookup (props, "X11Variant", "s", &x11_variant))
x11_variant = g_strdup ("");
- meta_backend_set_keymap (meta_get_backend (),
- x11_layout, x11_variant, x11_options);
+ meta_backend_set_keymap (backend, x11_layout, x11_variant, x11_options);
}
static void
@@ -485,8 +486,10 @@ start (MetaPlugin *plugin)
{
MetaDefaultPlugin *self = META_DEFAULT_PLUGIN (plugin);
MetaDisplay *display = meta_plugin_get_display (plugin);
- MetaMonitorManager *monitor_manager = meta_monitor_manager_get ();
- MetaBackend *backend = meta_get_backend ();
+ MetaContext *context = meta_display_get_context (display);
+ MetaBackend *backend = meta_context_get_backend (context);
+ MetaMonitorManager *monitor_manager =
+ meta_backend_get_monitor_manager (backend);
self->priv->background_group = meta_background_group_new ();
clutter_actor_insert_child_below (meta_get_window_group_for_display (display),
@@ -502,7 +505,7 @@ start (MetaPlugin *plugin)
self);
if (meta_is_wayland_compositor ())
- init_keymap (self);
+ init_keymap (self, backend);
clutter_actor_show (meta_get_stage_for_display (display));
}
diff --git a/src/wayland/meta-wayland-data-device.c b/src/wayland/meta-wayland-data-device.c
index 13f05940a..054bb44ab 100644
--- a/src/wayland/meta-wayland-data-device.c
+++ b/src/wayland/meta-wayland-data-device.c
@@ -655,6 +655,8 @@ meta_wayland_data_device_start_drag (MetaWaylandDataDevice *data
if (icon_surface)
{
+ MetaDisplay *display = display_from_data_device (data_device);
+ MetaCompositor *compositor = meta_display_get_compositor (display);
ClutterActor *drag_surface_actor;
drag_grab->drag_surface = icon_surface;
@@ -667,7 +669,8 @@ meta_wayland_data_device_start_drag (MetaWaylandDataDevice *data
CLUTTER_ACTOR (meta_wayland_surface_get_actor (drag_grab->drag_surface));
drag_grab->feedback_actor =
- meta_dnd_actor_new (CLUTTER_ACTOR (surface_actor),
+ meta_dnd_actor_new (compositor,
+ CLUTTER_ACTOR (surface_actor),
drag_grab->drag_start_x,
drag_grab->drag_start_y);
meta_feedback_actor_set_anchor (META_FEEDBACK_ACTOR (drag_grab->feedback_actor),