diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2017-12-01 21:31:48 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2017-12-01 21:31:48 +0000 |
| commit | 035f5ed006ed983fd52e4da0bde49fc6a80534ce (patch) | |
| tree | b3ac5e1d4cde91e4a4089281cf4b4edd7794780e /src/extension | |
| parent | Cleaninng (diff) | |
| parent | Merge powerStrokeSmooth (diff) | |
| download | inkscape-035f5ed006ed983fd52e4da0bde49fc6a80534ce.tar.gz inkscape-035f5ed006ed983fd52e4da0bde49fc6a80534ce.zip | |
Merge branch 'powerpencilII' of https://gitlab.com/inkscape/inkscape into powerpencilII
Diffstat (limited to 'src/extension')
| -rw-r--r-- | src/extension/implementation/script.cpp | 15 | ||||
| -rw-r--r-- | src/extension/internal/cairo-render-context.cpp | 10 | ||||
| -rw-r--r-- | src/extension/internal/cairo-render-context.h | 2 |
3 files changed, 19 insertions, 8 deletions
diff --git a/src/extension/implementation/script.cpp b/src/extension/implementation/script.cpp index eb98711bc..0f0a79bfb 100644 --- a/src/extension/implementation/script.cpp +++ b/src/extension/implementation/script.cpp @@ -732,9 +732,18 @@ void Script::effect(Inkscape::Extension::Effect *module, SPDocument * mydoc = NULL; if (data_read > 10) { - mydoc = Inkscape::Extension::open( - Inkscape::Extension::db.get(SP_MODULE_KEY_INPUT_SVG), - tempfilename_out.c_str()); + try { + mydoc = Inkscape::Extension::open( + Inkscape::Extension::db.get(SP_MODULE_KEY_INPUT_SVG), + tempfilename_out.c_str()); + } catch (const Inkscape::Extension::Input::open_failed &e) { + g_warning("Extension returned output that could not be parsed: %s", e.what()); + Gtk::MessageDialog warning( + _("The output from the extension could not be parsed."), + false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, true); + warning.set_transient_for( *(INKSCAPE.active_desktop()->getToplevel()) ); + warning.run(); + } } // data_read pump_events(); diff --git a/src/extension/internal/cairo-render-context.cpp b/src/extension/internal/cairo-render-context.cpp index 972081c0d..4869472da 100644 --- a/src/extension/internal/cairo-render-context.cpp +++ b/src/extension/internal/cairo-render-context.cpp @@ -878,11 +878,11 @@ CairoRenderContext::_finishSurfaceSetup(cairo_surface_t *surface, cairo_matrix_t } bool -CairoRenderContext::finish(void) +CairoRenderContext::finish(bool finish_surface) { g_assert( _is_valid ); - if (_vector_based_target) + if (_vector_based_target && finish_surface) cairo_show_page(_cr); // PDF+TeX Output, see CairoRenderContext::_prepareRenderGraphic() @@ -893,10 +893,12 @@ CairoRenderContext::finish(void) } cairo_destroy(_cr); - cairo_surface_finish(_surface); + _cr = NULL; + + if (finish_surface) + cairo_surface_finish(_surface); cairo_status_t status = cairo_surface_status(_surface); cairo_surface_destroy(_surface); - _cr = NULL; _surface = NULL; if (_layout) diff --git a/src/extension/internal/cairo-render-context.h b/src/extension/internal/cairo-render-context.h index be5169a74..a0ca2665b 100644 --- a/src/extension/internal/cairo-render-context.h +++ b/src/extension/internal/cairo-render-context.h @@ -72,7 +72,7 @@ class CairoRenderContext { public: CairoRenderContext *cloneMe(void) const; CairoRenderContext *cloneMe(double width, double height) const; - bool finish(void); + bool finish(bool finish_surface = true); CairoRenderer *getRenderer(void) const; cairo_t *getCairoContext(void) const; |
