diff --git a/clutter/clutter/clutter-enums.h b/clutter/clutter/clutter-enums.h index 17105f8d7..d7fe4b250 100644 --- a/clutter/clutter/clutter-enums.h +++ b/clutter/clutter/clutter-enums.h @@ -1329,8 +1329,6 @@ typedef enum * painting the stages * @CLUTTER_REPAINT_FLAGS_POST_PAINT: Run the repaint function after * painting the stages - * @CLUTTER_REPAINT_FLAGS_QUEUE_REDRAW_ON_ADD: Ensure that a new frame - * is queued after adding the repaint function * * Flags to pass to clutter_threads_add_repaint_func_full(). * @@ -1340,7 +1338,6 @@ typedef enum { CLUTTER_REPAINT_FLAGS_PRE_PAINT = 1 << 0, CLUTTER_REPAINT_FLAGS_POST_PAINT = 1 << 1, - CLUTTER_REPAINT_FLAGS_QUEUE_REDRAW_ON_ADD = 1 << 2 } ClutterRepaintFlags; /** diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c index 27c48574d..2c4598310 100644 --- a/clutter/clutter/clutter-main.c +++ b/clutter/clutter/clutter-main.c @@ -2407,8 +2407,7 @@ clutter_threads_add_repaint_func_full (ClutterRepaintFlags flags, repaint_func->id = context->last_repaint_id++; - /* mask out QUEUE_REDRAW_ON_ADD, since we're going to consume it */ - repaint_func->flags = flags & ~CLUTTER_REPAINT_FLAGS_QUEUE_REDRAW_ON_ADD; + repaint_func->flags = flags; repaint_func->func = func; repaint_func->data = data; repaint_func->notify = notify; @@ -2418,13 +2417,6 @@ clutter_threads_add_repaint_func_full (ClutterRepaintFlags flags, _clutter_context_unlock (); - if ((flags & CLUTTER_REPAINT_FLAGS_QUEUE_REDRAW_ON_ADD) != 0) - { - ClutterMasterClock *master_clock = _clutter_master_clock_get_default (); - - _clutter_master_clock_ensure_next_iteration (master_clock); - } - return repaint_func->id; } diff --git a/clutter/clutter/clutter-pan-action.c b/clutter/clutter/clutter-pan-action.c index 07d819e52..633143d89 100644 --- a/clutter/clutter/clutter-pan-action.c +++ b/clutter/clutter/clutter-pan-action.c @@ -136,7 +136,8 @@ enum static guint pan_signals[LAST_SIGNAL] = { 0, }; -G_DEFINE_TYPE_WITH_PRIVATE (ClutterPanAction, clutter_pan_action, CLUTTER_TYPE_GESTURE_ACTION) +G_DEFINE_TYPE_WITH_PRIVATE (ClutterPanAction, clutter_pan_action, + CLUTTER_TYPE_GESTURE_ACTION) static void emit_pan (ClutterPanAction *self, @@ -156,14 +157,18 @@ emit_pan (ClutterPanAction *self, gfloat scroll_threshold = G_PI_4/2; gfloat drag_angle; - clutter_gesture_action_get_motion_delta (CLUTTER_GESTURE_ACTION (self), 0, &delta_x, &delta_y); + clutter_gesture_action_get_motion_delta (CLUTTER_GESTURE_ACTION (self), + 0, + &delta_x, + &delta_y); if (delta_x != 0.0f) drag_angle = atanf (delta_y / delta_x); else drag_angle = G_PI_2; - if ((drag_angle > -scroll_threshold) && (drag_angle < scroll_threshold)) + if ((drag_angle > -scroll_threshold) && + (drag_angle < scroll_threshold)) priv->pin_state = SCROLL_PINNED_HORIZONTAL; else if ((drag_angle > (G_PI_2 - scroll_threshold)) || (drag_angle < -(G_PI_2 - scroll_threshold))) @@ -282,7 +287,10 @@ gesture_end (ClutterGestureAction *gesture, gfloat tau; gint duration; - clutter_gesture_action_get_release_coords (CLUTTER_GESTURE_ACTION (self), 0, &priv->release_x, &priv->release_y); + clutter_gesture_action_get_release_coords (CLUTTER_GESTURE_ACTION (self), + 0, + &priv->release_x, + &priv->release_y); if (!priv->should_interpolate) { @@ -293,7 +301,9 @@ gesture_end (ClutterGestureAction *gesture, priv->state = PAN_STATE_INTERPOLATING; clutter_gesture_action_get_motion_delta (gesture, 0, &delta_x, &delta_y); - velocity = clutter_gesture_action_get_velocity (gesture, 0, &velocity_x, &velocity_y); + velocity = clutter_gesture_action_get_velocity (gesture, 0, + &velocity_x, + &velocity_y); /* Exponential timing constant v(t) = v(0) * exp(-t/tau) * tau = 1000ms / (frame_per_second * - ln(decay_per_frame)) @@ -304,17 +314,22 @@ gesture_end (ClutterGestureAction *gesture, /* See where the decreasing velocity reaches $min_velocity px/ms * v(t) = v(0) * exp(-t/tau) = min_velocity * t = - tau * ln( min_velocity / |v(0)|) */ - duration = - tau * logf (min_velocity / (ABS (velocity) * priv->acceleration_factor)); + duration = - tau * logf (min_velocity / (ABS (velocity) * + priv->acceleration_factor)); /* Target point: x(t) = v(0) * tau * [1 - exp(-t/tau)] */ - priv->target_x = velocity_x * priv->acceleration_factor * tau * (1 - exp ((float)-duration / tau)); - priv->target_y = velocity_y * priv->acceleration_factor * tau * (1 - exp ((float)-duration / tau)); + priv->target_x = (velocity_x * priv->acceleration_factor * tau * + (1 - exp ((float)-duration / tau))); + priv->target_y = (velocity_y * priv->acceleration_factor * tau * + (1 - exp ((float)-duration / tau))); - if (ABS (velocity) * priv->acceleration_factor > min_velocity && duration > FLOAT_EPSILON) + if (ABS (velocity) * priv->acceleration_factor > min_velocity && + duration > FLOAT_EPSILON) { priv->interpolated_x = priv->interpolated_y = 0.0f; priv->deceleration_timeline = clutter_timeline_new (duration); - clutter_timeline_set_progress_mode (priv->deceleration_timeline, CLUTTER_EASE_OUT_EXPO); + clutter_timeline_set_progress_mode (priv->deceleration_timeline, + CLUTTER_EASE_OUT_EXPO); g_signal_connect (priv->deceleration_timeline, "new_frame", G_CALLBACK (on_deceleration_new_frame), self); @@ -367,7 +382,8 @@ clutter_pan_action_set_property (GObject *gobject, break; case PROP_ACCELERATION_FACTOR : - clutter_pan_action_set_acceleration_factor (self, g_value_get_double (value)); + clutter_pan_action_set_acceleration_factor (self, + g_value_get_double (value)); break; default: @@ -411,9 +427,11 @@ static void clutter_pan_action_constructed (GObject *gobject) { ClutterGestureAction *gesture; + ClutterGestureTriggerEdge edge; gesture = CLUTTER_GESTURE_ACTION (gobject); - clutter_gesture_action_set_threshold_trigger_edge (gesture, CLUTTER_GESTURE_TRIGGER_EDGE_AFTER); + edge = CLUTTER_GESTURE_TRIGGER_EDGE_AFTER; + clutter_gesture_action_set_threshold_trigger_edge (gesture, edge); } static void @@ -442,7 +460,8 @@ clutter_pan_action_set_actor (ClutterActorMeta *meta, g_clear_object (&priv->deceleration_timeline); } - CLUTTER_ACTOR_META_CLASS (clutter_pan_action_parent_class)->set_actor (meta, actor); + CLUTTER_ACTOR_META_CLASS (clutter_pan_action_parent_class)->set_actor (meta, + actor); } @@ -880,7 +899,9 @@ clutter_pan_action_get_constrained_motion_delta (ClutterPanAction *self, priv = self->priv; - distance = clutter_pan_action_get_motion_delta (self, point, &delta_x, &delta_y); + distance = clutter_pan_action_get_motion_delta (self, point, + &delta_x, + &delta_y); switch (priv->pan_axis) { diff --git a/clutter/clutter/clutter-script-parser.c b/clutter/clutter/clutter-script-parser.c index ea14b4166..60e707854 100644 --- a/clutter/clutter/clutter-script-parser.c +++ b/clutter/clutter/clutter-script-parser.c @@ -1750,7 +1750,7 @@ clutter_script_construct_parameters (ClutterScript *script, continue; } - if (!(pspec->flags & G_PARAM_CONSTRUCT_ONLY)) + if (!(pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))) { unparsed = g_list_prepend (unparsed, pinfo); continue; diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c index b8770e04a..872ebb5dd 100644 --- a/clutter/clutter/clutter-stage.c +++ b/clutter/clutter/clutter-stage.c @@ -1115,6 +1115,7 @@ clutter_stage_hide (ClutterActor *self) ClutterStagePrivate *priv = CLUTTER_STAGE (self)->priv; g_assert (priv->impl != NULL); + _clutter_stage_clear_pick_stack (CLUTTER_STAGE (self)); _clutter_stage_window_hide (priv->impl); CLUTTER_ACTOR_CLASS (clutter_stage_parent_class)->hide (self); @@ -3492,37 +3493,6 @@ _clutter_stage_maybe_setup_viewport (ClutterStage *stage, #undef _DEG_TO_RAD -/** - * clutter_stage_ensure_redraw: - * @stage: a #ClutterStage - * - * Ensures that @stage is redrawn - * - * This function should not be called by applications: it is - * used when embedding a #ClutterStage into a toolkit with - * another windowing system, like GTK+. - * - * Since: 1.0 - */ -void -clutter_stage_ensure_redraw (ClutterStage *stage) -{ - ClutterMasterClock *master_clock; - ClutterStagePrivate *priv; - - g_return_if_fail (CLUTTER_IS_STAGE (stage)); - - priv = stage->priv; - - if (!_clutter_stage_needs_update (stage)) - clutter_stage_schedule_update (stage); - - priv->redraw_pending = TRUE; - - master_clock = _clutter_master_clock_get_default (); - _clutter_master_clock_start_running (master_clock); -} - /** * clutter_stage_is_redraw_queued: (skip) */ diff --git a/clutter/clutter/clutter-stage.h b/clutter/clutter/clutter-stage.h index 7afe4c297..77012460c 100644 --- a/clutter/clutter/clutter-stage.h +++ b/clutter/clutter/clutter-stage.h @@ -208,8 +208,6 @@ guchar * clutter_stage_read_pixels (ClutterStage CLUTTER_EXPORT void clutter_stage_ensure_viewport (ClutterStage *stage); -CLUTTER_EXPORT -void clutter_stage_ensure_redraw (ClutterStage *stage); CLUTTER_EXPORT gboolean clutter_stage_is_redraw_queued (ClutterStage *stage); diff --git a/clutter/clutter/clutter-timeline.c b/clutter/clutter/clutter-timeline.c index acd4784f3..d6abd9835 100644 --- a/clutter/clutter/clutter-timeline.c +++ b/clutter/clutter/clutter-timeline.c @@ -173,7 +173,6 @@ enum { PROP_0, - PROP_LOOP, PROP_DELAY, PROP_DURATION, PROP_DIRECTION, @@ -291,23 +290,6 @@ clutter_timeline_add_marker_internal (ClutterTimeline *timeline, g_hash_table_insert (priv->markers_by_name, marker->name, marker); } -static inline void -clutter_timeline_set_loop_internal (ClutterTimeline *timeline, - gboolean loop) -{ - gint old_repeat_count; - - old_repeat_count = timeline->priv->repeat_count; - - if (loop) - clutter_timeline_set_repeat_count (timeline, -1); - else - clutter_timeline_set_repeat_count (timeline, 0); - - if (old_repeat_count != timeline->priv->repeat_count) - g_object_notify_by_pspec (G_OBJECT (timeline), obj_props[PROP_LOOP]); -} - /* Scriptable */ typedef struct _ParseClosure { ClutterTimeline *timeline; @@ -449,10 +431,6 @@ clutter_timeline_set_property (GObject *object, switch (prop_id) { - case PROP_LOOP: - clutter_timeline_set_loop_internal (timeline, g_value_get_boolean (value)); - break; - case PROP_DELAY: clutter_timeline_set_delay (timeline, g_value_get_uint (value)); break; @@ -494,10 +472,6 @@ clutter_timeline_get_property (GObject *object, switch (prop_id) { - case PROP_LOOP: - g_value_set_boolean (value, priv->repeat_count != 0); - break; - case PROP_DELAY: g_value_set_uint (value, priv->delay); break; @@ -573,25 +547,6 @@ clutter_timeline_class_init (ClutterTimelineClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); - /** - * ClutterTimeline:loop: - * - * Whether the timeline should automatically rewind and restart. - * - * As a side effect, setting this property to %TRUE will set the - * #ClutterTimeline:repeat-count property to -1, while setting this - * property to %FALSE will set the #ClutterTimeline:repeat-count - * property to 0. - * - * Deprecated: 1.10: Use the #ClutterTimeline:repeat-count property instead. - */ - obj_props[PROP_LOOP] = - g_param_spec_boolean ("loop", - P_("Loop"), - P_("Should the timeline automatically restart"), - FALSE, - CLUTTER_PARAM_READWRITE | G_PARAM_DEPRECATED); - /** * ClutterTimeline:delay: * @@ -1252,45 +1207,6 @@ clutter_timeline_stop (ClutterTimeline *timeline) g_signal_emit (timeline, timeline_signals[STOPPED], 0, FALSE); } -/** - * clutter_timeline_set_loop: - * @timeline: a #ClutterTimeline - * @loop: %TRUE for enable looping - * - * Sets whether @timeline should loop. - * - * This function is equivalent to calling clutter_timeline_set_repeat_count() - * with -1 if @loop is %TRUE, and with 0 if @loop is %FALSE. - * - * Deprecated: 1.10: Use clutter_timeline_set_repeat_count() instead. - */ -void -clutter_timeline_set_loop (ClutterTimeline *timeline, - gboolean loop) -{ - g_return_if_fail (CLUTTER_IS_TIMELINE (timeline)); - - clutter_timeline_set_loop_internal (timeline, loop); -} - -/** - * clutter_timeline_get_loop: - * @timeline: a #ClutterTimeline - * - * Gets whether @timeline is looping - * - * Return value: %TRUE if the timeline is looping - * - * Deprecated: 1.10: Use clutter_timeline_get_repeat_count() instead. - */ -gboolean -clutter_timeline_get_loop (ClutterTimeline *timeline) -{ - g_return_val_if_fail (CLUTTER_IS_TIMELINE (timeline), FALSE); - - return timeline->priv->repeat_count != 0; -} - /** * clutter_timeline_rewind: * @timeline: A #ClutterTimeline @@ -1406,49 +1322,11 @@ clutter_timeline_is_playing (ClutterTimeline *timeline) return timeline->priv->is_playing; } -/** - * clutter_timeline_clone: - * @timeline: #ClutterTimeline to duplicate. - * - * Create a new #ClutterTimeline instance which has property values - * matching that of supplied timeline. The cloned timeline will not - * be started and will not be positioned to the current position of - * the original @timeline: you will have to start it with - * clutter_timeline_start(). - * - * The only cloned properties are: - * - * - #ClutterTimeline:duration - * - #ClutterTimeline:loop - * - #ClutterTimeline:delay - * - #ClutterTimeline:direction - * - * Return value: (transfer full): a new #ClutterTimeline, cloned - * from @timeline - * - * Since: 0.4 - * - * Deprecated: 1.10: Use clutter_timeline_new() or g_object_new() - * instead - */ -ClutterTimeline * -clutter_timeline_clone (ClutterTimeline *timeline) -{ - g_return_val_if_fail (CLUTTER_IS_TIMELINE (timeline), NULL); - - return g_object_new (CLUTTER_TYPE_TIMELINE, - "duration", timeline->priv->duration, - "loop", timeline->priv->repeat_count != 0, - "delay", timeline->priv->delay, - "direction", timeline->priv->direction, - NULL); -} - /** * clutter_timeline_new: - * @msecs: Duration of the timeline in milliseconds + * @duration_ms: Duration of the timeline in milliseconds * - * Creates a new #ClutterTimeline with a duration of @msecs. + * Creates a new #ClutterTimeline with a duration of @duration_ms milli seconds. * * Return value: the newly created #ClutterTimeline instance. Use * g_object_unref() when done using it @@ -1456,10 +1334,10 @@ clutter_timeline_clone (ClutterTimeline *timeline) * Since: 0.6 */ ClutterTimeline * -clutter_timeline_new (guint msecs) +clutter_timeline_new (guint duration_ms) { return g_object_new (CLUTTER_TYPE_TIMELINE, - "duration", msecs, + "duration", duration_ms, NULL); } diff --git a/clutter/clutter/clutter-timeline.h b/clutter/clutter/clutter-timeline.h index 656a4c503..d6a5dde7b 100644 --- a/clutter/clutter/clutter-timeline.h +++ b/clutter/clutter/clutter-timeline.h @@ -119,7 +119,7 @@ CLUTTER_EXPORT GType clutter_timeline_get_type (void) G_GNUC_CONST; CLUTTER_EXPORT -ClutterTimeline * clutter_timeline_new (guint msecs); +ClutterTimeline * clutter_timeline_new (guint duration_ms); CLUTTER_EXPORT guint clutter_timeline_get_duration (ClutterTimeline *timeline); diff --git a/clutter/clutter/deprecated/clutter-timeline.h b/clutter/clutter/deprecated/clutter-timeline.h index 950362e90..f51650add 100644 --- a/clutter/clutter/deprecated/clutter-timeline.h +++ b/clutter/clutter/deprecated/clutter-timeline.h @@ -26,16 +26,6 @@ G_BEGIN_DECLS -CLUTTER_DEPRECATED_FOR(clutter_timeline_new) -ClutterTimeline * clutter_timeline_clone (ClutterTimeline *timeline); - -CLUTTER_DEPRECATED_FOR(clutter_timeline_set_repeat_count) -void clutter_timeline_set_loop (ClutterTimeline *timeline, - gboolean loop); - -CLUTTER_DEPRECATED_FOR(clutter_timeline_get_repeat_count) -gboolean clutter_timeline_get_loop (ClutterTimeline *timeline); - G_END_DECLS #endif /* __CLUTTER_TIMELINE_PRIVATE_H__ */ diff --git a/cogl/cogl/cogl-frame-info-private.h b/cogl/cogl/cogl-frame-info-private.h index 16d393e1c..f0324f251 100644 --- a/cogl/cogl/cogl-frame-info-private.h +++ b/cogl/cogl/cogl-frame-info-private.h @@ -43,8 +43,6 @@ struct _CoglFrameInfo float refresh_rate; int64_t global_frame_counter; - - CoglOutput *output; }; CoglFrameInfo *_cogl_frame_info_new (void); diff --git a/cogl/cogl/cogl-frame-info.c b/cogl/cogl/cogl-frame-info.c index 0455db1c1..1071495a0 100644 --- a/cogl/cogl/cogl-frame-info.c +++ b/cogl/cogl/cogl-frame-info.c @@ -72,12 +72,6 @@ cogl_frame_info_get_refresh_rate (CoglFrameInfo *info) return info->refresh_rate; } -CoglOutput * -cogl_frame_info_get_output (CoglFrameInfo *info) -{ - return info->output; -} - int64_t cogl_frame_info_get_global_frame_counter (CoglFrameInfo *info) { diff --git a/cogl/cogl/cogl-frame-info.h b/cogl/cogl/cogl-frame-info.h index e35336b00..8acbb34bd 100644 --- a/cogl/cogl/cogl-frame-info.h +++ b/cogl/cogl/cogl-frame-info.h @@ -126,20 +126,6 @@ int64_t cogl_frame_info_get_presentation_time (CoglFrameInfo *info); COGL_EXPORT float cogl_frame_info_get_refresh_rate (CoglFrameInfo *info); -/** - * cogl_frame_info_get_output: - * @info: a #CoglFrameInfo object - * - * Gets the #CoglOutput that the swapped frame was presented to. - * - * Return value: (transfer none): The #CoglOutput that the frame was - * presented to, or %NULL if this could not be determined. - * Since: 1.14 - * Stability: unstable - */ -COGL_EXPORT CoglOutput * -cogl_frame_info_get_output (CoglFrameInfo *info); - /** * cogl_frame_info_get_global_frame_counter: (skip) */ diff --git a/cogl/cogl/winsys/cogl-winsys-glx.c b/cogl/cogl/winsys/cogl-winsys-glx.c index f5d537f38..7c27e9a64 100644 --- a/cogl/cogl/winsys/cogl-winsys-glx.c +++ b/cogl/cogl/winsys/cogl-winsys-glx.c @@ -1657,8 +1657,6 @@ set_frame_info_output (CoglOnscreen *onscreen, { CoglFrameInfo *info = g_queue_peek_tail (&onscreen->pending_frame_infos); - info->output = output; - if (output) { float refresh_rate = cogl_output_get_refresh_rate (output); diff --git a/debian/libmuffin0.symbols b/debian/libmuffin0.symbols index fa521c629..e8beeec5a 100644 --- a/debian/libmuffin0.symbols +++ b/debian/libmuffin0.symbols @@ -1114,7 +1114,6 @@ libmuffin-clutter-0.so.0 libmuffin0 #MINVER# clutter_stage_capture_into@Base 5.3.0 clutter_stage_clear_stage_views@Base 6.6.3 clutter_stage_ensure_current@Base 5.3.0 - clutter_stage_ensure_redraw@Base 5.3.0 clutter_stage_ensure_viewport@Base 5.3.0 clutter_stage_event@Base 5.3.0 clutter_stage_freeze_updates@Base 5.3.0 @@ -1301,7 +1300,6 @@ libmuffin-clutter-0.so.0 libmuffin0 #MINVER# clutter_timeline_add_marker_at_time@Base 5.3.0 clutter_timeline_advance@Base 5.3.0 clutter_timeline_advance_to_marker@Base 5.3.0 - clutter_timeline_clone@Base 5.3.0 clutter_timeline_direction_get_type@Base 5.3.0 clutter_timeline_get_auto_reverse@Base 5.3.0 clutter_timeline_get_cubic_bezier_progress@Base 5.3.0 @@ -1312,7 +1310,6 @@ libmuffin-clutter-0.so.0 libmuffin0 #MINVER# clutter_timeline_get_duration@Base 5.3.0 clutter_timeline_get_duration_hint@Base 5.3.0 clutter_timeline_get_elapsed_time@Base 5.3.0 - clutter_timeline_get_loop@Base 5.3.0 clutter_timeline_get_progress@Base 5.3.0 clutter_timeline_get_progress_mode@Base 5.3.0 clutter_timeline_get_repeat_count@Base 5.3.0 @@ -1330,7 +1327,6 @@ libmuffin-clutter-0.so.0 libmuffin0 #MINVER# clutter_timeline_set_delay@Base 5.3.0 clutter_timeline_set_direction@Base 5.3.0 clutter_timeline_set_duration@Base 5.3.0 - clutter_timeline_set_loop@Base 5.3.0 clutter_timeline_set_progress_func@Base 5.3.0 clutter_timeline_set_progress_mode@Base 5.3.0 clutter_timeline_set_repeat_count@Base 5.3.0 @@ -1589,7 +1585,6 @@ libmuffin-cogl-0.so.0 libmuffin0 #MINVER# cogl_frame_info_get_frame_counter@Base 5.3.0 cogl_frame_info_get_global_frame_counter@Base 5.3.0 cogl_frame_info_get_gtype@Base 5.3.0 - cogl_frame_info_get_output@Base 5.3.0 cogl_frame_info_get_presentation_time@Base 5.3.0 cogl_frame_info_get_refresh_rate@Base 5.3.0 cogl_framebuffer_add_fence_callback@Base 5.3.0 diff --git a/src/backends/meta-backend-private.h b/src/backends/meta-backend-private.h index 5b0c849ec..f93b5760a 100644 --- a/src/backends/meta-backend-private.h +++ b/src/backends/meta-backend-private.h @@ -156,10 +156,6 @@ xkb_layout_index_t meta_backend_get_keymap_layout_group (MetaBackend *backend); gboolean meta_backend_is_lid_closed (MetaBackend *backend); -void meta_backend_freeze_updates (MetaBackend *backend); - -void meta_backend_thaw_updates (MetaBackend *backend); - void meta_backend_update_last_device (MetaBackend *backend, ClutterInputDevice *device); diff --git a/src/backends/meta-backend-types.h b/src/backends/meta-backend-types.h index c463821fb..acbcc5b52 100644 --- a/src/backends/meta-backend-types.h +++ b/src/backends/meta-backend-types.h @@ -21,6 +21,8 @@ #ifndef META_BACKEND_TYPE_H #define META_BACKEND_TYPE_H +typedef struct _MetaBackend MetaBackend; + typedef struct _MetaMonitorManager MetaMonitorManager; typedef struct _MetaMonitorConfigManager MetaMonitorConfigManager; diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c index 080244005..a08725fe9 100644 --- a/src/backends/meta-backend.c +++ b/src/backends/meta-backend.c @@ -562,12 +562,6 @@ meta_backend_real_post_init (MetaBackend *backend) } } -static MetaCursorRenderer * -meta_backend_real_create_cursor_renderer (MetaBackend *backend) -{ - return meta_cursor_renderer_new (); -} - static gboolean meta_backend_real_grab_device (MetaBackend *backend, int device_id, @@ -749,7 +743,6 @@ meta_backend_class_init (MetaBackendClass *klass) object_class->constructed = meta_backend_constructed; klass->post_init = meta_backend_real_post_init; - klass->create_cursor_renderer = meta_backend_real_create_cursor_renderer; klass->grab_device = meta_backend_real_grab_device; klass->ungrab_device = meta_backend_real_ungrab_device; klass->select_stage_events = meta_backend_real_select_stage_events; @@ -1265,24 +1258,6 @@ meta_backend_get_stage (MetaBackend *backend) return priv->stage; } -void -meta_backend_freeze_updates (MetaBackend *backend) -{ - ClutterStage *stage; - - stage = CLUTTER_STAGE (meta_backend_get_stage (backend)); - clutter_stage_freeze_updates (stage); -} - -void -meta_backend_thaw_updates (MetaBackend *backend) -{ - ClutterStage *stage; - - stage = CLUTTER_STAGE (meta_backend_get_stage (backend)); - clutter_stage_thaw_updates (stage); -} - static gboolean update_last_device (MetaBackend *backend) { diff --git a/src/backends/meta-cursor-renderer.c b/src/backends/meta-cursor-renderer.c index 910eb94ad..995c689aa 100644 --- a/src/backends/meta-cursor-renderer.c +++ b/src/backends/meta-cursor-renderer.c @@ -38,8 +38,21 @@ G_DEFINE_INTERFACE (MetaHwCursorInhibitor, meta_hw_cursor_inhibitor, G_TYPE_OBJECT) +enum +{ + PROP_0, + + PROP_BACKEND, + + N_PROPS +}; + +static GParamSpec *obj_props[N_PROPS]; + struct _MetaCursorRendererPrivate { + MetaBackend *backend; + float current_x; float current_y; @@ -89,8 +102,7 @@ align_cursor_position (MetaCursorRenderer *renderer, { MetaCursorRendererPrivate *priv = meta_cursor_renderer_get_instance_private (renderer); - MetaBackend *backend = meta_get_backend (); - ClutterActor *stage = meta_backend_get_stage (backend); + ClutterActor *stage = meta_backend_get_stage (priv->backend); ClutterStageView *view; cairo_rectangle_int_t view_layout; float view_scale; @@ -115,8 +127,7 @@ queue_redraw (MetaCursorRenderer *renderer, MetaCursorSprite *cursor_sprite) { MetaCursorRendererPrivate *priv = meta_cursor_renderer_get_instance_private (renderer); - MetaBackend *backend = meta_get_backend (); - ClutterActor *stage = meta_backend_get_stage (backend); + ClutterActor *stage = meta_backend_get_stage (priv->backend); CoglTexture *texture; graphene_rect_t rect = GRAPHENE_RECT_INIT_ZERO; @@ -165,13 +176,54 @@ meta_cursor_renderer_real_update_cursor (MetaCursorRenderer *renderer, return FALSE; } +static void +meta_cursor_renderer_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + MetaCursorRenderer *renderer = META_CURSOR_RENDERER (object); + MetaCursorRendererPrivate *priv = + meta_cursor_renderer_get_instance_private (renderer); + + switch (prop_id) + { + case PROP_BACKEND: + g_value_set_object (value, priv->backend); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +meta_cursor_renderer_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + MetaCursorRenderer *renderer = META_CURSOR_RENDERER (object); + MetaCursorRendererPrivate *priv = + meta_cursor_renderer_get_instance_private (renderer); + + switch (prop_id) + { + case PROP_BACKEND: + priv->backend = g_value_get_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + static void meta_cursor_renderer_finalize (GObject *object) { MetaCursorRenderer *renderer = META_CURSOR_RENDERER (object); MetaCursorRendererPrivate *priv = meta_cursor_renderer_get_instance_private (renderer); - MetaBackend *backend = meta_get_backend (); - ClutterActor *stage = meta_backend_get_stage (backend); + ClutterActor *stage = meta_backend_get_stage (priv->backend); if (priv->stage_overlay) meta_stage_remove_cursor_overlay (META_STAGE (stage), priv->stage_overlay); @@ -186,9 +238,21 @@ meta_cursor_renderer_class_init (MetaCursorRendererClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->get_property = meta_cursor_renderer_get_property; + object_class->set_property = meta_cursor_renderer_set_property; object_class->finalize = meta_cursor_renderer_finalize; klass->update_cursor = meta_cursor_renderer_real_update_cursor; + obj_props[PROP_BACKEND] = + g_param_spec_object ("backend", + "backend", + "MetaBackend", + META_TYPE_BACKEND, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + g_object_class_install_properties (object_class, N_PROPS, obj_props); + signals[CURSOR_PAINTED] = g_signal_new ("cursor-painted", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, @@ -273,9 +337,11 @@ meta_cursor_renderer_update_cursor (MetaCursorRenderer *renderer, } MetaCursorRenderer * -meta_cursor_renderer_new (void) +meta_cursor_renderer_new (MetaBackend *backend) { - return g_object_new (META_TYPE_CURSOR_RENDERER, NULL); + return g_object_new (META_TYPE_CURSOR_RENDERER, + "backend", backend, + NULL); } void diff --git a/src/backends/meta-cursor-renderer.h b/src/backends/meta-cursor-renderer.h index 852551355..15b2bfca6 100644 --- a/src/backends/meta-cursor-renderer.h +++ b/src/backends/meta-cursor-renderer.h @@ -54,7 +54,7 @@ struct _MetaCursorRendererClass MetaCursorSprite *cursor_sprite); }; -MetaCursorRenderer * meta_cursor_renderer_new (void); +MetaCursorRenderer * meta_cursor_renderer_new (MetaBackend *backend); void meta_cursor_renderer_set_cursor (MetaCursorRenderer *renderer, MetaCursorSprite *cursor_sprite); diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c index 047050c8a..b417aca7d 100644 --- a/src/backends/native/meta-backend-native.c +++ b/src/backends/native/meta-backend-native.c @@ -340,7 +340,7 @@ meta_backend_native_create_clutter_backend (MetaBackend *backend) static void meta_backend_native_post_init (MetaBackend *backend) { - ClutterBackend *clutter_backend = clutter_get_default_backend (); + ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend); ClutterSeat *seat = clutter_backend_get_default_seat (clutter_backend); MetaSettings *settings = meta_backend_get_settings (backend); @@ -426,6 +426,7 @@ meta_backend_native_set_keymap (MetaBackend *backend, const char *variants, const char *options) { + ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend); struct xkb_rule_names names; struct xkb_keymap *keymap; struct xkb_context *context; @@ -449,7 +450,7 @@ meta_backend_native_set_keymap (MetaBackend *backend, return; } - seat = clutter_backend_get_default_seat (clutter_get_default_backend ()); + seat = clutter_backend_get_default_seat (clutter_backend); meta_seat_native_set_keyboard_map (META_SEAT_NATIVE (seat), keymap); meta_backend_notify_keymap_changed (backend); @@ -460,18 +461,20 @@ meta_backend_native_set_keymap (MetaBackend *backend, static struct xkb_keymap * meta_backend_native_get_keymap (MetaBackend *backend) { + ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend); ClutterSeat *seat; - seat = clutter_backend_get_default_seat (clutter_get_default_backend ()); + seat = clutter_backend_get_default_seat (clutter_backend); return meta_seat_native_get_keyboard_map (META_SEAT_NATIVE (seat)); } static xkb_layout_index_t meta_backend_native_get_keymap_layout_group (MetaBackend *backend) { + ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend); ClutterSeat *seat; - seat = clutter_backend_get_default_seat (clutter_get_default_backend ()); + seat = clutter_backend_get_default_seat (clutter_backend); return meta_seat_native_get_keyboard_layout_index (META_SEAT_NATIVE (seat)); } @@ -479,6 +482,7 @@ static void meta_backend_native_lock_layout_group (MetaBackend *backend, guint idx) { + ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend); xkb_layout_index_t old_idx; ClutterSeat *seat; @@ -486,7 +490,7 @@ meta_backend_native_lock_layout_group (MetaBackend *backend, if (old_idx == idx) return; - seat = clutter_backend_get_default_seat (clutter_get_default_backend ()); + seat = clutter_backend_get_default_seat (clutter_backend); meta_seat_native_set_keyboard_layout_index (META_SEAT_NATIVE (seat), idx); meta_backend_notify_keymap_layout_group_changed (backend, idx); } @@ -495,9 +499,10 @@ static void meta_backend_native_set_numlock (MetaBackend *backend, gboolean numlock_state) { + ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend); ClutterSeat *seat; - seat = clutter_backend_get_default_seat (clutter_get_default_backend ()); + seat = clutter_backend_get_default_seat (clutter_backend); meta_seat_native_set_keyboard_numlock (META_SEAT_NATIVE (seat), numlock_state); } @@ -795,7 +800,7 @@ meta_backend_native_pause (MetaBackendNative *native) meta_backend_get_monitor_manager (backend); MetaMonitorManagerKms *monitor_manager_kms = META_MONITOR_MANAGER_KMS (monitor_manager); - ClutterBackend *clutter_backend = clutter_get_default_backend (); + ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend); MetaSeatNative *seat = META_SEAT_NATIVE (clutter_backend_get_default_seat (clutter_backend)); @@ -820,7 +825,7 @@ void meta_backend_native_resume (MetaBackendNative *native) META_MONITOR_MANAGER_KMS (monitor_manager); MetaInputSettings *input_settings; MetaIdleMonitor *idle_monitor; - ClutterBackend *clutter_backend = clutter_get_default_backend (); + ClutterBackend *clutter_backend = meta_backend_get_clutter_backend (backend); MetaSeatNative *seat = META_SEAT_NATIVE (clutter_backend_get_default_seat (clutter_backend)); diff --git a/src/backends/native/meta-cursor-renderer-native.c b/src/backends/native/meta-cursor-renderer-native.c index bc05fabd7..45e2496ca 100644 --- a/src/backends/native/meta-cursor-renderer-native.c +++ b/src/backends/native/meta-cursor-renderer-native.c @@ -1867,8 +1867,9 @@ meta_cursor_renderer_native_new (MetaBackend *backend) MetaCursorRendererNative *cursor_renderer_native; MetaCursorRendererNativePrivate *priv; - cursor_renderer_native = - g_object_new (META_TYPE_CURSOR_RENDERER_NATIVE, NULL); + cursor_renderer_native = g_object_new (META_TYPE_CURSOR_RENDERER_NATIVE, + "backend", backend, + NULL); priv = meta_cursor_renderer_native_get_instance_private (cursor_renderer_native); diff --git a/src/backends/x11/cm/meta-backend-x11-cm.c b/src/backends/x11/cm/meta-backend-x11-cm.c index e5ebd68f2..35f1fd4c2 100644 --- a/src/backends/x11/cm/meta-backend-x11-cm.c +++ b/src/backends/x11/cm/meta-backend-x11-cm.c @@ -117,7 +117,9 @@ meta_backend_x11_cm_create_monitor_manager (MetaBackend *backend, static MetaCursorRenderer * meta_backend_x11_cm_create_cursor_renderer (MetaBackend *backend) { - return g_object_new (META_TYPE_CURSOR_RENDERER_X11, NULL); + return g_object_new (META_TYPE_CURSOR_RENDERER_X11, + "backend", backend, + NULL); } static MetaInputSettings * diff --git a/src/backends/x11/nested/meta-backend-x11-nested.c b/src/backends/x11/nested/meta-backend-x11-nested.c index 8b45eada7..009a80978 100644 --- a/src/backends/x11/nested/meta-backend-x11-nested.c +++ b/src/backends/x11/nested/meta-backend-x11-nested.c @@ -65,7 +65,9 @@ meta_backend_x11_nested_create_monitor_manager (MetaBackend *backend, static MetaCursorRenderer * meta_backend_x11_nested_create_cursor_renderer (MetaBackend *backend) { - return g_object_new (META_TYPE_CURSOR_RENDERER_X11_NESTED, NULL); + return g_object_new (META_TYPE_CURSOR_RENDERER_X11_NESTED, + "backend", backend, + NULL); } static MetaInputSettings * diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index 3ead66763..86c4187f6 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -102,6 +102,7 @@ enum PROP_0, PROP_DISPLAY, + PROP_BACKEND, N_PROPS }; @@ -122,6 +123,7 @@ typedef struct _MetaCompositorPrivate GObject parent; MetaDisplay *display; + MetaBackend *backend; guint pre_paint_func_id; guint post_paint_func_id; @@ -242,7 +244,7 @@ meta_get_stage_for_display (MetaDisplay *display) g_return_val_if_fail (compositor, NULL); priv = meta_compositor_get_instance_private (compositor); - return priv->stage; + return meta_backend_get_stage (priv->backend); } /** @@ -739,12 +741,11 @@ meta_compositor_do_manage (MetaCompositor *compositor, MetaCompositorPrivate *priv = meta_compositor_get_instance_private (compositor); MetaDisplay *display = priv->display; - MetaBackend *backend = meta_get_backend (); - - priv->stage = meta_backend_get_stage (backend); + MetaBackend *backend = priv->backend; + ClutterActor *stage = meta_backend_get_stage (backend); priv->stage_presented_id = - g_signal_connect (priv->stage, "presented", + g_signal_connect (stage, "presented", G_CALLBACK (on_presented), compositor); @@ -757,10 +758,10 @@ meta_compositor_do_manage (MetaCompositor *compositor, * matter. */ priv->stage_after_paint_id = - g_signal_connect_after (priv->stage, "after-paint", + g_signal_connect_after (stage, "after-paint", G_CALLBACK (after_stage_paint), compositor); - clutter_stage_set_sync_delay (CLUTTER_STAGE (priv->stage), META_SYNC_DELAY); + clutter_stage_set_sync_delay (CLUTTER_STAGE (stage), META_SYNC_DELAY); priv->window_group = meta_window_group_new (display); priv->top_window_group = meta_window_group_new (display); @@ -783,9 +784,9 @@ meta_compositor_do_manage (MetaCompositor *compositor, // will take this and finish setting it up. priv->desklet_container = clutter_actor_new (); clutter_actor_add_child (priv->window_group, priv->desklet_container); - clutter_actor_add_child (priv->stage, priv->window_group); - clutter_actor_add_child (priv->stage, priv->top_window_group); - clutter_actor_add_child (priv->stage, priv->feedback_group); + clutter_actor_add_child (stage, priv->window_group); + clutter_actor_add_child (stage, priv->top_window_group); + clutter_actor_add_child (stage, priv->feedback_group); if (!META_COMPOSITOR_GET_CLASS (compositor)->manage (compositor, error)) return FALSE; @@ -1561,7 +1562,7 @@ meta_compositor_real_post_paint (MetaCompositor *compositor) case COGL_GRAPHICS_RESET_STATUS_PURGED_CONTEXT_RESET: g_signal_emit_by_name (priv->display, "gl-video-memory-purged"); - clutter_actor_queue_redraw (CLUTTER_ACTOR (priv->stage)); + clutter_actor_queue_redraw (meta_backend_get_stage (priv->backend)); break; default: @@ -1610,6 +1611,9 @@ meta_compositor_set_property (GObject *object, case PROP_DISPLAY: priv->display = g_value_get_object (value); break; + case PROP_BACKEND: + priv->backend = g_value_get_object (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -1630,6 +1634,9 @@ meta_compositor_get_property (GObject *object, case PROP_DISPLAY: g_value_set_object (value, priv->display); break; + case PROP_BACKEND: + g_value_set_object (value, priv->backend); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -1665,11 +1672,12 @@ meta_compositor_dispose (GObject *object) MetaCompositor *compositor = META_COMPOSITOR (object); MetaCompositorPrivate *priv = meta_compositor_get_instance_private (compositor); + ClutterActor *stage = meta_backend_get_stage (priv->backend); g_clear_pointer (&priv->laters, meta_laters_free); - g_clear_signal_handler (&priv->stage_after_paint_id, priv->stage); - g_clear_signal_handler (&priv->stage_presented_id, priv->stage); + g_clear_signal_handler (&priv->stage_after_paint_id, stage); + g_clear_signal_handler (&priv->stage_presented_id, stage); g_clear_handle_id (&priv->pre_paint_func_id, clutter_threads_remove_repaint_func); @@ -1717,6 +1725,14 @@ meta_compositor_class_init (MetaCompositorClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + obj_props[PROP_BACKEND] = + g_param_spec_object ("backend", + "backend", + "MetaBackend", + META_TYPE_BACKEND, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, N_PROPS, obj_props); signals[PRE_PAINT] = @@ -1996,7 +2012,7 @@ meta_compositor_get_stage (MetaCompositor *compositor) MetaCompositorPrivate *priv = meta_compositor_get_instance_private (compositor); - return CLUTTER_STAGE (priv->stage); + return CLUTTER_STAGE (meta_backend_get_stage (priv->backend)); } MetaWindowActor * diff --git a/src/compositor/meta-compositor-native.c b/src/compositor/meta-compositor-native.c index 0acb08c82..8730d8c7a 100644 --- a/src/compositor/meta-compositor-native.c +++ b/src/compositor/meta-compositor-native.c @@ -127,10 +127,12 @@ meta_compositor_native_pre_paint (MetaCompositor *compositor) } MetaCompositorNative * -meta_compositor_native_new (MetaDisplay *display) +meta_compositor_native_new (MetaDisplay *display, + MetaBackend *backend) { return g_object_new (META_TYPE_COMPOSITOR_NATIVE, "display", display, + "backend", backend, NULL); } diff --git a/src/compositor/meta-compositor-native.h b/src/compositor/meta-compositor-native.h index 60ec7992b..338504ece 100644 --- a/src/compositor/meta-compositor-native.h +++ b/src/compositor/meta-compositor-native.h @@ -27,6 +27,7 @@ G_DECLARE_FINAL_TYPE (MetaCompositorNative, meta_compositor_native, META, COMPOSITOR_NATIVE, MetaCompositorServer) -MetaCompositorNative * meta_compositor_native_new (MetaDisplay *display); +MetaCompositorNative * meta_compositor_native_new (MetaDisplay *display, + MetaBackend *backend); #endif /* META_COMPOSITOR_NATIVE_H */ diff --git a/src/compositor/meta-compositor-server.c b/src/compositor/meta-compositor-server.c index 6bfe447cf..03b6c53ca 100644 --- a/src/compositor/meta-compositor-server.c +++ b/src/compositor/meta-compositor-server.c @@ -45,10 +45,12 @@ meta_compositor_server_monotonic_to_high_res_xserver_time (MetaCompositor *compo } MetaCompositorServer * -meta_compositor_server_new (MetaDisplay *display) +meta_compositor_server_new (MetaDisplay *display, + MetaBackend *backend) { return g_object_new (META_TYPE_COMPOSITOR_SERVER, "display", display, + "backend", backend, NULL); } diff --git a/src/compositor/meta-compositor-server.h b/src/compositor/meta-compositor-server.h index 7339105f5..d3f52cd1d 100644 --- a/src/compositor/meta-compositor-server.h +++ b/src/compositor/meta-compositor-server.h @@ -32,6 +32,7 @@ struct _MetaCompositorServerClass MetaCompositorClass parent_class; }; -MetaCompositorServer * meta_compositor_server_new (MetaDisplay *display); +MetaCompositorServer * meta_compositor_server_new (MetaDisplay *display, + MetaBackend *backend); #endif /* META_COMPOSITOR_SERVER_H */ diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c index c2ee7d745..d562d987d 100644 --- a/src/compositor/meta-compositor-x11.c +++ b/src/compositor/meta-compositor-x11.c @@ -472,10 +472,12 @@ meta_compositor_x11_get_output_xwindow (MetaCompositorX11 *compositor_x11) } MetaCompositorX11 * -meta_compositor_x11_new (MetaDisplay *display) +meta_compositor_x11_new (MetaDisplay *display, + MetaBackend *backend) { return g_object_new (META_TYPE_COMPOSITOR_X11, "display", display, + "backend", backend, NULL); } diff --git a/src/compositor/meta-compositor-x11.h b/src/compositor/meta-compositor-x11.h index 7165493cd..42554feb3 100644 --- a/src/compositor/meta-compositor-x11.h +++ b/src/compositor/meta-compositor-x11.h @@ -27,7 +27,8 @@ G_DECLARE_FINAL_TYPE (MetaCompositorX11, meta_compositor_x11, META, COMPOSITOR_X11, MetaCompositor) -MetaCompositorX11 * meta_compositor_x11_new (MetaDisplay *display); +MetaCompositorX11 * meta_compositor_x11_new (MetaDisplay *display, + MetaBackend *backend); void meta_compositor_x11_process_xevent (MetaCompositorX11 *compositor_x11, XEvent *xevent, diff --git a/src/core/display.c b/src/core/display.c index 552cdab75..4ae7efc74 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -624,17 +624,17 @@ meta_display_remove_pending_pings_for_window (MetaDisplay *display, static MetaCompositor * create_compositor (MetaDisplay *display) { -#ifdef HAVE_WAYLAND MetaBackend *backend = meta_get_backend (); +#ifdef HAVE_WAYLAND #ifdef HAVE_NATIVE_BACKEND if (META_IS_BACKEND_NATIVE (backend)) - return META_COMPOSITOR (meta_compositor_native_new (display)); + return META_COMPOSITOR (meta_compositor_native_new (display, backend)); #endif if (META_IS_BACKEND_X11_NESTED (backend)) - return META_COMPOSITOR (meta_compositor_server_new (display)); + return META_COMPOSITOR (meta_compositor_server_new (display, backend)); #endif - return META_COMPOSITOR (meta_compositor_x11_new (display)); + return META_COMPOSITOR (meta_compositor_x11_new (display, backend)); } static void diff --git a/src/wayland/meta-wayland-tablet-tool.c b/src/wayland/meta-wayland-tablet-tool.c index 020a8c7c6..1de9a3fec 100644 --- a/src/wayland/meta-wayland-tablet-tool.c +++ b/src/wayland/meta-wayland-tablet-tool.c @@ -959,7 +959,7 @@ meta_wayland_tablet_tool_update (MetaWaylandTabletTool *tool, break; case CLUTTER_PROXIMITY_IN: if (!tool->cursor_renderer) - tool->cursor_renderer = meta_cursor_renderer_new (); + tool->cursor_renderer = meta_cursor_renderer_new (meta_get_backend ()); tool->current_tablet = meta_wayland_tablet_seat_lookup_tablet (tool->seat, clutter_event_get_source_device (event));