From 2beb8b2e6aef50b8a35da37a5d0caf2ee33d174d Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 18 Mar 2015 14:53:53 +0000 Subject: more thinking Change-Id: Ie349bd35b1fc92b77cc15f51eb886a1c9c92cbe1 --- canvas/source/cairo/cairo_xlib_cairo.cxx | 4 ++++ canvas/source/cairo/cairo_xlib_cairo.hxx | 1 + 2 files changed, 5 insertions(+) (limited to 'canvas') diff --git a/canvas/source/cairo/cairo_xlib_cairo.cxx b/canvas/source/cairo/cairo_xlib_cairo.cxx index 24063a47b24e..fe82ceae72f1 100644 --- a/canvas/source/cairo/cairo_xlib_cairo.cxx +++ b/canvas/source/cairo/cairo_xlib_cairo.cxx @@ -335,6 +335,7 @@ namespace cairo **/ Gtk3Surface::Gtk3Surface(const OutputDevice& rRefDevice, int x, int y, int width, int height) : mpSurface(cairo_get_target(rRefDevice.GetCairoContext()), &cairo_surface_flush) + , mpDevice(&rRefDevice) , mnWidth(width) , mnHeight(height) { @@ -353,6 +354,7 @@ namespace cairo **/ Gtk3Surface::Gtk3Surface(const CairoSurfaceSharedPtr& pSurface, int width, int height) : mpSurface(pSurface) + , mpDevice(NULL) , mnWidth(width) , mnHeight(height) { @@ -406,6 +408,8 @@ namespace cairo void Gtk3Surface::flush() const { cairo_surface_flush(mpSurface.get()); + if (mpDevice) + mpDevice->FlushCairoContext(NULL); } boost::shared_ptr Gtk3Surface::createVirtualDevice() const diff --git a/canvas/source/cairo/cairo_xlib_cairo.hxx b/canvas/source/cairo/cairo_xlib_cairo.hxx index babebde8ab8a..0cc4212c7c64 100644 --- a/canvas/source/cairo/cairo_xlib_cairo.hxx +++ b/canvas/source/cairo/cairo_xlib_cairo.hxx @@ -101,6 +101,7 @@ namespace cairo { class Gtk3Surface : public Surface { CairoSurfaceSharedPtr mpSurface; + const OutputDevice* mpDevice; int mnWidth; int mnHeight; public: -- cgit