(again, ignoring the deadlock in the messagebox code -- we should still fix that)
Hi guys -- I think there really isn't a problem with the invalid QGLWidget here. Even if the QGLWidget is invalid it won't cause problems for us, the paint commands should just fail. The problem is that the Qt source code has qCritical() calls in it for debug output like failing to compile a shader. Qt doesn't expect that a qCritical will result in an exit or abort. This is something we do in Mixxx from src/errordialoghandler.cpp.
I propose that instead we remove exit/abort on qCritical from Mixxx and instead make every part of Mixxx that uses qCritical also exit explicitly if it wants to. Currently there are only 3 places that this happens:
1) If the ConfigObject config file cannot be found.
2) If the skin directory cannot be found.
3) If a script error occurs in debug mode.
I think case #3 should actually be removed in favor of a script console where developers can see the errors in their scripts.
If we don't remove the abort/exit on qCritical then some other Qt code that uses qCritical will cause us to crash in the future.
(again, ignoring the deadlock in the messagebox code -- we should still fix that)
Hi guys -- I think there really isn't a problem with the invalid QGLWidget here. Even if the QGLWidget is invalid it won't cause problems for us, the paint commands should just fail. The problem is that the Qt source code has qCritical() calls in it for debug output like failing to compile a shader. Qt doesn't expect that a qCritical will result in an exit or abort. This is something we do in Mixxx from src/errordialog handler. cpp.
I propose that instead we remove exit/abort on qCritical from Mixxx and instead make every part of Mixxx that uses qCritical also exit explicitly if it wants to. Currently there are only 3 places that this happens:
1) If the ConfigObject config file cannot be found.
2) If the skin directory cannot be found.
3) If a script error occurs in debug mode.
I think case #3 should actually be removed in favor of a script console where developers can see the errors in their scripts.
If we don't remove the abort/exit on qCritical then some other Qt code that uses qCritical will cause us to crash in the future.