refactor(per_app_volume): remove redundant 2s polling

- stream-added/stream-removed signals already handle app list updates
- Removed _auto_refresh(), _on_map/_on_unmap timer management
- Removed _last_app_names tracking (unused without polling)
This commit is contained in:
sankalp committed 2026-07-18 21:43:29 +05:45
1 parent 2a9964a8e5
commit 44f1103259
1 file changed
-38
@@ -65,7 +65,6 @@ class PerAppVolumeControl(Box):
self._app_widgets = {}
self._signal_connections = []
self._destroyed = False
self._refresh_timer = None
# Header with back button
self.header = Box(
@@ -112,38 +111,9 @@ class PerAppVolumeControl(Box):
audio_service.connect("stream-removed", self._on_stream_changed)
)
# Track last known app names to avoid unnecessary rebuilds
self._last_app_names = frozenset()
# Initial population
self._populate_apps()
self.connect("map", self._on_map)
self.connect("unmap", self._on_unmap)
def _auto_refresh(self):
"""Auto-refresh the application list every 2 seconds"""
if self._destroyed:
self._refresh_timer = None
return False
if not audio_service:
return True
apps = audio_service.applications or []
current_names = frozenset(a.name or "" for a in apps)
if current_names != self._last_app_names:
self._last_app_names = current_names
self._populate_apps()
return True
def _on_map(self, *_):
if self._refresh_timer is None:
self._refresh_timer = GLib.timeout_add_seconds(2, self._auto_refresh)
def _on_unmap(self, *_):
if self._refresh_timer is not None:
GLib.source_remove(self._refresh_timer)
self._refresh_timer = None
def _go_back(self, *_):
"""Return to main control center view"""
self.control_center.close_per_app_volume()
@@ -354,14 +324,6 @@ class PerAppVolumeControl(Box):
"""Clean up resources"""
self._destroyed = True
# Stop the auto-refresh timer
if self._refresh_timer is not None:
try:
GLib.source_remove(self._refresh_timer)
except Exception as e:
logger.error(f"An error occurred: {e}")
self._refresh_timer = None
# Disconnect audio service signals
if audio_service:
for connection in self._signal_connections: