diff --git a/changelog/next.md b/changelog/next.md index b430a27..86687eb 100644 --- a/changelog/next.md +++ b/changelog/next.md @@ -70,7 +70,6 @@ set shell id. - Fixed JsonAdapter crashing and providing bad data on read when using JsonObject. - Fixed JsonAdapter sending unnecessary property changes for primitive values. - Fixed JsonAdapter serialization for lists. -- Fixed pipewire crashes after hotplugging devices and changing default outputs. ## Packaging Changes diff --git a/src/core/logging.cpp b/src/core/logging.cpp index 1b19fab..415cf61 100644 --- a/src/core/logging.cpp +++ b/src/core/logging.cpp @@ -310,15 +310,10 @@ void LogManager::init( instance->rules->append(parser.rules()); } - instance->lastCategoryFilter = QLoggingCategory::installFilter(&LogManager::filterCategory); - - if (instance->lastCategoryFilter == &LogManager::filterCategory) { - qCFatal(logLogging) << "Quickshell's log filter has been installed twice. This is a bug."; - instance->lastCategoryFilter = nullptr; - } - qInstallMessageHandler(&LogManager::messageHandler); + instance->lastCategoryFilter = QLoggingCategory::installFilter(&LogManager::filterCategory); + qCDebug(logLogging) << "Creating offthread logger..."; auto* thread = new QThread(); instance->threadProxy.moveToThread(thread); diff --git a/src/core/paths.cpp b/src/core/paths.cpp index d361e3d..6555e54 100644 --- a/src/core/paths.cpp +++ b/src/core/paths.cpp @@ -64,7 +64,7 @@ QDir* QsPaths::baseRunDir() { if (this->baseRunState == DirState::Unknown) { auto runtimeDir = qEnvironmentVariable("XDG_RUNTIME_DIR"); if (runtimeDir.isEmpty()) { - runtimeDir = QString("/run/user/%1").arg(getuid()); + runtimeDir = QString("/run/user/$1").arg(getuid()); qCInfo(logPaths) << "XDG_RUNTIME_DIR was not set, defaulting to" << runtimeDir; } diff --git a/src/services/pipewire/defaults.cpp b/src/services/pipewire/defaults.cpp index b9c8e35..7a24a65 100644 --- a/src/services/pipewire/defaults.cpp +++ b/src/services/pipewire/defaults.cpp @@ -214,24 +214,13 @@ void PwDefaultTracker::setDefaultSink(PwNode* node) { qCInfo(logDefaults) << "Default sink changed to" << node; if (this->mDefaultSink != nullptr) { - // Targeted disconnect is used because this can also be the default configured sink. - QObject::disconnect( - this->mDefaultSink, - &PwBindableObject::destroying, - this, - &PwDefaultTracker::onDefaultSinkDestroyed - ); + QObject::disconnect(this->mDefaultSink, nullptr, this, nullptr); } this->mDefaultSink = node; if (node != nullptr) { - QObject::connect( - node, - &PwBindableObject::destroying, - this, - &PwDefaultTracker::onDefaultSinkDestroyed - ); + QObject::connect(node, &QObject::destroyed, this, &PwDefaultTracker::onDefaultSinkDestroyed); } emit this->defaultSinkChanged(); @@ -255,24 +244,13 @@ void PwDefaultTracker::setDefaultSource(PwNode* node) { qCInfo(logDefaults) << "Default source changed to" << node; if (this->mDefaultSource != nullptr) { - // Targeted disconnect is used because this can also be the default configured source. - QObject::disconnect( - this->mDefaultSource, - &PwBindableObject::destroying, - this, - &PwDefaultTracker::onDefaultSourceDestroyed - ); + QObject::disconnect(this->mDefaultSource, nullptr, this, nullptr); } this->mDefaultSource = node; if (node != nullptr) { - QObject::connect( - node, - &PwBindableObject::destroying, - this, - &PwDefaultTracker::onDefaultSourceDestroyed - ); + QObject::connect(node, &QObject::destroyed, this, &PwDefaultTracker::onDefaultSourceDestroyed); } emit this->defaultSourceChanged(); @@ -296,13 +274,7 @@ void PwDefaultTracker::setDefaultConfiguredSink(PwNode* node) { qCInfo(logDefaults) << "Default configured sink changed to" << node; if (this->mDefaultConfiguredSink != nullptr) { - // Targeted disconnect is used because this can also be the default sink. - QObject::disconnect( - this->mDefaultConfiguredSink, - &PwBindableObject::destroying, - this, - &PwDefaultTracker::onDefaultConfiguredSinkDestroyed - ); + QObject::disconnect(this->mDefaultConfiguredSink, nullptr, this, nullptr); } this->mDefaultConfiguredSink = node; @@ -310,7 +282,7 @@ void PwDefaultTracker::setDefaultConfiguredSink(PwNode* node) { if (node != nullptr) { QObject::connect( node, - &PwBindableObject::destroying, + &QObject::destroyed, this, &PwDefaultTracker::onDefaultConfiguredSinkDestroyed ); @@ -337,13 +309,7 @@ void PwDefaultTracker::setDefaultConfiguredSource(PwNode* node) { qCInfo(logDefaults) << "Default configured source changed to" << node; if (this->mDefaultConfiguredSource != nullptr) { - // Targeted disconnect is used because this can also be the default source. - QObject::disconnect( - this->mDefaultConfiguredSource, - &PwBindableObject::destroying, - this, - &PwDefaultTracker::onDefaultConfiguredSourceDestroyed - ); + QObject::disconnect(this->mDefaultConfiguredSource, nullptr, this, nullptr); } this->mDefaultConfiguredSource = node; @@ -351,7 +317,7 @@ void PwDefaultTracker::setDefaultConfiguredSource(PwNode* node) { if (node != nullptr) { QObject::connect( node, - &PwBindableObject::destroying, + &QObject::destroyed, this, &PwDefaultTracker::onDefaultConfiguredSourceDestroyed );