diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2021-12-07 10:54:29 +0100 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2021-12-07 10:54:41 +0100 |
| commit | 939d536b66c633b42eeddfe3dfa775e7fab0055a (patch) | |
| tree | dc93d306c029e972fbf7bd0f7fd553044e035a85 /src/Fl_cocoa.mm | |
| parent | 16c9641797c631caee5499f7fdd300fab714b8f8 (diff) | |
Fix for fltk.coredev "reentrant calls with Fl_Window::resize" - cont'd
Diffstat (limited to 'src/Fl_cocoa.mm')
| -rw-r--r-- | src/Fl_cocoa.mm | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm index b415e8d4b..3b8cf6370 100644 --- a/src/Fl_cocoa.mm +++ b/src/Fl_cocoa.mm @@ -1253,9 +1253,19 @@ static FLWindowDelegate *flwindowdelegate_instance = nil; float s = Fl::screen_driver()->scale(window->screen_num()); NSRect r = [view frame]; Fl_Cocoa_Window_Driver::driver(window)->view_resized(1); - if (Fl_Cocoa_Window_Driver::driver(window)->through_resize()) - Fl_Cocoa_Window_Driver::driver(window)->resize(X, Y, lround(r.size.width/s), lround(r.size.height/s)); - else + if (Fl_Cocoa_Window_Driver::driver(window)->through_resize()) { + if (window->as_gl_window()) { + static Fl_Cocoa_Plugin *plugin = NULL; + if (!plugin) { + Fl_Plugin_Manager pm("fltk:cocoa"); + plugin = (Fl_Cocoa_Plugin*)pm.plugin("gl.cocoa.fltk.org"); + } + // calls Fl_Gl_Window::resize() without including Fl_Gl_Window.H + plugin->resize(window->as_gl_window(), X, Y, lround(r.size.width/s), lround(r.size.height/s)); + } else { + Fl_Cocoa_Window_Driver::driver(window)->resize(X, Y, lround(r.size.width/s), lround(r.size.height/s)); + } + } else window->resize(X, Y, lround(r.size.width/s), lround(r.size.height/s)); Fl_Cocoa_Window_Driver::driver(window)->view_resized(0); update_e_xy_and_e_xy_root(nsw); |
