diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2019-05-25 11:59:16 +0200 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2019-05-25 11:59:16 +0200 |
| commit | 0d3a37439625e60cf247228412007fabd04ad289 (patch) | |
| tree | 8eac87f1d763dbea5e68ed869a85f9c25217e447 /src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx | |
| parent | bf50352afe8c8aee3cfe1779474d6b6c1854f56f (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/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx')
| -rw-r--r-- | src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx b/src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx index 2f1edd9dd..5818eb2a5 100644 --- a/src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx +++ b/src/drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx @@ -28,7 +28,7 @@ class Fl_Xlib_Copy_Surface_Driver : public Fl_Copy_Surface_Driver { friend class Fl_Copy_Surface_Driver; - virtual void end_current_(); + virtual void end_current(); protected: Fl_Offscreen xid; Window oldwindow; @@ -70,6 +70,7 @@ Fl_Xlib_Copy_Surface_Driver::~Fl_Xlib_Copy_Surface_Driver() { delete rgb; fl_delete_offscreen(xid); delete driver(); + if (!need_push) end_current(); } @@ -79,7 +80,7 @@ void Fl_Xlib_Copy_Surface_Driver::set_current() { fl_window = xid; } -void Fl_Xlib_Copy_Surface_Driver::end_current_() { +void Fl_Xlib_Copy_Surface_Driver::end_current() { fl_window = oldwindow; } |
