From bc33b510939bc5ec5b23aab6a0053641b7b0c55d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Tue, 2 May 2017 18:45:23 +0200 Subject: [PATCH] `IdleRegister` cleanups --- rtgui/guiutils.cc | 17 ++--------------- rtgui/guiutils.h | 8 +++++++- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc index 6dadde842..91284e983 100644 --- a/rtgui/guiutils.cc +++ b/rtgui/guiutils.cc @@ -43,17 +43,6 @@ IdleRegister::~IdleRegister() destroy(); } - -namespace { - -struct DataWrapper { - IdleRegister* const self; - GSourceFunc function; - gpointer data; -}; - -} // namespace - void IdleRegister::add(GSourceFunc function, gpointer data, gint priority) { const auto dispatch = [](gpointer data) -> gboolean { @@ -61,7 +50,6 @@ void IdleRegister::add(GSourceFunc function, gpointer data, gint priority) if (!data_wrapper->function(data_wrapper->data)) { data_wrapper->self->mutex.lock(); - //g_source_remove(data_wrapper->self->ids[data_wrapper]); data_wrapper->self->ids.erase(data_wrapper); data_wrapper->self->mutex.unlock(); @@ -86,10 +74,9 @@ void IdleRegister::add(GSourceFunc function, gpointer data, gint priority) void IdleRegister::destroy() { mutex.lock(); - for (const auto id : ids) { + for (const auto& id : ids) { g_source_remove(id.second); - DataWrapper *w = static_cast(id.first); - delete w; + delete id.first; } ids.clear(); mutex.unlock(); diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h index b2ebaa80a..a6ec916f0 100644 --- a/rtgui/guiutils.h +++ b/rtgui/guiutils.h @@ -54,7 +54,13 @@ public: void destroy(); private: - std::map ids; + struct DataWrapper { + IdleRegister* const self; + GSourceFunc function; + gpointer data; + }; + + std::map ids; MyMutex mutex; };