mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 06:44:57 +01:00
Release NSGLView, fixes heap-use-after-free
This commit is contained in:
parent
2c01adbeb0
commit
4866baacf5
4 changed files with 21 additions and 1 deletions
|
|
@ -562,6 +562,16 @@ GtkCanvas::GtkCanvas ()
|
|||
Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);
|
||||
}
|
||||
|
||||
GtkCanvas::~GtkCanvas ()
|
||||
{
|
||||
_in_dtor = true;
|
||||
#ifdef __APPLE__
|
||||
if (_nsglview) {
|
||||
Gtkmm2ext::nsglview_destroy (_nsglview);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
GtkCanvas::set_single_exposure (bool yn)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@ class LIBCANVAS_API GtkCanvas : public Canvas, public Gtk::EventBox, public Gtkm
|
|||
{
|
||||
public:
|
||||
GtkCanvas ();
|
||||
~GtkCanvas () { _in_dtor = true ; }
|
||||
~GtkCanvas ();
|
||||
|
||||
void use_nsglview (bool retina = true);
|
||||
|
||||
|
|
|
|||
|
|
@ -26,9 +26,11 @@ namespace Gtkmm2ext
|
|||
class CairoCanvas;
|
||||
|
||||
void* nsglview_create (CairoCanvas*, bool use_backing_scale);
|
||||
void nsglview_destroy (void*);
|
||||
void nsglview_overlay (void*, GdkWindow*);
|
||||
void nsglview_resize (void*, int x, int y, int w, int h);
|
||||
void nsglview_queue_draw (void*, int x, int y, int w, int h);
|
||||
void nsglview_set_visible (void*, bool);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -396,6 +396,14 @@ Gtkmm2ext::nsglview_create (Gtkmm2ext::CairoCanvas* canvas, bool use_backing_sca
|
|||
return gl_view;
|
||||
}
|
||||
|
||||
void
|
||||
Gtkmm2ext::nsglview_destroy (void* glv)
|
||||
{
|
||||
ArdourCanvasOpenGLView* gl_view = (ArdourCanvasOpenGLView*) glv;
|
||||
[gl_view removeFromSuperview];
|
||||
[gl_view release];
|
||||
}
|
||||
|
||||
void
|
||||
Gtkmm2ext::nsglview_overlay (void* glv, GdkWindow* window)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue