[mutter] clutter: Remove window scaling feature



commit 20fcb8863293ed9d12de1c7c3422db3cdc463e74
Author: Jonas Ådahl <jadahl gmail com>
Date:   Wed Mar 29 14:48:12 2017 +0800

    clutter: Remove window scaling feature
    
    Window scaling is a clutter feature used to enable automatic scaling of
    stage windows when running under as an application in windowing system.
    Clutter in mutter does not support running as a stand-alone application
    toolkit, so lets remove this unused feature.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=777732

 clutter/clutter/clutter-canvas.c                   |  160 +-------------------
 clutter/clutter/clutter-settings.c                 |   44 ------
 clutter/clutter/clutter-stage-window.c             |   27 ----
 clutter/clutter/clutter-stage-window.h             |    7 -
 clutter/clutter/clutter-stage.c                    |   85 +++--------
 clutter/clutter/cogl/clutter-stage-cogl.c          |    4 +-
 .../clutter/x11/clutter-device-manager-core-x11.c  |   27 ++--
 clutter/clutter/x11/clutter-device-manager-xi2.c   |    4 +-
 clutter/clutter/x11/clutter-settings-x11.h         |    1 -
 clutter/clutter/x11/clutter-stage-x11.c            |   93 +++---------
 clutter/clutter/x11/clutter-stage-x11.h            |    2 -
 src/backends/meta-backend.c                        |    8 -
 12 files changed, 58 insertions(+), 404 deletions(-)
---
diff --git a/clutter/clutter/clutter-canvas.c b/clutter/clutter/clutter-canvas.c
index 98f8c07..42e54ce 100644
--- a/clutter/clutter/clutter-canvas.c
+++ b/clutter/clutter/clutter-canvas.c
@@ -76,9 +76,6 @@ struct _ClutterCanvasPrivate
   gboolean dirty;
 
   CoglBitmap *buffer;
-
-  int scale_factor;
-  guint scale_factor_set : 1;
 };
 
 enum
@@ -87,8 +84,6 @@ enum
 
   PROP_WIDTH,
   PROP_HEIGHT,
-  PROP_SCALE_FACTOR,
-  PROP_SCALE_FACTOR_SET,
 
   LAST_PROP
 };
@@ -185,11 +180,6 @@ clutter_canvas_set_property (GObject      *gobject,
       }
       break;
 
-    case PROP_SCALE_FACTOR:
-      clutter_canvas_set_scale_factor (CLUTTER_CANVAS (gobject),
-                                       g_value_get_int (value));
-      break;
-
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
       break;
@@ -214,17 +204,6 @@ clutter_canvas_get_property (GObject    *gobject,
       g_value_set_int (value, priv->height);
       break;
 
-    case PROP_SCALE_FACTOR:
-      if (priv->scale_factor_set)
-        g_value_set_int (value, priv->scale_factor);
-      else
-        g_value_set_int (value, -1);
-      break;
-
-    case PROP_SCALE_FACTOR_SET:
-      g_value_set_boolean (value, priv->scale_factor_set);
-      break;
-
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
       break;
@@ -268,46 +247,6 @@ clutter_canvas_class_init (ClutterCanvasClass *klass)
                       G_PARAM_READWRITE |
                       G_PARAM_STATIC_STRINGS);
 
