diff options
| author | Matthias Melcher <github@matthiasm.com> | 2024-01-29 13:41:53 +0100 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2024-01-29 13:42:05 +0100 |
| commit | c40b1653532aa08412aa8232fb8a11289512283e (patch) | |
| tree | 1124c44a105893d973cf3665b0f66d53d52ad645 | |
| parent | d9612e3cc713247f8f1e8af10a39fa2c763b588d (diff) | |
Fix OpenGL context caching on macOS (#737)
| -rw-r--r-- | src/Fl_Gl_Window.cxx | 1 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm | 10 |
2 files changed, 5 insertions, 6 deletions
diff --git a/src/Fl_Gl_Window.cxx b/src/Fl_Gl_Window.cxx index 4912765c7..3e87a880a 100644 --- a/src/Fl_Gl_Window.cxx +++ b/src/Fl_Gl_Window.cxx @@ -536,7 +536,6 @@ float Fl_Gl_Window::pixels_per_unit() { */ int Fl_Gl_Window_Driver::copy = COPY; -GLContext Fl_Gl_Window_Driver::cached_context = NULL; Fl_Window* Fl_Gl_Window_Driver::cached_window = NULL; float Fl_Gl_Window_Driver::gl_scale = 1; // scaling factor between FLTK and GL drawing units: GL = FLTK * gl_scale diff --git a/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm b/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm index 808a6e03a..43a1c1b9e 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm +++ b/src/drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm @@ -217,18 +217,18 @@ GLContext Fl_Cocoa_Gl_Window_Driver::create_gl_context(Fl_Window* window, const } void Fl_Cocoa_Gl_Window_Driver::set_gl_context(Fl_Window* w, GLContext context) { - if (context != cached_context || w != cached_window) { - cached_context = context; + NSOpenGLContext *current_context = [NSOpenGLContext currentContext]; + if (context != current_context || w != cached_window) { cached_window = w; [(NSOpenGLContext*)context makeCurrentContext]; } } void Fl_Cocoa_Gl_Window_Driver::delete_gl_context(GLContext context) { - if (cached_context == context) { - cached_context = 0; + NSOpenGLContext *current_context = [NSOpenGLContext currentContext]; + if (current_context == context) { cached_window = 0; - [[NSOpenGLContext currentContext] clearDrawable]; + [current_context clearDrawable]; } [(NSOpenGLContext*)context release]; del_context(context); |
