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);
}
}
{
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);
}
}
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);
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)
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);
}
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;