summaryrefslogtreecommitdiffstats
path: root/src/extension
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2017-12-01 21:31:48 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2017-12-01 21:31:48 +0000
commit035f5ed006ed983fd52e4da0bde49fc6a80534ce (patch)
treeb3ac5e1d4cde91e4a4089281cf4b4edd7794780e /src/extension
parentCleaninng (diff)
parentMerge powerStrokeSmooth (diff)
downloadinkscape-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.cpp15
-rw-r--r--src/extension/internal/cairo-render-context.cpp10
-rw-r--r--src/extension/internal/cairo-render-context.h2
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;