diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-11-23 11:59:49 +0100 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-11-23 11:59:49 +0100 |
| commit | 42b74919e5497630dd2e240a74379f86c015f730 (patch) | |
| tree | 87c8832b8d6aff1f41187d66e868db82af720490 /src/drivers/Cocoa | |
| parent | be6e5fad7252a2c40a798b538510d9c0842be3fb (diff) | |
Improve Fl_Cocoa_Gl_Window_Driver::switch_to_GL1() to support multiple GL3 windows
Diffstat (limited to 'src/drivers/Cocoa')
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm | 17 |
1 files changed, 9 insertions, 8 deletions
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.); |