-  /**
-   * ClutterCanvas:scale-factor-set:
-   *
-   * Whether the #ClutterCanvas:scale-factor property is set.
-   *
-   * If the #ClutterCanvas:scale-factor-set property is %FALSE
-   * then #ClutterCanvas will use the #ClutterSettings:window-scaling-factor
-   * property.
-   *
-   * Since: 1.18
-   */
-  obj_props[PROP_SCALE_FACTOR_SET] =
-    g_param_spec_boolean ("scale-factor-set",
-                          P_("Scale Factor Set"),
-                          P_("Whether the scale-factor property is set"),
-                          FALSE,
-                          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-
-  /**
-   * ClutterCanvas:scale-factor:
-   *
-   * The scaling factor to be applied to the Cairo surface used for
-   * drawing.
-   *
-   * If #ClutterCanvas:scale-factor is set to a negative value, the
-   * value of the #ClutterSettings:window-scaling-factor property is
-   * used instead.
-   *
-   * Use #ClutterCanvas:scale-factor-set to check if the scale factor
-   * is set.
-   *
-   * Since: 1.18
-   */
-  obj_props[PROP_SCALE_FACTOR] =
-    g_param_spec_int ("scale-factor",
-                      P_("Scale Factor"),
-                      P_("The scaling factor for the surface"),
-                      -1, 1000,
-                      -1,
-                      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
    * ClutterCanvas::draw:
@@ -354,7 +293,6 @@ clutter_canvas_init (ClutterCanvas *self)
 
   self->priv->width = -1;
   self->priv->height = -1;
-  self->priv->scale_factor = -1;
 }
 
 static void
@@ -397,7 +335,6 @@ clutter_canvas_emit_draw (ClutterCanvas *self)
   gboolean mapped_buffer;
   unsigned char *data;
   CoglBuffer *buffer;
-  int window_scale = 1;
   gboolean res;
   cairo_t *cr;
 
@@ -405,20 +342,11 @@ clutter_canvas_emit_draw (ClutterCanvas *self)
 
   priv->dirty = TRUE;
 
-  if (priv->scale_factor_set)
-    window_scale = priv->scale_factor;
-  else
-    g_object_get (clutter_settings_get_default (),
-                  "window-scaling-factor", &window_scale,
-                  NULL);
-
-  real_width = priv->width * window_scale;
-  real_height = priv->height * window_scale;
+  real_width = priv->width;
+  real_height = priv->height;
 
-  CLUTTER_NOTE (MISC, "Creating Cairo surface with size %d x %d (real: %d x %d, scale: %d)",
-                priv->width, priv->height,
-                real_width, real_height,
-                window_scale);
+  CLUTTER_NOTE (MISC, "Creating Cairo surface with size %d x %d",
+                priv->width, priv->height);
 
   if (priv->buffer == NULL)
     {
@@ -461,8 +389,6 @@ clutter_canvas_emit_draw (ClutterCanvas *self)
       mapped_buffer = FALSE;
     }
 
-  cairo_surface_set_device_scale (surface, window_scale, window_scale);
-
   self->priv->cr = cr = cairo_create (surface);
 
   g_signal_emit (self, canvas_signals[DRAW], 0,
@@ -636,81 +562,3 @@ clutter_canvas_set_size (ClutterCanvas *canvas,
 
   return clutter_canvas_invalidate_internal (canvas, width, height);
 }
-
-/**
- * clutter_canvas_set_scale_factor:
- * @canvas: a #ClutterCanvas
- * @scale: the scale factor, or -1 for the default
- *
- * Sets the scaling factor for the Cairo surface used by @canvas.
- *
- * This function should rarely be used.
- *
- * The default scaling factor of a #ClutterCanvas content uses the
- * #ClutterSettings:window-scaling-factor property, which is set by
- * the windowing system. By using this function it is possible to
- * override that setting.
- *
- * Changing the scale factor will invalidate the @canvas.
- *
- * Since: 1.18
- */
-void
-clutter_canvas_set_scale_factor (ClutterCanvas *canvas,
-                                 int            scale)
-{
-  ClutterCanvasPrivate *priv;
-  GObject *obj;
-
-  g_return_if_fail (CLUTTER_IS_CANVAS (canvas));
-  g_return_if_fail (scale != 0);
-
-  priv = canvas->priv;
-
-  if (scale < 0)
-    {
-      if (!priv->scale_factor_set)
-        return;
-
-      priv->scale_factor_set = FALSE;
-      priv->scale_factor = -1;
-    }
-  else
-    {
-      if (priv->scale_factor_set && priv->scale_factor == scale)
-        return;
-
-      priv->scale_factor_set = TRUE;
-      priv->scale_factor = scale;
-    }
-
-  clutter_content_invalidate (CLUTTER_CONTENT (canvas));
-
-  obj = G_OBJECT (canvas);
-
-  g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_FACTOR]);
-  g_object_notify_by_pspec (obj, obj_props[PROP_SCALE_FACTOR_SET]);
-}
-
-/**
- * clutter_canvas_get_scale_factor:
- * @canvas: a #ClutterCanvas
- *
- * Retrieves the scaling factor of @canvas, as set using
- * clutter_canvas_set_scale_factor().
- *
- * Return value: the scaling factor, or -1 if the @canvas
- *   uses the default from #ClutterSettings
- *
- * Since: 1.18
- */
-int
-clutter_canvas_get_scale_factor (ClutterCanvas *canvas)
-{
-  g_return_val_if_fail (CLUTTER_IS_CANVAS (canvas), -1);
-
-  if (!canvas->priv->scale_factor_set)
-    return -1;
-
-  return canvas->priv->scale_factor;
-}
diff --git a/clutter/clutter/clutter-settings.c b/clutter/clutter/clutter-settings.c
index bfe68a5..58ddc30 100644
--- a/clutter/clutter/clutter-settings.c
+++ b/clutter/clutter/clutter-settings.c
@@ -77,9 +77,7 @@ struct _ClutterSettings
 
   guint password_hint_time;
 
-  gint window_scaling_factor;
   gint unscaled_font_dpi;
-  guint fixed_scaling_factor : 1;
 };
 
 struct _ClutterSettingsClass
@@ -112,7 +110,6 @@ enum
 
   PROP_PASSWORD_HINT_TIME,
 
-  PROP_WINDOW_SCALING_FACTOR,
   PROP_UNSCALED_FONT_DPI,
 
   PROP_LAST
