From 42b74919e5497630dd2e240a74379f86c015f730 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Wed, 23 Nov 2022 11:59:49 +0100 Subject: Improve Fl_Cocoa_Gl_Window_Driver::switch_to_GL1() to support multiple GL3 windows --- src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/drivers') diff --git a/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm b/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm index 385b63057..931c0df52 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm +++ b/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm @@ -447,11 +447,11 @@ FL_EXPORT NSOpenGLContext *fl_mac_glcontext(GLContext rc) { view/GL context. */ -static struct win_view { +struct win_view { Fl_Gl_Window *win; NSView *gl1view; NSOpenGLContext *gl1ctxt; -} win_view_struct; +}; static void delayed_addgl1ctxt(struct win_view *data) { @@ -465,24 +465,25 @@ static void delayed_addgl1ctxt(struct win_view *data) { [data->gl1ctxt setView:data->gl1view]; remove_gl_context_opacity(data->gl1ctxt); data->win->redraw(); + delete data; } void Fl_Cocoa_Gl_Window_Driver::switch_to_GL1() { if (!gl1ctxt) { NSView *view = [fl_xid(pWindow) contentView]; - win_view_struct.gl1view = [[NSView alloc] initWithFrame:[view frame]]; - [win_view_struct.gl1view setAutoresizingMask: + struct win_view *win_view_struct = new struct win_view; + win_view_struct->gl1view = [[NSView alloc] initWithFrame:[view frame]]; + [win_view_struct->gl1view setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; NSOpenGLPixelFormat *gl1pixelformat = mode_to_NSOpenGLPixelFormat( FL_RGB8 | FL_ALPHA | FL_SINGLE, NULL); gl1ctxt = [[NSOpenGLContext alloc] initWithFormat:gl1pixelformat shareContext:nil]; [gl1pixelformat release]; - win_view_struct.win = pWindow; - win_view_struct.gl1ctxt = gl1ctxt; - Fl::add_timeout(0.01, (Fl_Timeout_Handler)delayed_addgl1ctxt, - &win_view_struct); + win_view_struct->win = pWindow; + win_view_struct->gl1ctxt = gl1ctxt; + Fl::add_timeout(0.01, (Fl_Timeout_Handler)delayed_addgl1ctxt, win_view_struct); } [gl1ctxt makeCurrentContext]; glClearColor(0., 0., 0., 0.); -- cgit v1.2.3