From 0d3a37439625e60cf247228412007fabd04ad289 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Sat, 25 May 2019 11:59:16 +0200 Subject: Call virtual member Fl_Surface_Device::end_current() when necessary Rename member function Fl_Surface_Device::end_current_() to end_current(), set it protected, and make it called by the destructor of all classes derived from Fl_Surface_Device that re-implement end_current(). This way, end_current() runs equally if Fl_Surface_Device()::pop_current() is called before or after the drawing surface is deleted. --- src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/drivers/Quartz') diff --git a/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx b/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx index b9c7a7432..f7eca97a7 100644 --- a/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx +++ b/src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx @@ -27,7 +27,7 @@ #include class Fl_Quartz_Image_Surface_Driver : public Fl_Image_Surface_Driver { - virtual void end_current_(); + virtual void end_current(); public: Window pre_window; Fl_Quartz_Image_Surface_Driver(int w, int h, int high_res, Fl_Offscreen off); @@ -89,6 +89,7 @@ Fl_Quartz_Image_Surface_Driver::~Fl_Quartz_Image_Surface_Driver() { CGContextRelease((CGContextRef)offscreen); } delete driver(); + if (is_current()) end_current(); } void Fl_Quartz_Image_Surface_Driver::set_current() { @@ -124,7 +125,7 @@ Fl_RGB_Image* Fl_Quartz_Image_Surface_Driver::image() return image; } -void Fl_Quartz_Image_Surface_Driver::end_current_() +void Fl_Quartz_Image_Surface_Driver::end_current() { fl_window = pre_window; } -- cgit v1.2.3