@@ -355,14 +352,6 @@ clutter_settings_set_property (GObject      *gobject,
       self->password_hint_time = g_value_get_uint (value);
       break;
 
-    case PROP_WINDOW_SCALING_FACTOR:
-      if (!self->fixed_scaling_factor)
-        {
-          self->window_scaling_factor = g_value_get_int (value);
-          self->fixed_scaling_factor = TRUE;
-        }
-      break;
-
     case PROP_UNSCALED_FONT_DPI:
       self->font_dpi = g_value_get_int (value);
       settings_update_resolution (self);
@@ -382,14 +371,7 @@ clutter_settings_set_property_internal (ClutterSettings *self,
 
   property = g_intern_string (property);
 
-  if (property == I_("window-scaling-factor") &&
-      self->fixed_scaling_factor)
-    return;
-
   g_object_set_property (G_OBJECT (self), property, value);
-
-  if (property == I_("window-scaling-factor"))
-    self->fixed_scaling_factor = FALSE;
 }
 
 static void
@@ -446,10 +428,6 @@ clutter_settings_get_property (GObject    *gobject,
       g_value_set_uint (value, self->password_hint_time);
       break;
 
-    case PROP_WINDOW_SCALING_FACTOR:
-      g_value_set_int (value, self->window_scaling_factor);
-      break;
-
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
       break;
@@ -677,14 +655,6 @@ clutter_settings_class_init (ClutterSettingsClass *klass)
                       500,
                       CLUTTER_PARAM_READWRITE);
 
-  obj_props[PROP_WINDOW_SCALING_FACTOR] =
-    g_param_spec_int ("window-scaling-factor",
-                      P_("Window Scaling Factor"),
-                      P_("The scaling factor to be applied to windows"),
-                      1, G_MAXINT,
-                      1,
-                      CLUTTER_PARAM_READWRITE);
-
   obj_props[PROP_FONTCONFIG_TIMESTAMP] =
     g_param_spec_uint ("fontconfig-timestamp",
                        P_("Fontconfig configuration timestamp"),
@@ -722,8 +692,6 @@ clutter_settings_class_init (ClutterSettingsClass *klass)
 static void
 clutter_settings_init (ClutterSettings *self)
 {
-  const char *scale_str;
-
   self->resolution = -1.0;
 
   self->font_dpi = -1;
@@ -742,18 +710,6 @@ clutter_settings_init (ClutterSettings *self)
   self->xft_rgba = NULL;
 
   self->long_press_duration = 500;
-
-  /* if the scaling factor was set by the environment we ignore
-   * any explicit setting
-   */
-  scale_str = g_getenv ("CLUTTER_SCALE");
-  if (scale_str != NULL)
-    {
-      self->window_scaling_factor = atol (scale_str);
-      self->fixed_scaling_factor = TRUE;
-    }
-  else
-    self->window_scaling_factor = 1;
 }
 
 /**
diff --git a/clutter/clutter/clutter-stage-window.c b/clutter/clutter/clutter-stage-window.c
index 97eb5e4..c9a227b 100644
--- a/clutter/clutter/clutter-stage-window.c
+++ b/clutter/clutter/clutter-stage-window.c
@@ -303,33 +303,6 @@ _clutter_stage_window_can_clip_redraws (ClutterStageWindow *window)
   return FALSE;
 }
 
-void
-_clutter_stage_window_set_scale_factor (ClutterStageWindow *window,
-                                        int                 factor)
-{
-  ClutterStageWindowIface *iface;
-
-  g_return_if_fail (CLUTTER_IS_STAGE_WINDOW (window));
-
-  iface = CLUTTER_STAGE_WINDOW_GET_IFACE (window);
-  if (iface->set_scale_factor != NULL)
-    iface->set_scale_factor (window, factor);
-}
-
-int
-_clutter_stage_window_get_scale_factor (ClutterStageWindow *window)
-{
-  ClutterStageWindowIface *iface;
-
-  g_return_val_if_fail (CLUTTER_IS_STAGE_WINDOW (window), 1);
-
-  iface = CLUTTER_STAGE_WINDOW_GET_IFACE (window);
-  if (iface->get_scale_factor != NULL)
-    return iface->get_scale_factor (window);
-
-  return 1;
-}
-
 GList *
 _clutter_stage_window_get_views (ClutterStageWindow *window)
 {
diff --git a/clutter/clutter/clutter-stage-window.h b/clutter/clutter/clutter-stage-window.h
index 452f9de..40a35ba 100644
--- a/clutter/clutter/clutter-stage-window.h
+++ b/clutter/clutter/clutter-stage-window.h
@@ -83,9 +83,6 @@ struct _ClutterStageWindowIface
 
   gboolean          (* can_clip_redraws)        (ClutterStageWindow *stage_window);
 
-  void              (* set_scale_factor)        (ClutterStageWindow *stage_window,
-                                                 int                 factor);
-  int               (* get_scale_factor)        (ClutterStageWindow *stage_window);
   GList            *(* get_views)               (ClutterStageWindow *stage_window);
   int64_t           (* get_frame_counter)       (ClutterStageWindow *stage_window);
   void              (* finish_frame)            (ClutterStageWindow *stage_window);
@@ -140,10 +137,6 @@ void              _clutter_stage_window_get_dirty_pixel         (ClutterStageWin
 
 gboolean          _clutter_stage_window_can_clip_redraws        (ClutterStageWindow *window);
 
-void              _clutter_stage_window_set_scale_factor        (ClutterStageWindow *window,
-                                                                 int                 factor);
-int               _clutter_stage_window_get_scale_factor        (ClutterStageWindow *window);
-
 GList *           _clutter_stage_window_get_views               (ClutterStageWindow *window);
 
 void              _clutter_stage_window_finish_frame            (ClutterStageWindow *window);
diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c
index a43f3b7..18dc6d5 100644
--- a/clutter/clutter/clutter-stage.c
+++ b/clutter/clutter/clutter-stage.c
@@ -364,7 +364,6 @@ clutter_stage_allocate (ClutterActor           *self,
   float new_width, new_height;
   float width, height;
   cairo_rectangle_int_t window_size;
-  int scale_factor;
 
   if (priv->impl == NULL)
     return;
@@ -465,11 +464,6 @@ clutter_stage_allocate (ClutterActor           *self,
    */
   _clutter_stage_window_get_geometry (priv->impl, &window_size);
 
-  scale_factor = _clutter_stage_window_get_scale_factor (priv->impl);
-
-  window_size.width *= scale_factor;
-  window_size.height *= scale_factor;
-
   cogl_onscreen_clutter_backend_set_size (window_size.width,
                                           window_size.height);
 
@@ -630,15 +624,13 @@ clutter_stage_do_paint_view (ClutterStage                *stage,
   float clip_poly[8];
   float viewport[4];
   cairo_rectangle_int_t geom;
-  int window_scale;
 
   _clutter_stage_window_get_geometry (priv->impl, &geom);
-  window_scale = _clutter_stage_window_get_scale_factor (priv->impl);
 
-  viewport[0] = priv->viewport[0] * window_scale;
-  viewport[1] = priv->viewport[1] * window_scale;
-  viewport[2] = priv->viewport[2] * window_scale;
-  viewport[3] = priv->viewport[3] * window_scale;
+  viewport[0] = priv->viewport[0];
+  viewport[1] = priv->viewport[1];
+  viewport[2] = priv->viewport[2];
+  viewport[3] = priv->viewport[3];
 
   if (!clip)
     {
@@ -646,16 +638,14 @@ clutter_stage_do_paint_view (ClutterStage                *stage,
       clip = &view_layout;
     }
 
-  clip_poly[0] = MAX (clip->x * window_scale, 0);
-  clip_poly[1] = MAX (clip->y * window_scale, 0);
+  clip_poly[0] = MAX (clip->x, 0);
+  clip_poly[1] = MAX (clip->y, 0);
 
-  clip_poly[2] = MIN ((clip->x + clip->width) * window_scale,
-                      geom.width * window_scale);
+  clip_poly[2] = MIN (clip->x + clip->width, geom.width);
   clip_poly[3] = clip_poly[1];
 
   clip_poly[4] = clip_poly[2];
-  clip_poly[5] = MIN ((clip->y + clip->height) * window_scale,
-                      geom.height * window_scale);
+  clip_poly[5] = MIN (clip->y + clip->height, geom.height);
 
   clip_poly[6] = clip_poly[0];
   clip_poly[7] = clip_poly[5];
@@ -1378,9 +1368,7 @@ _clutter_stage_do_pick_on_view (ClutterStage     *stage,
   gint dirty_y;
   gint read_x;
   gint read_y;
-  int window_scale;
   float fb_width, fb_height;
-  int view_scale;
   int fb_scale;
   int viewport_offset_x;
   int viewport_offset_y;
@@ -1388,13 +1376,11 @@ _clutter_stage_do_pick_on_view (ClutterStage     *stage,
   priv = stage->priv;
 
   context = _clutter_context_get_default ();
-  window_scale = _clutter_stage_window_get_scale_factor (priv->impl);
-  view_scale = clutter_stage_view_get_scale (view);
-  fb_scale = window_scale * view_scale;
+  fb_scale = clutter_stage_view_get_scale (view);
   clutter_stage_view_get_layout (view, &view_layout);
 
-  fb_width = view_layout.width * view_scale;
-  fb_height = view_layout.height * view_scale;
+  fb_width = view_layout.width * fb_scale;
+  fb_height = view_layout.height * fb_scale;
   cogl_push_framebuffer (fb);
 
   /* needed for when a context switch happens */
@@ -1404,8 +1390,8 @@ _clutter_stage_do_pick_on_view (ClutterStage     *stage,
    * picking to not work at all, so setting it the whole framebuffer content
    * for now. */
   cogl_framebuffer_push_scissor_clip (fb, 0, 0,
-                                      view_layout.width * view_scale,
-                                      view_layout.height * view_scale);
+                                      view_layout.width * fb_scale,
+                                      view_layout.height * fb_scale);
 
   _clutter_stage_window_get_dirty_pixel (priv->impl, view, &dirty_x, &dirty_y);
 
@@ -1435,7 +1421,7 @@ _clutter_stage_do_pick_on_view (ClutterStage     *stage,
   CLUTTER_NOTE (PICK, "Performing pick at %i,%i on view %dx%d+%d+%d s: %d",
                 x, y,
                 view_layout.width, view_layout.height,
-                view_layout.x, view_layout.y, view_scale);
+                view_layout.x, view_layout.y, fb_scale);
 
   cogl_color_init_from_4ub (&stage_pick_id, 255, 255, 255, 255);
   cogl_clear (&stage_pick_id, COGL_BUFFER_BIT_COLOR | COGL_BUFFER_BIT_DEPTH);
@@ -2214,7 +2200,6 @@ clutter_stage_init (ClutterStage *self)
   ClutterStagePrivate *priv;
   ClutterStageWindow *impl;
   ClutterBackend *backend;
-  int window_scale = 1;
   GError *error;
 
   /* a stage is a top-level object */
@@ -2232,7 +2217,6 @@ clutter_stage_init (ClutterStage *self)
     {
       _clutter_stage_set_window (self, impl);
       _clutter_stage_window_get_geometry (priv->impl, &geom);
-      window_scale = _clutter_stage_window_get_scale_factor (priv->impl);
     }
   else
     {
@@ -2286,8 +2270,8 @@ clutter_stage_init (ClutterStage *self)
                                       priv->perspective.aspect,
                                       priv->perspective.z_near,
                                       50, /* distance to 2d plane */
-                                      geom.width * window_scale,
-                                      geom.height * window_scale);
+                                      geom.width,
+                                      geom.height);
 
 
   /* FIXME - remove for 2.0 */
@@ -3416,16 +3400,6 @@ clutter_stage_ensure_viewport (ClutterStage *stage)
   clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
 }
 
-static void
-clutter_stage_apply_scale (ClutterStage *stage)
-{
-  int factor;
-
-  factor = _clutter_stage_window_get_scale_factor (stage->priv->impl);
-  if (factor != 1)
-    cogl_matrix_scale (&stage->priv->view, factor, factor, 1.f);
-}
-
 # define _DEG_TO_RAD(d)         ((d) * ((float) G_PI / 180.0f))
 
 /* This calculates a distance into the view frustum to position the
@@ -3572,7 +3546,6 @@ _clutter_stage_maybe_setup_viewport (ClutterStage     *stage,
     {
       cairo_rectangle_int_t view_layout;
       ClutterPerspective perspective;
-      int window_scale;
       int fb_scale;
       int viewport_offset_x;
       int viewport_offset_y;
@@ -3583,8 +3556,7 @@ _clutter_stage_maybe_setup_viewport (ClutterStage     *stage,
                     priv->viewport[2],
                     priv->viewport[3]);
 
-      window_scale = _clutter_stage_window_get_scale_factor (priv->impl);
-      fb_scale = window_scale * clutter_stage_view_get_scale (view);
+      fb_scale = clutter_stage_view_get_scale (view);
       clutter_stage_view_get_layout (view, &view_layout);
 
       viewport_offset_x = view_layout.x * fb_scale;
@@ -3623,10 +3595,8 @@ _clutter_stage_maybe_setup_viewport (ClutterStage     *stage,
                                           perspective.aspect,
                                           perspective.z_near,
                                           z_2d,
-                                          priv->viewport[2] * window_scale,
-                                          priv->viewport[3] * window_scale);
-
-      clutter_stage_apply_scale (stage);
+                                          priv->viewport[2],
+                                          priv->viewport[3]);
 
       clutter_stage_view_set_dirty_viewport (view, FALSE);
     }
@@ -4641,23 +4611,6 @@ clutter_stage_skip_sync_delay (ClutterStage *stage)
     _clutter_stage_window_schedule_update (stage_window, -1);
 }
 
-void
-_clutter_stage_set_scale_factor (ClutterStage *stage,
-                                 int           factor)
-{
-  ClutterStagePrivate *priv = stage->priv;
-
-  if (CLUTTER_ACTOR_IN_DESTRUCTION (stage))
-    return;
-
-  if (priv->impl == NULL)
-    return;
-
-  _clutter_stage_window_set_scale_factor (priv->impl, factor);
-
-  clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
-}
-
 int64_t
 clutter_stage_get_frame_counter (ClutterStage          *stage)
 {
diff --git a/clutter/clutter/cogl/clutter-stage-cogl.c b/clutter/clutter/cogl/clutter-stage-cogl.c
index 1d626f6..02a0955 100644
--- a/clutter/clutter/cogl/clutter-stage-cogl.c
+++ b/clutter/clutter/cogl/clutter-stage-cogl.c
@@ -503,7 +503,6 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window,
   cairo_rectangle_int_t swap_region;
   cairo_rectangle_int_t clip_region;
   gboolean clip_region_empty;
-  int window_scale;
   int fb_scale;
 
   wrapper = CLUTTER_ACTOR (stage_cogl->wrapper);
@@ -558,8 +557,7 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window,
 
   clip_region_empty = may_use_clipped_redraw && clip_region.width == 0;
 
-  window_scale = _clutter_stage_window_get_scale_factor (stage_window);
-  fb_scale = window_scale * clutter_stage_view_get_scale (view);
+  fb_scale = clutter_stage_view_get_scale (view);
 
   swap_with_damage = FALSE;
   if (has_buffer_age)
diff --git a/clutter/clutter/x11/clutter-device-manager-core-x11.c 
b/clutter/clutter/x11/clutter-device-manager-core-x11.c
index a410600..9fb4776 100644
--- a/clutter/clutter/x11/clutter-device-manager-core-x11.c
+++ b/clutter/clutter/x11/clutter-device-manager-core-x11.c
@@ -136,7 +136,6 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator,
   ClutterTranslateReturn res;
   ClutterStage *stage;
   XEvent *xevent;
-  int window_scale;
 
   manager_x11 = CLUTTER_DEVICE_MANAGER_X11 (translator);
   backend_x11 = CLUTTER_BACKEND_X11 (clutter_get_default_backend ());
@@ -152,8 +151,6 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator,
 
   stage_x11 = CLUTTER_STAGE_X11 (_clutter_stage_get_window (stage));
 
-  window_scale = stage_x11->scale_factor;
-
   event->any.stage = stage;
 
   res = CLUTTER_TRANSLATE_CONTINUE;
@@ -226,8 +223,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator,
             event->scroll.direction = CLUTTER_SCROLL_RIGHT;
 
           event->scroll.time = xevent->xbutton.time;
-          event->scroll.x = xevent->xbutton.x / window_scale;
-          event->scroll.y = xevent->xbutton.y / window_scale;
+          event->scroll.x = xevent->xbutton.x;
+          event->scroll.y = xevent->xbutton.y;
           event->scroll.modifier_state = xevent->xbutton.state;
           event->scroll.axes = NULL;
           break;
@@ -235,8 +232,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator,
         default:
           event->button.type = event->type = CLUTTER_BUTTON_PRESS;
           event->button.time = xevent->xbutton.time;
-          event->button.x = xevent->xbutton.x / window_scale;
-          event->button.y = xevent->xbutton.y / window_scale;
+          event->button.x = xevent->xbutton.x;
+          event->button.y = xevent->xbutton.y;
           event->button.modifier_state = xevent->xbutton.state;
           event->button.button = xevent->xbutton.button;
           event->button.axes = NULL;
@@ -269,8 +266,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator,
 
       event->button.type = event->type = CLUTTER_BUTTON_RELEASE;
       event->button.time = xevent->xbutton.time;
-      event->button.x = xevent->xbutton.x / window_scale;
-      event->button.y = xevent->xbutton.y / window_scale;
+      event->button.x = xevent->xbutton.x;
+      event->button.y = xevent->xbutton.y;
       event->button.modifier_state = xevent->xbutton.state;
       event->button.button = xevent->xbutton.button;
       event->button.axes = NULL;
@@ -287,8 +284,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator,
 
       event->motion.type = event->type = CLUTTER_MOTION;
       event->motion.time = xevent->xmotion.time;
-      event->motion.x = xevent->xmotion.x / window_scale;
-      event->motion.y = xevent->xmotion.y / window_scale;
+      event->motion.x = xevent->xmotion.x;
+      event->motion.y = xevent->xmotion.y;
       event->motion.modifier_state = xevent->xmotion.state;
       event->motion.axes = NULL;
       clutter_event_set_device (event, manager_x11->core_pointer);
@@ -301,8 +298,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator,
 
       event->crossing.type = CLUTTER_ENTER;
       event->crossing.time = xevent->xcrossing.time;
-      event->crossing.x = xevent->xcrossing.x / window_scale;
-      event->crossing.y = xevent->xcrossing.y / window_scale;
+      event->crossing.x = xevent->xcrossing.x;
+      event->crossing.y = xevent->xcrossing.y;
       event->crossing.source = CLUTTER_ACTOR (stage);
       event->crossing.related = NULL;
       clutter_event_set_device (event, manager_x11->core_pointer);
@@ -327,8 +324,8 @@ clutter_device_manager_x11_translate_event (ClutterEventTranslator *translator,
 
       event->crossing.type = CLUTTER_LEAVE;
       event->crossing.time = xevent->xcrossing.time;
-      event->crossing.x = xevent->xcrossing.x / window_scale;
-      event->crossing.y = xevent->xcrossing.y / window_scale;
+      event->crossing.x = xevent->xcrossing.x;
+      event->crossing.y = xevent->xcrossing.y;
       event->crossing.source = CLUTTER_ACTOR (stage);
       event->crossing.related = NULL;
       clutter_event_set_device (event, manager_x11->core_pointer);
diff --git a/clutter/clutter/x11/clutter-device-manager-xi2.c 
b/clutter/clutter/x11/clutter-device-manager-xi2.c
index 8bddebf..24d1432 100644
--- a/clutter/clutter/x11/clutter-device-manager-xi2.c
+++ b/clutter/clutter/x11/clutter-device-manager-xi2.c
@@ -861,8 +861,8 @@ translate_coords (ClutterStageX11 *stage_x11,
 
   clutter_actor_get_size (stage, &stage_width, &stage_height);
 
-  *x_out = CLAMP (event_x / stage_x11->scale_factor, 0, stage_width);
-  *y_out = CLAMP (event_y / stage_x11->scale_factor, 0, stage_height);
+  *x_out = CLAMP (event_x, 0, stage_width);
+  *y_out = CLAMP (event_y, 0, stage_height);
 }
 
 static gdouble
diff --git a/clutter/clutter/x11/clutter-settings-x11.h b/clutter/clutter/x11/clutter-settings-x11.h
index 3e1033a..e76eb2d 100644
--- a/clutter/clutter/x11/clutter-settings-x11.h
+++ b/clutter/clutter/x11/clutter-settings-x11.h
@@ -15,7 +15,6 @@ static const struct {
   { "Xft/HintStyle",           "font-hint-style" },
   { "Xft/RGBA",                "font-subpixel-order" },
   { "Fontconfig/Timestamp",    "fontconfig-timestamp" },
-  { "Gdk/WindowScalingFactor", "window-scaling-factor" },
   { "Gdk/UnscaledDPI",         "unscaled-font-dpi" },
 };
 
diff --git a/clutter/clutter/x11/clutter-stage-x11.c b/clutter/clutter/x11/clutter-stage-x11.c
index 39ff031..1ee2f40 100644
--- a/clutter/clutter/x11/clutter-stage-x11.c
+++ b/clutter/clutter/x11/clutter-stage-x11.c
@@ -162,10 +162,10 @@ clutter_stage_x11_fix_window_size (ClutterStageX11 *stage_x11,
                                       &min_height);
 
       if (new_width <= 0)
-        new_width = min_width * stage_x11->scale_factor;
+        new_width = min_width;
 
       if (new_height <= 0)
-        new_height = min_height * stage_x11->scale_factor;
+        new_height = min_height;
 
       size_hints->flags = 0;
 
@@ -175,8 +175,8 @@ clutter_stage_x11_fix_window_size (ClutterStageX11 *stage_x11,
         {
           if (resize)
             {
-              size_hints->min_width = min_width * stage_x11->scale_factor;
-              size_hints->min_height = min_height * stage_x11->scale_factor;
+              size_hints->min_width = min_width;
+              size_hints->min_height = min_height;
               size_hints->flags = PMinSize;
             }
           else
@@ -236,8 +236,8 @@ clutter_stage_x11_get_geometry (ClutterStageWindow    *stage_window,
       return;
     }
 
-  geometry->width = stage_x11->xwin_width / stage_x11->scale_factor;
-  geometry->height = stage_x11->xwin_height / stage_x11->scale_factor;
+  geometry->width = stage_x11->xwin_width;
+  geometry->height = stage_x11->xwin_height;
 }
 
 static void
@@ -255,8 +255,8 @@ clutter_stage_x11_resize (ClutterStageWindow *stage_window,
        * so we need to manually set the size and queue a relayout on the
        * stage here (as is normally done in response to ConfigureNotify).
        */
-      stage_x11->xwin_width = width * stage_x11->scale_factor;
-      stage_x11->xwin_height = height * stage_x11->scale_factor;
+      stage_x11->xwin_width = width;
+      stage_x11->xwin_height = height;
       clutter_actor_queue_relayout (CLUTTER_ACTOR (stage_cogl->wrapper));
       return;
     }
@@ -277,9 +277,6 @@ clutter_stage_x11_resize (ClutterStageWindow *stage_window,
 
   CLUTTER_NOTE (BACKEND, "New size received: (%d, %d)", width, height);
 
-  width *= stage_x11->scale_factor;
-  height *= stage_x11->scale_factor;
-
   if (stage_x11->xwin != None)
     {
       clutter_stage_x11_fix_window_size (stage_x11, width, height);
@@ -401,20 +398,6 @@ set_cursor_visible (ClutterStageX11 *stage_x11)
 }
 
 static void
-on_window_scaling_factor_notify (GObject         *settings,
-                                 GParamSpec      *pspec,
-                                 ClutterStageX11 *stage_x11)
-{
-  g_object_get (settings,
-                "window-scaling-factor", &stage_x11->scale_factor,
-                NULL);
-
-  clutter_stage_x11_resize (CLUTTER_STAGE_WINDOW (stage_x11),
-                            stage_x11->xwin_width,
-                            stage_x11->xwin_height);
-}
-
-static void
 clutter_stage_x11_unrealize (ClutterStageWindow *stage_window)
 {
   ClutterStageCogl *stage_cogl = CLUTTER_STAGE_COGL (stage_window);
@@ -643,12 +626,8 @@ clutter_stage_x11_realize (ClutterStageWindow *stage_window)
 
   CLUTTER_NOTE (BACKEND, "Wrapper size: %.2f x %.2f", width, height);
 
-  width = width * (float) stage_x11->scale_factor;
-  height = height * (float) stage_x11->scale_factor;
-
-  CLUTTER_NOTE (BACKEND, "Creating a new Cogl onscreen surface: %.2f x %.2f (factor: %d)",
-                width, height,
-                stage_x11->scale_factor);
+  CLUTTER_NOTE (BACKEND, "Creating a new Cogl onscreen surface: %.2f x %.2f",
+                width, height);
 
   stage_x11->onscreen = cogl_onscreen_new (backend->cogl_context, width, height);
 
@@ -910,28 +889,6 @@ clutter_stage_x11_can_clip_redraws (ClutterStageWindow *stage_window)
 }
 
 static void
-clutter_stage_x11_set_scale_factor (ClutterStageWindow *stage_window,
-                                    int                 factor)
-{
-  ClutterStageX11 *stage_x11 = CLUTTER_STAGE_X11 (stage_window);
-
-  if (stage_x11->scale_factor == factor)
-    return;
-
-  stage_x11->scale_factor = factor;
-
-  clutter_stage_x11_resize (stage_window, stage_x11->xwin_width, stage_x11->xwin_height);
-}
-
-static int
-clutter_stage_x11_get_scale_factor (ClutterStageWindow *stage_window)
-{
-  ClutterStageX11 *stage_x11 = CLUTTER_STAGE_X11 (stage_window);
-
-  return stage_x11->scale_factor;
-}
-
-static void
 ensure_legacy_view (ClutterStageWindow *stage_window)
 {
   ClutterStageX11 *stage_x11 = CLUTTER_STAGE_X11 (stage_window);
@@ -1002,8 +959,6 @@ clutter_stage_x11_class_init (ClutterStageX11Class *klass)
 static void
 clutter_stage_x11_init (ClutterStageX11 *stage)
 {
-  ClutterSettings *settings;
-
   stage->xwin = None;
   stage->xwin_width = 640;
   stage->xwin_height = 480;
@@ -1016,12 +971,6 @@ clutter_stage_x11_init (ClutterStageX11 *stage)
   stage->accept_focus = TRUE;
 
   stage->title = NULL;
-
-  settings = clutter_settings_get_default ();
-  g_signal_connect (settings, "notify::window-scaling-factor",
-                    G_CALLBACK (on_window_scaling_factor_notify),
-                    stage);
-  on_window_scaling_factor_notify (G_OBJECT (settings), NULL, stage);
 }
 
 static void
@@ -1041,8 +990,6 @@ clutter_stage_window_iface_init (ClutterStageWindowIface *iface)
   iface->realize = clutter_stage_x11_realize;
   iface->unrealize = clutter_stage_x11_unrealize;
   iface->can_clip_redraws = clutter_stage_x11_can_clip_redraws;
-  iface->set_scale_factor = clutter_stage_x11_set_scale_factor;
-  iface->get_scale_factor = clutter_stage_x11_get_scale_factor;
   iface->get_views = clutter_stage_x11_get_views;
   iface->get_frame_counter = clutter_stage_x11_get_frame_counter;
 }
@@ -1167,8 +1114,8 @@ clutter_stage_x11_translate_event (ClutterEventTranslator *translator,
               stage_x11->xwin_height = xevent->xconfigure.height;
             }
 
-          stage_width = xevent->xconfigure.width / stage_x11->scale_factor;
-          stage_height = xevent->xconfigure.height / stage_x11->scale_factor;
+          stage_width = xevent->xconfigure.width;
+          stage_height = xevent->xconfigure.height;
           clutter_actor_set_size (CLUTTER_ACTOR (stage), stage_width, stage_height);
 
           if (size_changed)
@@ -1335,10 +1282,10 @@ clutter_stage_x11_translate_event (ClutterEventTranslator *translator,
                       expose->width,
                       expose->height);
 
-        clip.x = expose->x / stage_x11->scale_factor;
-        clip.y = expose->y / stage_x11->scale_factor;
-        clip.width = expose->width / stage_x11->scale_factor;
-        clip.height = expose->height / stage_x11->scale_factor;
+        clip.x = expose->x;
+        clip.y = expose->y;
+        clip.width = expose->width;
+        clip.height = expose->height;
         clutter_actor_queue_redraw_with_clip (CLUTTER_ACTOR (stage), &clip);
       }
       break;
@@ -1504,8 +1451,8 @@ set_foreign_window_callback (ClutterActor *actor,
   fwd->stage_x11->xwin = fwd->xwindow;
   fwd->stage_x11->is_foreign_xwin = TRUE;
 
-  fwd->stage_x11->xwin_width = fwd->geom.width * fwd->stage_x11->scale_factor;
-  fwd->stage_x11->xwin_height = fwd->geom.height * fwd->stage_x11->scale_factor;
+  fwd->stage_x11->xwin_width = fwd->geom.width;
+  fwd->stage_x11->xwin_height = fwd->geom.height;
 
   clutter_actor_set_size (actor, fwd->geom.width, fwd->geom.height);
 
@@ -1599,8 +1546,8 @@ clutter_x11_set_stage_foreign (ClutterStage *stage,
 
   fwd.geom.x = x;
   fwd.geom.y = y;
-  fwd.geom.width = width / stage_x11->scale_factor;
-  fwd.geom.height = height / stage_x11->scale_factor;
+  fwd.geom.width = width;
+  fwd.geom.height = height;
 
   actor = CLUTTER_ACTOR (stage);
 
diff --git a/clutter/clutter/x11/clutter-stage-x11.h b/clutter/clutter/x11/clutter-stage-x11.h
index 98ba53b..7b3ab1f 100644
--- a/clutter/clutter/x11/clutter-stage-x11.h
+++ b/clutter/clutter/x11/clutter-stage-x11.h
@@ -69,8 +69,6 @@ struct _ClutterStageX11
 
   ClutterStageX11State wm_state;
 
-  int scale_factor;
-
   guint is_foreign_xwin       : 1;
   guint fullscreening         : 1;
   guint is_cursor_visible     : 1;
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index 7d3ebfa..f33e300 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -948,7 +948,6 @@ meta_init_backend (GType backend_gtype)
 void
 meta_clutter_init (void)
 {
-  ClutterSettings *clutter_settings;
   GSource *source;
 
   clutter_set_custom_backend_func (meta_get_clutter_backend);
@@ -959,13 +958,6 @@ meta_clutter_init (void)
       exit (1);
     }
 
-  /*
-   * XXX: We cannot handle high dpi scaling yet, so fix the scale to 1
-   * for now.
-   */
-  clutter_settings = clutter_settings_get_default ();
-  g_object_set (clutter_settings, "window-scaling-factor", 1, NULL);
-
   source = g_source_new (&event_funcs, sizeof (GSource));
   g_source_attach (source, NULL);
   g_source_unref (source);


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