From 50a4fe96237d870095b45e6ff1ac298f00d8ee2b Mon Sep 17 00:00:00 2001 From: Anthony Ruhier Date: Thu, 23 Nov 2023 00:34:23 +0100 Subject: [PATCH] privacy: fix visibility when a module is disabled Only consider a privacy module as visible if it is enabled in the configuration. Otherwise, when screensharing or audio-in or audio-out is in use but the associated module is not enabled, the privacy widget is empty but still considered as visible. --- src/modules/privacy/privacy.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/modules/privacy/privacy.cpp b/src/modules/privacy/privacy.cpp index e96f14fa..64a1572b 100644 --- a/src/modules/privacy/privacy.cpp +++ b/src/modules/privacy/privacy.cpp @@ -121,21 +121,22 @@ void Privacy::onPrivacyNodesChanged() { auto Privacy::update() -> void { mutex_.lock(); - bool screenshare = !nodes_screenshare.empty(); - bool audio_in = !nodes_audio_in.empty(); - bool audio_out = !nodes_audio_out.empty(); + bool screenshare, audio_in, audio_out; for (Gtk::Widget* widget : box_.get_children()) { PrivacyItem* module = dynamic_cast(widget); if (!module) continue; switch (module->privacy_type) { case util::PipewireBackend::PRIVACY_NODE_TYPE_VIDEO_INPUT: + screenshare = !nodes_screenshare.empty(); module->set_in_use(screenshare); break; case util::PipewireBackend::PRIVACY_NODE_TYPE_AUDIO_INPUT: + audio_in = !nodes_audio_in.empty(); module->set_in_use(audio_in); break; case util::PipewireBackend::PRIVACY_NODE_TYPE_AUDIO_OUTPUT: + audio_out = !nodes_audio_out.empty(); module->set_in_use(audio_out); break; case util::PipewireBackend::PRIVACY_NODE_TYPE_NONE: