summaryrefslogtreecommitdiffstats
path: root/src/display/sodipodi-ctrl.cpp
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2019-01-07 20:43:56 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-01-07 20:43:56 +0000
commit4735dc985c0f63431a921646bda94e961a5683b4 (patch)
tree2746d8800d7414ea7276813855ffccd0ed86016b /src/display/sodipodi-ctrl.cpp
parentUpdate/Completion of Croatian translation "hr.po" (diff)
downloadinkscape-4735dc985c0f63431a921646bda94e961a5683b4.tar.gz
inkscape-4735dc985c0f63431a921646bda94e961a5683b4.zip
Fix bug 1810206: Crash if XRay mode enabled (assertion failed in SPCanvas::paintXRayBuffer) and other improvements to XRay
Diffstat (limited to 'src/display/sodipodi-ctrl.cpp')
-rw-r--r--src/display/sodipodi-ctrl.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/display/sodipodi-ctrl.cpp b/src/display/sodipodi-ctrl.cpp
index c267d6c84..e16b1f2ce 100644
--- a/src/display/sodipodi-ctrl.cpp
+++ b/src/display/sodipodi-ctrl.cpp
@@ -657,9 +657,14 @@ sp_ctrl_render (SPCanvasItem *item, SPCanvasBuf *buf)
cairo_surface_t *cache = cairo_image_surface_create_for_data(
reinterpret_cast<unsigned char*>(ctrl->cache), CAIRO_FORMAT_ARGB32, w, h, w*4);
cairo_surface_set_device_scale(cache, buf->device_scale, buf->device_scale);
+ cairo_surface_mark_dirty(cache);
+ cairo_save(buf->ct);
cairo_set_source_surface(buf->ct, cache,
ctrl->box.left() - buf->rect.left(), ctrl->box.top() - buf->rect.top());
+ cairo_rectangle(buf->ct, ctrl->box.left() - buf->rect.left(), ctrl->box.top() - buf->rect.top(), w/buf->device_scale, h/buf->device_scale);
+ cairo_clip(buf->ct);
cairo_paint(buf->ct);
+ cairo_restore(buf->ct);
cairo_surface_destroy(cache);
}
ctrl->shown = TRUE;