mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-07 10:58:15 +02:00
[paginated] Set paginated mode before every replay.
Previously we were replaying full page fallbacks without updating the mode - this was upsetting SVG.
This commit is contained in:
parent
36b9858991
commit
95e637f9ac
1 changed files with 14 additions and 9 deletions
|
|
@ -299,8 +299,10 @@ _paint_page (cairo_paginated_surface_t *surface)
|
|||
if (analysis->status)
|
||||
return _cairo_surface_set_error (surface->target, analysis->status);
|
||||
|
||||
surface->backend->set_paginated_mode (surface->target, CAIRO_PAGINATED_MODE_ANALYZE);
|
||||
status = _cairo_meta_surface_replay_and_create_regions (surface->meta, analysis);
|
||||
surface->backend->set_paginated_mode (surface->target,
|
||||
CAIRO_PAGINATED_MODE_ANALYZE);
|
||||
status = _cairo_meta_surface_replay_and_create_regions (surface->meta,
|
||||
analysis);
|
||||
if (status || analysis->status) {
|
||||
if (status == CAIRO_STATUS_SUCCESS)
|
||||
status = analysis->status;
|
||||
|
|
@ -325,8 +327,6 @@ _paint_page (cairo_paginated_surface_t *surface)
|
|||
goto FAIL;
|
||||
}
|
||||
|
||||
surface->backend->set_paginated_mode (surface->target, CAIRO_PAGINATED_MODE_RENDER);
|
||||
|
||||
/* Finer grained fallbacks are currently only supported for some
|
||||
* surface types */
|
||||
switch (surface->target->type) {
|
||||
|
|
@ -362,6 +362,9 @@ _paint_page (cairo_paginated_surface_t *surface)
|
|||
}
|
||||
|
||||
if (has_supported) {
|
||||
surface->backend->set_paginated_mode (surface->target,
|
||||
CAIRO_PAGINATED_MODE_RENDER);
|
||||
|
||||
status = _cairo_meta_surface_replay_region (surface->meta,
|
||||
surface->target,
|
||||
CAIRO_META_REGION_NATIVE);
|
||||
|
|
@ -370,10 +373,12 @@ _paint_page (cairo_paginated_surface_t *surface)
|
|||
goto FAIL;
|
||||
}
|
||||
|
||||
if (has_page_fallback)
|
||||
{
|
||||
if (has_page_fallback) {
|
||||
cairo_box_int_t box;
|
||||
|
||||
surface->backend->set_paginated_mode (surface->target,
|
||||
CAIRO_PAGINATED_MODE_FALLBACK);
|
||||
|
||||
box.p1.x = 0;
|
||||
box.p1.y = 0;
|
||||
box.p2.x = surface->width;
|
||||
|
|
@ -383,13 +388,13 @@ _paint_page (cairo_paginated_surface_t *surface)
|
|||
goto FAIL;
|
||||
}
|
||||
|
||||
if (has_finegrained_fallback)
|
||||
{
|
||||
if (has_finegrained_fallback) {
|
||||
cairo_region_t *region;
|
||||
cairo_box_int_t *boxes;
|
||||
int num_boxes, i;
|
||||
|
||||
surface->backend->set_paginated_mode (surface->target, CAIRO_PAGINATED_MODE_FALLBACK);
|
||||
surface->backend->set_paginated_mode (surface->target,
|
||||
CAIRO_PAGINATED_MODE_FALLBACK);
|
||||
|
||||
/* Reset clip region before drawing the fall back images */
|
||||
status = _cairo_surface_intersect_clip_path (surface->target,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue