summaryrefslogtreecommitdiff
path: root/src/drivers/Cocoa
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-11-23 11:59:49 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-11-23 11:59:49 +0100
commit42b74919e5497630dd2e240a74379f86c015f730 (patch)
tree87c8832b8d6aff1f41187d66e868db82af720490 /src/drivers/Cocoa
parentbe6e5fad7252a2c40a798b538510d9c0842be3fb (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.mm17
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.);