[gnome-shell/gbsneto/fix-switching-scale: 1/2] st/theme-node: Use the node's scale factor



commit 20472d4d87f34f92e92509756a26f3cc6a7cf702
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Fri Apr 3 18:04:13 2020 -0300

    st/theme-node: Use the node's scale factor
    
    Each node stores the scale factor in place when it was created.
    Creating nodes with the same style, but with different scale
    factors, yields different nodes.
    
    Use the node's scale factor instead of retrieving the context's
    one.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1176

 src/st/st-theme-node-drawing.c | 16 +++++-----------
 src/st/st-theme-node.c         | 14 +++-----------
 2 files changed, 8 insertions(+), 22 deletions(-)
---
diff --git a/src/st/st-theme-node-drawing.c b/src/st/st-theme-node-drawing.c
index c2d4ccf839..e927755fb3 100644
--- a/src/st/st-theme-node-drawing.c
+++ b/src/st/st-theme-node-drawing.c
@@ -643,15 +643,13 @@ create_cairo_pattern_of_background_image (StThemeNode *node,
   gdouble background_image_width, background_image_height;
   gdouble x, y;
   gdouble scale_w, scale_h;
-  int scale_factor;
 
   file = st_theme_node_get_background_image (node);
 
   texture_cache = st_texture_cache_get_default ();
 
-  g_object_get (node->context, "scale-factor", &scale_factor, NULL);
   surface = st_texture_cache_load_file_to_cairo_surface (texture_cache, file,
-                                                         scale_factor,
+                                                         node->scale_factor,
                                                          resource_scale);
 
   if (surface == NULL)
@@ -1374,7 +1372,6 @@ st_theme_node_load_border_image (StThemeNode *node,
     {
       StBorderImage *border_image;
       GFile *file;
-      int scale_factor;
 
       border_image = st_theme_node_get_border_image (node);
       if (border_image == NULL)
@@ -1382,10 +1379,9 @@ st_theme_node_load_border_image (StThemeNode *node,
 
       file = st_border_image_get_file (border_image);
 
-      g_object_get (node->context, "scale-factor", &scale_factor, NULL);
-
       node->border_slices_texture = st_texture_cache_load_file_to_cogl_texture (st_texture_cache_get_default 
(),
-                                                                                file, scale_factor,
+                                                                                file,
+                                                                                node->scale_factor,
                                                                                 resource_scale);
       if (node->border_slices_texture == NULL)
         goto out;
@@ -1413,17 +1409,15 @@ st_theme_node_load_background_image (StThemeNode *node,
     {
       GFile *background_image;
       StShadow *background_image_shadow_spec;
-      int scale_factor;
 
       background_image = st_theme_node_get_background_image (node);
       if (background_image == NULL)
         goto out;
 
-      g_object_get (node->context, "scale-factor", &scale_factor, NULL);
-
       background_image_shadow_spec = st_theme_node_get_background_image_shadow (node);
       node->background_texture = st_texture_cache_load_file_to_cogl_texture (st_texture_cache_get_default (),
-                                                                             background_image, scale_factor,
+                                                                             background_image,
+                                                                             node->scale_factor,
                                                                              resource_scale);
       if (node->background_texture == NULL)
         goto out;
diff --git a/src/st/st-theme-node.c b/src/st/st-theme-node.c
index d1f09db876..157fc2bbf4 100644
--- a/src/st/st-theme-node.c
+++ b/src/st/st-theme-node.c
@@ -979,9 +979,7 @@ get_length_from_term (StThemeNode *node,
   } type = ABSOLUTE;
 
   double multiplier = 1.0;
-  int scale_factor;
 
-  g_object_get (node->context, "scale-factor", &scale_factor, NULL);
 
   if (term->type != TERM_NUMBER)
     {
@@ -996,7 +994,7 @@ get_length_from_term (StThemeNode *node,
     {
     case NUM_LENGTH_PX:
       type = ABSOLUTE;
-      multiplier = 1 * scale_factor;
+      multiplier = 1 * node->scale_factor;
       break;
     case NUM_LENGTH_PT:
       type = POINTS;
@@ -1127,14 +1125,10 @@ get_length_from_term_int (StThemeNode *node,
 {
   double value;
   GetFromTermResult result;
-  int scale_factor;
 
   result = get_length_from_term (node, term, use_parent_font, &value);
   if (result == VALUE_FOUND)
-    {
-      g_object_get (node->context, "scale-factor", &scale_factor, NULL);
-      *length = (int) ((value / scale_factor) + 0.5) * scale_factor;
-    }
+    *length = (int) ((value / node->scale_factor) + 0.5) * node->scale_factor;
   return result;
 }
 
@@ -3016,7 +3010,6 @@ StBorderImage *
 st_theme_node_get_border_image (StThemeNode *node)
 {
   int i;
-  int scale_factor;
 
   if (node->border_image_computed)
     return node->border_image;
@@ -3025,7 +3018,6 @@ st_theme_node_get_border_image (StThemeNode *node)
   node->border_image_computed = TRUE;
 
   ensure_properties (node);
-  g_object_get (node->context, "scale-factor", &scale_factor, NULL);
 
   for (i = node->n_properties - 1; i >= 0; i--)
     {
@@ -3130,7 +3122,7 @@ st_theme_node_get_border_image (StThemeNode *node)
 
           node->border_image = st_border_image_new (file,
                                                     border_top, border_right, border_bottom, border_left,
-                                                    scale_factor);
+                                                    node->scale_factor);
 
           g_object_unref (file);
 


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