From de560fe8102d4cda4d87fbe39b7701da0dce8181 Mon Sep 17 00:00:00 2001
From: patrick96
Date: Sun, 28 Aug 2022 14:56:56 +0200
Subject: [PATCH] tray: Remove mutex
---
include/x11/tray_manager.hpp | 5 ++---
src/x11/tray_manager.cpp | 38 +++++++++++++++++-------------------
2 files changed, 20 insertions(+), 23 deletions(-)
diff --git a/include/x11/tray_manager.hpp b/include/x11/tray_manager.hpp
index 129cf025..d671d33e 100644
--- a/include/x11/tray_manager.hpp
+++ b/include/x11/tray_manager.hpp
@@ -157,6 +157,8 @@ class tray_manager
/**
* Current width of the tray.
+ *
+ * Caches the value calculated from all mapped tray clients.
*/
unsigned m_tray_width{0};
@@ -169,9 +171,6 @@ class tray_manager
thread m_delaythread;
- // TODO try to remove mutex
- mutable mutex m_mtx{};
-
bool m_firstactivation{true};
};
diff --git a/src/x11/tray_manager.cpp b/src/x11/tray_manager.cpp
index 13d883b5..1064f0bc 100644
--- a/src/x11/tray_manager.cpp
+++ b/src/x11/tray_manager.cpp
@@ -174,6 +174,7 @@ void tray_manager::deactivate(bool clear_selection) {
m_connection.flush();
+ // TODO update through module
m_sig.emit(signals::eventqueue::notify_forcechange{});
}
@@ -183,24 +184,23 @@ void tray_manager::deactivate(bool clear_selection) {
void tray_manager::reconfigure() {
if (!m_opts.selection_owner) {
return;
- } else if (m_mtx.try_lock()) {
- std::unique_lock guard(m_mtx, std::adopt_lock);
-
- try {
- reconfigure_window();
- } catch (const exception& err) {
- m_log.err("Failed to reconfigure tray window (%s)", err.what());
- }
-
- try {
- reconfigure_clients();
- } catch (const exception& err) {
- m_log.err("Failed to reconfigure tray clients (%s)", err.what());
- }
- guard.unlock();
- m_connection.flush();
}
+ try {
+ reconfigure_window();
+ } catch (const exception& err) {
+ m_log.err("Failed to reconfigure tray window (%s)", err.what());
+ }
+
+ try {
+ reconfigure_clients();
+ } catch (const exception& err) {
+ m_log.err("Failed to reconfigure tray clients (%s)", err.what());
+ }
+
+ m_connection.flush();
+
+ // TODO update through module
m_sig.emit(signals::eventqueue::notify_forcechange{});
}
@@ -240,13 +240,11 @@ void tray_manager::reconfigure_clients() {
* Refresh the bar window by clearing it along with each client window
*/
void tray_manager::refresh_window() {
- if (!m_activated || m_hidden || !m_mtx.try_lock()) {
+ if (!m_activated || m_hidden) {
return;
}
- std::lock_guard lock(m_mtx, std::adopt_lock);
-
- m_log.trace("tray: Refreshing window");
+ m_log.trace("tray: Refreshing clients");
for (auto& client : m_clients) {
try {