diff options
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qcore_mac.mm | 10 | ||||
-rw-r--r-- | src/corelib/kernel/qcore_mac_p.h | 1 | ||||
-rw-r--r-- | src/corelib/kernel/qeventloop.cpp | 6 | ||||
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 4 |
4 files changed, 21 insertions, 0 deletions
diff --git a/src/corelib/kernel/qcore_mac.mm b/src/corelib/kernel/qcore_mac.mm index 7d696364e2..e774cebcbf 100644 --- a/src/corelib/kernel/qcore_mac.mm +++ b/src/corelib/kernel/qcore_mac.mm @@ -54,6 +54,7 @@ #include <cxxabi.h> #include <objc/runtime.h> #include <mach-o/dyld.h> +#include <sys/sysctl.h> #include <qdebug.h> @@ -351,6 +352,15 @@ bool qt_mac_applicationIsInDarkMode() #endif return false; } + +bool qt_mac_runningUnderRosetta() +{ + int translated = 0; + auto size = sizeof(translated); + if (sysctlbyname("sysctl.proc_translated", &translated, &size, nullptr, 0) == 0) + return translated; + return false; +} #endif bool qt_apple_isApplicationExtension() diff --git a/src/corelib/kernel/qcore_mac_p.h b/src/corelib/kernel/qcore_mac_p.h index 96a2ff8567..a851c3e742 100644 --- a/src/corelib/kernel/qcore_mac_p.h +++ b/src/corelib/kernel/qcore_mac_p.h @@ -172,6 +172,7 @@ private: Q_CORE_EXPORT QChar qt_mac_qtKey2CocoaKey(Qt::Key key); Q_CORE_EXPORT Qt::Key qt_mac_cocoaKey2QtKey(QChar keyCode); Q_CORE_EXPORT bool qt_mac_applicationIsInDarkMode(); +Q_CORE_EXPORT bool qt_mac_runningUnderRosetta(); #endif #ifndef QT_NO_DEBUG_STREAM diff --git a/src/corelib/kernel/qeventloop.cpp b/src/corelib/kernel/qeventloop.cpp index dc53af7018..5d793ce72a 100644 --- a/src/corelib/kernel/qeventloop.cpp +++ b/src/corelib/kernel/qeventloop.cpp @@ -50,6 +50,9 @@ #ifdef Q_OS_WASM #include <emscripten.h> +#if QT_CONFIG(thread) +#include <emscripten/threading.h> +#endif #endif QT_BEGIN_NAMESPACE @@ -295,6 +298,9 @@ void QEventLoop::exit(int returnCode) // QEventLoop::exec() never returns in emscripten. We implement approximate behavior here. // QTBUG-70185 if (threadData->loopLevel == 1) { +#if QT_CONFIG(thread) + if (emscripten_is_main_browser_thread()) +#endif emscripten_force_exit(returnCode); } else { d->inExec = false; diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index c294868c62..1eb79138d9 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -2333,6 +2333,10 @@ void QObject::removeEventFilter(QObject *obj) */ void QObject::deleteLater() { +#ifdef QT_DEBUG + if (qApp == this) + qWarning("You are deferring the delete of QCoreApplication, this may not work as expected."); +#endif QCoreApplication::postEvent(this, new QDeferredDeleteEvent()); } |