summaryrefslogtreecommitdiffstats
path: root/src/extension/internal/cairo-render-context.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/extension/internal/cairo-render-context.cpp')
-rw-r--r--src/extension/internal/cairo-render-context.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp
index 8f106f55f..8511973e4 100644
--- a/src/extension/internal/cairo-render-context.cpp
+++ b/src/extension/internal/cairo-render-context.cpp
@@ -647,6 +647,10 @@ CairoRenderContext::addClippingRect(double x, double y, double width, double hei
bool
CairoRenderContext::setupSurface(double width, double height)
{
+ // Is the surface already set up?
+ if (_is_valid)
+ return true;
+
if (_vector_based_target && _stream == NULL)
return false;
@@ -674,11 +678,12 @@ CairoRenderContext::setupSurface(double width, double height)
}
bool
-CairoRenderContext::setSurface(cairo_surface_t *surface)
+CairoRenderContext::setSurfaceTarget(cairo_surface_t *surface, bool is_vector)
{
if (_is_valid || !surface)
return false;
+ _vector_based_target = is_vector;
bool ret = _finishSurfaceSetup (surface);
if (ret)
cairo_surface_reference (surface);
@@ -724,7 +729,7 @@ CairoRenderContext::finish(void)
_is_valid = FALSE;
- if (_vector_based_target) {
+ if (_vector_based_target && _stream) {
/* Flush stream to be sure. */
(void) fflush(_stream);