Mercurial > hg > forks > geeqie
changeset 1898:c72ca737fdcc
fixed redrawing on expose event
author | Vladimir Nadvornik <nadvornik@suse.cz> |
---|---|
date | Fri, 25 Mar 2011 23:14:01 +0100 |
parents | b1fe543de73a |
children | 1f381b37c2b1 |
files | src/pixbuf-renderer.c src/pixbuf-renderer.h src/renderer-tiles.c |
diffstat | 3 files changed, 20 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/src/pixbuf-renderer.c Fri Mar 25 22:09:59 2011 +0100 +++ b/src/pixbuf-renderer.c Fri Mar 25 23:14:01 2011 +0100 @@ -969,10 +969,10 @@ static void pr_redraw(PixbufRenderer *pr, gboolean new_data) { pr->renderer->queue_clear(pr->renderer); - pr->renderer->queue(pr->renderer, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, new_data, FALSE); + pr->renderer->redraw(pr->renderer, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, new_data, FALSE); if (pr->renderer2) { pr->renderer2->queue_clear(pr->renderer2); - pr->renderer2->queue(pr->renderer2, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, new_data, FALSE); + pr->renderer2->redraw(pr->renderer2, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, new_data, FALSE); } } @@ -1958,23 +1958,11 @@ { gint x, y; - - x = MAX(0, (gint)area->x - pr->x_offset + pr->x_scroll); - y = MAX(0, (gint)area->y - pr->y_offset + pr->y_scroll); - - pr->renderer->border_draw(pr->renderer, area->x, area->y, area->width, area->height); - pr->renderer->queue(pr->renderer, - x, y, - MIN((gint)area->width, pr->width - x), - MIN((gint)area->height, pr->height - y), + pr->renderer->redraw(pr->renderer, area->x, area->y, area->width, area->height, FALSE, TILE_RENDER_ALL, FALSE, FALSE); if (pr->renderer2) { - pr->renderer2->border_draw(pr->renderer2, area->x, area->y, area->width, area->height); - pr->renderer2->queue(pr->renderer2, - x, y, - MIN((gint)area->width, pr->width - x), - MIN((gint)area->height, pr->height - y), + pr->renderer2->redraw(pr->renderer2, area->x, area->y, area->width, area->height, FALSE, TILE_RENDER_ALL, FALSE, FALSE); } }
--- a/src/pixbuf-renderer.h Fri Mar 25 22:09:59 2011 +0100 +++ b/src/pixbuf-renderer.h Fri Mar 25 23:14:01 2011 +0100 @@ -76,7 +76,7 @@ struct _RendererFuncs { - void (*queue)(void *renderer, gint x, gint y, gint w, gint h, + void (*redraw)(void *renderer, gint x, gint y, gint w, gint h, gint clamp, ImageRenderType render, gboolean new_data, gboolean only_existing); void (*area_changed)(void *renderer, gint src_x, gint src_y, gint src_w, gint src_h); void (*queue_clear)(void *renderer);
--- a/src/renderer-tiles.c Fri Mar 25 22:09:59 2011 +0100 +++ b/src/renderer-tiles.c Fri Mar 25 23:14:01 2011 +0100 @@ -2018,16 +2018,25 @@ rt_queue(rt, x1, y1, x2 - x1, y2 - y1, FALSE, TILE_RENDER_AREA, TRUE, TRUE); } -static void renderer_queue(void *renderer, gint x, gint y, gint w, gint h, +static void renderer_redraw(void *renderer, gint x, gint y, gint w, gint h, gint clamp, ImageRenderType render, gboolean new_data, gboolean only_existing) { RendererTiles *rt = (RendererTiles *)renderer; PixbufRenderer *pr = rt->pr; - if (rt->stereo_mode & PR_STEREO_MIRROR) x = pr->width - w - x; - if (rt->stereo_mode & PR_STEREO_FLIP) y = pr->height - h - y; + x -= rt->stereo_off_x; + y -= rt->stereo_off_y; + + rt_border_draw(rt, x, y, w, h); - rt_queue((RendererTiles *)renderer, x, y, w, h, clamp, render, new_data, only_existing); + x = MAX(0, x - pr->x_offset + pr->x_scroll); + y = MAX(0, y - pr->y_offset + pr->y_scroll); + + rt_queue(rt, + x, y, + MIN(w, pr->width - x), + MIN(h, pr->height - y), + clamp, render, new_data, only_existing); } static void renderer_queue_clear(void *renderer) @@ -2037,6 +2046,7 @@ static void renderer_border_draw(void *renderer, gint x, gint y, gint w, gint h) { + RendererTiles *rt = (RendererTiles *)renderer; rt_border_draw((RendererTiles *)renderer, x, y, w, h); } @@ -2119,7 +2129,7 @@ rt->pr = pr; - rt->f.queue = renderer_queue; + rt->f.redraw = renderer_redraw; rt->f.area_changed = renderer_area_changed; rt->f.queue_clear = renderer_queue_clear; rt->f.border_draw = renderer_border_draw;