summaryrefslogtreecommitdiff
path: root/src/drivers/Quartz
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2019-05-25 11:59:16 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2019-05-25 11:59:16 +0200
commit0d3a37439625e60cf247228412007fabd04ad289 (patch)
tree8eac87f1d763dbea5e68ed869a85f9c25217e447 /src/drivers/Quartz
parentbf50352afe8c8aee3cfe1779474d6b6c1854f56f (diff)
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.
Diffstat (limited to 'src/drivers/Quartz')
-rw-r--r--src/drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx5
1 files changed, 3 insertions, 2 deletions
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 <ApplicationServices/ApplicationServices.h>
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;
}