[gtk+/wip/window-scales: 101/108] pixel-cache: Refresh pixel cache on window scale factor changes.



commit 5723cd9b56ac162af4c7d9d5de9041407398f89e
Author: Alexander Larsson <alexl redhat com>
Date:   Mon Jun 3 17:04:03 2013 +0200

    pixel-cache: Refresh pixel cache on window scale factor changes.

 gtk/gtkpixelcache.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkpixelcache.c b/gtk/gtkpixelcache.c
index 9b2f1d8..882dbcb 100644
--- a/gtk/gtkpixelcache.c
+++ b/gtk/gtkpixelcache.c
@@ -38,6 +38,7 @@ struct _GtkPixelCache {
   int surface_y;
   int surface_w;
   int surface_h;
+  double surface_scale;
 
   /* may be null if not dirty */
   cairo_region_t *surface_dirty;
@@ -159,7 +160,8 @@ _gtk_pixel_cache_create_surface_if_needed (GtkPixelCache         *cache,
        cache->surface_w < view_rect->width ||
        cache->surface_w > surface_w + ALLOW_LARGER_SIZE ||
        cache->surface_h < view_rect->height ||
-       cache->surface_h > surface_h + ALLOW_LARGER_SIZE))
+       cache->surface_h > surface_h + ALLOW_LARGER_SIZE ||
+       cache->surface_scale != gdk_window_get_scale_factor (window)))
     {
       cairo_surface_destroy (cache->surface);
       cache->surface = NULL;
@@ -178,6 +180,7 @@ _gtk_pixel_cache_create_surface_if_needed (GtkPixelCache         *cache,
       cache->surface_y = -canvas_rect->y;
       cache->surface_w = surface_w;
       cache->surface_h = surface_h;
+      cache->surface_scale = gdk_window_get_scale_factor (window);
 
       cache->surface =
        gdk_window_create_similar_surface (window, content,


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