1 – Release Notes
Apple announced in 2018 that OpenGL will be a deprecated technology in macOS Mojave (and Catalina of course).
Three days ago, I compiled GeeXLab 0.29.9.0 on macOS 10.14 Mojave and it worked perfectly, as it always did on all previous versions of macOS (and OS X). So I decided to upgrade the macOS version to latest macOS 10.15 Catalina. Once upgraded, I tested the freshly compiled GeeXLab on Catalina. Result: a pure disaster: crash crash and crash!
After some investigations, the source of the crash was the initialization of the OpenGL context:
// Thread 7 Crashed:
// 0 com.apple.AppKit 0x00007fff39df9cbc -[NSOpenGLContext setView:] + 229
There was also this message:
Application Specific Information:
-[NSOpenGLContext setView:] must be called from the main thread.
It looks like Apple has updated its OpenGL code (why??? I thought OpenGL was deprecated. So why wasting the precious time of Apple dev to that kind of task?) and now the OpenGL context / render window initialization has to be done in the application main thread (or UI thread). It really sucks!
GeeXLab is a multithreaded application and the render loop runs in its own render thread. The whole OpenGL initialization has to be done in the render thread and this way of doing things has always worked fine in macOS. Fortunately, GeeXLab can also run in single threaded mode. In GeeXLab 0.29.9.1+, the single threaded mode is forced if macOS 10.15+ is detected. For all previous versions of macOS, the multi-threaded mode is the default mode.
This important modification in Apple’s OpenGL framework can’t be the result of an error (otherwise the dev that has worked on this part should be fired with an extreme violence). [Conspiracy_Theory_Mode:ON] Maybe I’m wrong (and I hope so) but for me, it’s rather part of a strategy to force developers to switch from OpenGL to Apple’s metallic API [Conspiracy_Theory_Mode:OFF]. Or maybe there exists a real technical reason to explain that change and I’d really like to know it.
GeeXLab 0.29.9.1 has been compiled with Xcode 11.3 (hey Apple, could you ship a real minimap that works, because the minimap added in recent Xcode is a joke, check VSCode if you need a good example) successfully tested on macOS 10.15.2, the latest update of Catalina.
2 – Changelog
This changelog is for all versions of GeeXLab.
Full changelog from beginning of time is available HERE.
Version 0.29.9.1 - 2019.12.14 + (2019.12.14) [macOS] added support for macOS 10.15 Catalina.