diff options
Diffstat (limited to 'src/extension/internal/cairo-render-context.cpp')
| -rw-r--r-- | src/extension/internal/cairo-render-context.cpp | 9 |
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); |
