Commit 2d0bdee0 authored by Alexander Larsson's avatar Alexander Larsson

pixel cache: Allow growing of cache surface

If the new requested surface size is enough larger than the previous
one (but the old is still larger than the absolute minimum),
reallocate it anyway.

This fixes an issue where the text view initially requested a really
small extra size which was then increased but that didn't "take".
parent d96882bc
......@@ -26,8 +26,9 @@
to make scrolling more efficient */
#define DEFAULT_EXTRA_SIZE 64
/* When resizing viewport to smaller we allow this extra
/* When resizing viewport we allow this extra
size to avoid constantly reallocating when resizing */
#define ALLOW_SMALLER_SIZE 32
#define ALLOW_LARGER_SIZE 32
struct _GtkPixelCache {
......@@ -184,9 +185,9 @@ _gtk_pixel_cache_create_surface_if_needed (GtkPixelCache *cache,
/* If current surface can't fit view_rect or is too large, kill it */
if (cache->surface != NULL &&
(cairo_surface_get_content (cache->surface) != content ||
cache->surface_w < view_rect->width ||
cache->surface_w < MAX(view_rect->width, surface_w - ALLOW_SMALLER_SIZE) ||
cache->surface_w > surface_w + ALLOW_LARGER_SIZE ||
cache->surface_h < view_rect->height ||
cache->surface_h < MAX(view_rect->height, surface_h - ALLOW_SMALLER_SIZE) ||
cache->surface_h > surface_h + ALLOW_LARGER_SIZE ||
cache->surface_scale != gdk_window_get_scale_factor (window)))
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment