From 801304913032b78a7ba1f29cd097fc446472de63 Mon Sep 17 00:00:00 2001 From: Bilal Elmoussaoui Date: Tue, 20 Aug 2024 21:43:31 +0200 Subject: [PATCH] clutter: Stop using Settings.get_default Instead, get it from the context. See next commit For ClutterText, we had to switch to using constructed as the ClutterContext will be set for the ClutterActor in the constructor phase Part-of: --- clutter/clutter/clutter-actor.c | 2 +- clutter/clutter/clutter-backend.c | 8 ++-- clutter/clutter/clutter-click-action.c | 12 +++-- clutter/clutter/clutter-gesture-action.c | 3 +- clutter/clutter/clutter-seat.c | 5 +- clutter/clutter/clutter-text.c | 60 +++++++++++++++--------- src/backends/meta-settings.c | 6 ++- 7 files changed, 58 insertions(+), 38 deletions(-) diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index f5b81e2cd..eaafe562d 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -13034,7 +13034,7 @@ update_pango_context (ClutterBackend *backend, gchar *font_name; gdouble resolution; - settings = clutter_settings_get_default (); + settings = clutter_context_get_settings (backend->context); /* update the text direction */ dir = clutter_get_default_text_direction (); diff --git a/clutter/clutter/clutter-backend.c b/clutter/clutter/clutter-backend.c index 954984f91..e49bf6527 100644 --- a/clutter/clutter/clutter-backend.c +++ b/clutter/clutter/clutter-backend.c @@ -139,12 +139,11 @@ clutter_backend_set_property (GObject *object, static void clutter_backend_real_resolution_changed (ClutterBackend *backend) { - ClutterContext *context; - ClutterSettings *settings; + ClutterContext *context = backend->context; + ClutterSettings *settings = clutter_context_get_settings (context); gdouble resolution; gint dpi; - settings = clutter_settings_get_default (); g_object_get (settings, "font-dpi", &dpi, NULL); if (dpi < 0) @@ -152,7 +151,6 @@ clutter_backend_real_resolution_changed (ClutterBackend *backend) else resolution = dpi / 1024.0; - context = _clutter_context_get_default (); if (context->font_map != NULL) cogl_pango_font_map_set_resolution (context->font_map, resolution); } @@ -441,7 +439,7 @@ clutter_backend_get_resolution (ClutterBackend *backend) g_return_val_if_fail (CLUTTER_IS_BACKEND (backend), -1.0); - settings = clutter_settings_get_default (); + settings = clutter_context_get_settings (backend->context); g_object_get (settings, "font-dpi", &resolution, NULL); if (resolution < 0) diff --git a/clutter/clutter/clutter-click-action.c b/clutter/clutter/clutter-click-action.c index d30674988..2f582a5d4 100644 --- a/clutter/clutter/clutter-click-action.c +++ b/clutter/clutter/clutter-click-action.c @@ -24,7 +24,7 @@ /** * ClutterClickAction: - * + * * Action for clickable actors * * #ClutterClickAction is a sub-class of [class@Action] that implements @@ -204,13 +204,15 @@ click_action_query_long_press (ClutterClickAction *action) { ClutterClickActionPrivate *priv = clutter_click_action_get_instance_private (action); - ClutterActor *actor; + ClutterActor *actor = + clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (action)); + ClutterContext *context = clutter_actor_get_context (actor); gboolean result = FALSE; gint timeout; if (priv->long_press_duration < 0) { - ClutterSettings *settings = clutter_settings_get_default (); + ClutterSettings *settings = clutter_context_get_settings (context); g_object_get (settings, "long-press-duration", &timeout, @@ -219,7 +221,6 @@ click_action_query_long_press (ClutterClickAction *action) else timeout = priv->long_press_duration; - actor = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (action)); g_signal_emit (action, click_signals[LONG_PRESS], 0, actor, @@ -284,6 +285,7 @@ clutter_click_action_handle_event (ClutterAction *action, clutter_click_action_get_instance_private (click_action); ClutterActor *actor = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (action)); + ClutterContext *context = clutter_actor_get_context (actor); gboolean has_button = TRUE; ClutterModifierType modifier_state; ClutterActor *target; @@ -324,7 +326,7 @@ clutter_click_action_handle_event (ClutterAction *action, if (priv->long_press_threshold < 0) { - ClutterSettings *settings = clutter_settings_get_default (); + ClutterSettings *settings = clutter_context_get_settings (context); g_object_get (settings, "dnd-drag-threshold", &priv->drag_threshold, diff --git a/clutter/clutter/clutter-gesture-action.c b/clutter/clutter/clutter-gesture-action.c index 8d291de16..84f539865 100644 --- a/clutter/clutter/clutter-gesture-action.c +++ b/clutter/clutter/clutter-gesture-action.c @@ -271,7 +271,8 @@ static gint gesture_get_default_threshold (void) { gint threshold; - ClutterSettings *settings = clutter_settings_get_default (); + ClutterContext *context = _clutter_context_get_default (); + ClutterSettings *settings = clutter_context_get_settings (context); g_object_get (settings, "dnd-drag-threshold", &threshold, NULL); return threshold; } diff --git a/clutter/clutter/clutter-seat.c b/clutter/clutter/clutter-seat.c index 6cd9874c5..dde39cf53 100644 --- a/clutter/clutter/clutter-seat.c +++ b/clutter/clutter/clutter-seat.c @@ -119,7 +119,8 @@ clutter_seat_get_property (GObject *object, static void clutter_seat_constructed (GObject *object) { - ClutterSettings *settings = clutter_settings_get_default (); + ClutterContext *context = _clutter_context_get_default (); + ClutterSettings *settings = clutter_context_get_settings (context); G_OBJECT_CLASS (clutter_seat_parent_class)->constructed (object); clutter_settings_ensure_pointer_a11y_settings (settings, @@ -280,7 +281,7 @@ clutter_seat_class_init (ClutterSeatClass *klass) * * The signal is emitted when the property to inhibit the unsetting * of the focus-surface of the #ClutterSeat changed. - * + * * To get the current state of this property, use [method@Seat.is_unfocus_inhibited]. */ signals[IS_UNFOCUS_INHIBITED_CHANGED] = diff --git a/clutter/clutter/clutter-text.c b/clutter/clutter/clutter-text.c index 77c8f3510..6c3915a08 100644 --- a/clutter/clutter/clutter-text.c +++ b/clutter/clutter/clutter-text.c @@ -859,9 +859,8 @@ clutter_text_settings_changed_cb (ClutterText *text) { ClutterTextPrivate *priv = clutter_text_get_instance_private (text); guint password_hint_time = 0; - ClutterSettings *settings; - - settings = clutter_settings_get_default (); + ClutterContext *context = clutter_actor_get_context (CLUTTER_ACTOR (text)); + ClutterSettings *settings = clutter_context_get_settings (context); g_object_get (settings, "password-hint-time", &password_hint_time, NULL); @@ -1738,6 +1737,33 @@ clutter_text_get_property (GObject *gobject, } } +static void +clutter_text_constructed (GObject *gobject) +{ + ClutterText *self = CLUTTER_TEXT (gobject); + ClutterTextPrivate *priv = clutter_text_get_instance_private (self); + ClutterContext *context = clutter_actor_get_context (CLUTTER_ACTOR (self)); + ClutterSettings *settings = clutter_context_get_settings (context); + gchar *font_name; + int password_hint_time; + + /* get the default font name from the context; we don't use + * set_font_description() here because we are initializing + * the Text and we don't need notifications and sanity checks + */ + g_object_get (settings, + "font-name", &font_name, + "password-hint-time", &password_hint_time, + NULL); + + priv->font_name = font_name; /* font_name is allocated */ + priv->font_desc = pango_font_description_from_string (font_name); + priv->show_password_hint = password_hint_time > 0; + priv->password_hint_timeout = password_hint_time; + + G_OBJECT_CLASS (clutter_text_parent_class)->constructed (gobject); +} + static void clutter_text_dispose (GObject *gobject) { @@ -2220,12 +2246,12 @@ clutter_text_update_click_count (ClutterText *self, const ClutterEvent *event) { ClutterTextPrivate *priv = clutter_text_get_instance_private (self); - ClutterSettings *settings; + ClutterContext *context = clutter_actor_get_context (CLUTTER_ACTOR (self)); + ClutterSettings *settings = clutter_context_get_settings (context); int double_click_time, double_click_distance; uint32_t evtime; float x, y; - settings = clutter_settings_get_default (); clutter_event_get_coords (event, &x, &y); evtime = clutter_event_get_time (event); @@ -3843,6 +3869,7 @@ clutter_text_class_init (ClutterTextClass *klass) gobject_class->set_property = clutter_text_set_property; gobject_class->get_property = clutter_text_get_property; + gobject_class->constructed = clutter_text_constructed; gobject_class->dispose = clutter_text_dispose; gobject_class->finalize = clutter_text_finalize; @@ -4455,10 +4482,8 @@ clutter_text_class_init (ClutterTextClass *klass) static void clutter_text_init (ClutterText *self) { - ClutterSettings *settings; ClutterTextPrivate *priv; - gchar *font_name; - int i, password_hint_time; + int i; priv = clutter_text_get_instance_private (self); @@ -4484,18 +4509,6 @@ clutter_text_init (ClutterText *self) priv->selection_color = default_selection_color; priv->selected_text_color = default_selected_text_color; - /* get the default font name from the context; we don't use - * set_font_description() here because we are initializing - * the Text and we don't need notifications and sanity checks - */ - settings = clutter_settings_get_default (); - g_object_get (settings, - "font-name", &font_name, - "password-hint-time", &password_hint_time, - NULL); - - priv->font_name = font_name; /* font_name is allocated */ - priv->font_desc = pango_font_description_from_string (font_name); priv->is_default_font = TRUE; priv->position = -1; @@ -4512,8 +4525,6 @@ clutter_text_init (ClutterText *self) priv->preedit_set = FALSE; priv->password_char = 0; - priv->show_password_hint = password_hint_time > 0; - priv->password_hint_timeout = password_hint_time; priv->text_y = 0; @@ -5428,7 +5439,10 @@ clutter_text_set_font_name (ClutterText *self, /* get the default font name from the backend */ if (font_name == NULL || font_name[0] == '\0') { - ClutterSettings *settings = clutter_settings_get_default (); + ClutterContext *context = + clutter_actor_get_context (CLUTTER_ACTOR (self)); + ClutterSettings *settings = + clutter_context_get_settings (context); gchar *default_font_name = NULL; g_object_get (settings, "font-name", &default_font_name, NULL); diff --git a/src/backends/meta-settings.c b/src/backends/meta-settings.c index 3703b23b0..18de38be1 100644 --- a/src/backends/meta-settings.c +++ b/src/backends/meta-settings.c @@ -164,6 +164,8 @@ meta_settings_get_global_scaling_factor (MetaSettings *settings, static gboolean update_font_dpi (MetaSettings *settings) { + ClutterContext *clutter_context; + ClutterSettings *clutter_settings; double text_scaling_factor; /* Number of logical pixels on an inch when unscaled */ const double dots_per_inch = 96; @@ -181,8 +183,10 @@ update_font_dpi (MetaSettings *settings) if (font_dpi != settings->font_dpi) { settings->font_dpi = font_dpi; + clutter_context = meta_backend_get_clutter_context (settings->backend); + clutter_settings = clutter_context_get_settings (clutter_context); - g_object_set (clutter_settings_get_default (), + g_object_set (clutter_settings, "font-dpi", font_dpi, NULL);