|
@@ -1533,13 +1533,6 @@ void OBSBasic::OBSInit()
|
|
|
SET_VISIBILITY("ShowStatusBar", toggleStatusBar);
|
|
|
#undef SET_VISIBILITY
|
|
|
|
|
|
- {
|
|
|
- ProfileScope("OBSBasic::Load");
|
|
|
- disableSaving--;
|
|
|
- Load(savePath);
|
|
|
- disableSaving++;
|
|
|
- }
|
|
|
-
|
|
|
TimedCheckForUpdates();
|
|
|
loaded = true;
|
|
|
|
|
@@ -1677,6 +1670,39 @@ void OBSBasic::OBSInit()
|
|
|
ui->menuCrashLogs = nullptr;
|
|
|
ui->actionCheckForUpdates = nullptr;
|
|
|
#endif
|
|
|
+
|
|
|
+ /* This is an incredibly unpleasant hack for macOS to isolate CEF
|
|
|
+ * initialization until after all tasks related to Qt startup and main
|
|
|
+ * window initialization have completed. There is a macOS-specific bug
|
|
|
+ * within either CEF and/or Qt that can cause a crash if both Qt and
|
|
|
+ * CEF are loading at the same time.
|
|
|
+ *
|
|
|
+ * CEF will typically load fine after about two iterations from this
|
|
|
+ * point, and all Qt tasks are typically fully completed after about
|
|
|
+ * four or five iterations, but to be "ultra" safe, an arbitrarily
|
|
|
+ * large number such as 10 is used. This hack is extremely unpleasant,
|
|
|
+ * but is worth doing instead of being forced to isolate the entire
|
|
|
+ * browser plugin in to a separate process as before.
|
|
|
+ *
|
|
|
+ * Again, this hack is specific to macOS only. Fortunately, on other
|
|
|
+ * operating systems, such issues do not occur. */
|
|
|
+ QMetaObject::invokeMethod(this, "DeferredLoad",
|
|
|
+ Qt::QueuedConnection,
|
|
|
+ Q_ARG(QString, QT_UTF8(savePath)),
|
|
|
+ Q_ARG(int, 10));
|
|
|
+}
|
|
|
+
|
|
|
+void OBSBasic::DeferredLoad(const QString &file, int requeueCount)
|
|
|
+{
|
|
|
+ if (--requeueCount > 0) {
|
|
|
+ QMetaObject::invokeMethod(this, "DeferredLoad",
|
|
|
+ Qt::QueuedConnection,
|
|
|
+ Q_ARG(QString, file),
|
|
|
+ Q_ARG(int, requeueCount));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Load(QT_TO_UTF8(file));
|
|
|
}
|
|
|
|
|
|
void OBSBasic::UpdateMultiviewProjectorMenu()
|