mirror of
https://github.com/overte-org/overte.git
synced 2025-04-08 08:14:48 +02:00
suppress 'No instance available' messages during shutdown. try a different way of shutting down AudioClient.
This commit is contained in:
parent
fd87aad3c2
commit
fac27553d7
3 changed files with 17 additions and 2 deletions
|
@ -2572,6 +2572,8 @@ void Application::cleanupBeforeQuit() {
|
|||
QString webengineRemoteDebugging = QProcessEnvironment::systemEnvironment().value("QTWEBENGINE_REMOTE_DEBUGGING", "false");
|
||||
qCDebug(interfaceapp) << "QTWEBENGINE_REMOTE_DEBUGGING =" << webengineRemoteDebugging;
|
||||
|
||||
DependencyManager::prepareToExit();
|
||||
|
||||
if (tracing::enabled()) {
|
||||
auto tracer = DependencyManager::get<tracing::Tracer>();
|
||||
tracer->stopTracing();
|
||||
|
@ -2684,6 +2686,7 @@ void Application::cleanupBeforeQuit() {
|
|||
|
||||
// destroy Audio so it and its threads have a chance to go down safely
|
||||
// this must happen after QML, as there are unexplained audio crashes originating in qtwebengine
|
||||
QMetaObject::invokeMethod(DependencyManager::get<AudioClient>().data(), "stop");
|
||||
DependencyManager::destroy<AudioClient>();
|
||||
DependencyManager::destroy<AudioInjectorManager>();
|
||||
DependencyManager::destroy<AudioScriptingInterface>();
|
||||
|
@ -2775,7 +2778,7 @@ Application::~Application() {
|
|||
// quit the thread used by the closure event sender
|
||||
closeEventSender->thread()->quit();
|
||||
|
||||
// Can't log to file passed this point, FileLogger about to be deleted
|
||||
// Can't log to file past this point, FileLogger about to be deleted
|
||||
qInstallMessageHandler(LogHandler::verboseMessageHandler);
|
||||
|
||||
_renderEventHandler->deleteLater();
|
||||
|
|
|
@ -302,7 +302,6 @@ void AudioClient::customDeleter() {
|
|||
#if defined(Q_OS_ANDROID)
|
||||
_shouldRestartInputSetup = false;
|
||||
#endif
|
||||
stop();
|
||||
deleteLater();
|
||||
}
|
||||
|
||||
|
|
|
@ -74,6 +74,9 @@ public:
|
|||
#endif
|
||||
return hashCode;
|
||||
}
|
||||
|
||||
static void prepareToExit() { manager()._exiting = true; }
|
||||
|
||||
private:
|
||||
static DependencyManager& manager();
|
||||
|
||||
|
@ -84,6 +87,8 @@ private:
|
|||
|
||||
QHash<size_t, QSharedPointer<Dependency>> _instanceHash;
|
||||
QHash<size_t, size_t> _inheritanceHash;
|
||||
|
||||
bool _exiting { false };
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
|
@ -95,9 +100,17 @@ QSharedPointer<T> DependencyManager::get() {
|
|||
instance = qSharedPointerCast<T>(manager().safeGet(hashCode));
|
||||
|
||||
#ifndef QT_NO_DEBUG
|
||||
// debug builds...
|
||||
if (instance.isNull()) {
|
||||
qWarning() << "DependencyManager::get(): No instance available for" << typeid(T).name();
|
||||
}
|
||||
#else
|
||||
// for non-debug builds, don't print "No instance available" during shutdown, because
|
||||
// the act of printing this often causes crashes (because the LogHandler has-been/is-being
|
||||
// deleted).
|
||||
if (!manager()._exiting && instance.isNull()) {
|
||||
qWarning() << "DependencyManager::get(): No instance available for" << typeid(T).name();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue