diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-01-07 20:43:56 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-01-07 20:43:56 +0000 |
| commit | 4735dc985c0f63431a921646bda94e961a5683b4 (patch) | |
| tree | 2746d8800d7414ea7276813855ffccd0ed86016b /src/display/sodipodi-ctrl.cpp | |
| parent | Update/Completion of Croatian translation "hr.po" (diff) | |
| download | inkscape-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.cpp | 5 |
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; |
