IdleRegister
cleanups
This commit is contained in:
parent
7553d86b11
commit
bc33b51093
@ -43,17 +43,6 @@ IdleRegister::~IdleRegister()
|
|||||||
destroy();
|
destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
struct DataWrapper {
|
|
||||||
IdleRegister* const self;
|
|
||||||
GSourceFunc function;
|
|
||||||
gpointer data;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
void IdleRegister::add(GSourceFunc function, gpointer data, gint priority)
|
void IdleRegister::add(GSourceFunc function, gpointer data, gint priority)
|
||||||
{
|
{
|
||||||
const auto dispatch = [](gpointer data) -> gboolean {
|
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)) {
|
if (!data_wrapper->function(data_wrapper->data)) {
|
||||||
data_wrapper->self->mutex.lock();
|
data_wrapper->self->mutex.lock();
|
||||||
//g_source_remove(data_wrapper->self->ids[data_wrapper]);
|
|
||||||
data_wrapper->self->ids.erase(data_wrapper);
|
data_wrapper->self->ids.erase(data_wrapper);
|
||||||
data_wrapper->self->mutex.unlock();
|
data_wrapper->self->mutex.unlock();
|
||||||
|
|
||||||
@ -86,10 +74,9 @@ void IdleRegister::add(GSourceFunc function, gpointer data, gint priority)
|
|||||||
void IdleRegister::destroy()
|
void IdleRegister::destroy()
|
||||||
{
|
{
|
||||||
mutex.lock();
|
mutex.lock();
|
||||||
for (const auto id : ids) {
|
for (const auto& id : ids) {
|
||||||
g_source_remove(id.second);
|
g_source_remove(id.second);
|
||||||
DataWrapper *w = static_cast<DataWrapper *>(id.first);
|
delete id.first;
|
||||||
delete w;
|
|
||||||
}
|
}
|
||||||
ids.clear();
|
ids.clear();
|
||||||
mutex.unlock();
|
mutex.unlock();
|
||||||
|
@ -54,7 +54,13 @@ public:
|
|||||||
void destroy();
|
void destroy();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<void*, guint> ids;
|
struct DataWrapper {
|
||||||
|
IdleRegister* const self;
|
||||||
|
GSourceFunc function;
|
||||||
|
gpointer data;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::map<const DataWrapper*, guint> ids;
|
||||||
MyMutex mutex;
|
MyMutex mutex;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user