From: Colin Clark Date: Fri, 3 Sep 2021 11:03:49 +0000 (+0100) Subject: Fix #892: stereo side-by-side mode broken by commit 89c559 X-Git-Tag: v1.7~64 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=34edf6b61403c723ac1a7f280425a3254da573fe Fix #892: stereo side-by-side mode broken by commit 89c559 https://github.com/BestImageViewer/geeqie/issues/892 Stereo modes side-by-side and top-bottom use two pixbuf-renderers. This was not taken into account. --- diff --git a/src/renderer-tiles.c b/src/renderer-tiles.c index 9b671759..cced0814 100644 --- a/src/renderer-tiles.c +++ b/src/renderer-tiles.c @@ -2273,8 +2273,35 @@ static gboolean rt_draw_cb(GtkWidget *widget, cairo_t *cr, gpointer data) GList *work; OverlayData *od; - cairo_set_source_surface (cr, rt->surface, 0, 0); - cairo_paint(cr); + if (rt->stereo_mode && (PR_STEREO_HORIZ | PR_STEREO_VERT)) + { + cairo_push_group(cr); + cairo_set_source_rgb(cr, (double)rt->pr->color.red / 65535, (double)rt->pr->color.green / 65535, (double)rt->pr->color.blue / 65535); + + if (rt->stereo_mode & PR_STEREO_HORIZ) + { + cairo_rectangle(cr, rt->stereo_off_x, 0, rt->pr->viewport_width, rt->pr->viewport_height); + } + else + { + cairo_rectangle(cr, 0, rt->stereo_off_y, rt->pr->viewport_width, rt->pr->viewport_height); + } + cairo_clip(cr); + cairo_paint(cr); + + cairo_rectangle(cr, rt->pr->x_offset + rt->stereo_off_x, rt->pr->y_offset + rt->stereo_off_y, rt->pr->vis_width, rt->pr->vis_height); + cairo_clip(cr); + cairo_set_source_surface(cr, rt->surface, 0, 0); + cairo_paint(cr); + + cairo_pop_group_to_source(cr); + cairo_paint(cr); + } + else + { + cairo_set_source_surface(cr, rt->surface, 0, 0); + cairo_paint(cr); + } work = rt->overlay_list; while (work)