AutoCatGnome/coro/GLibMainContextExecutor.cpp

36 lines
860 B
C++

//
// Created by selim on 09.05.2022.
//
#include "GLibMainContextExecutor.h"
#include <glib.h>
/*
int callback(void* data) {
auto executor = reinterpret_cast<GLibMainContextExecutor*>(data);
executor->runFront();
return G_SOURCE_REMOVE;
}
void GLibMainContextExecutor::add(folly::Func func) {
std::lock_guard<std::mutex> lock(_mutex);
_tasks.push(std::move(func));
g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, callback, this, nullptr);
}
void GLibMainContextExecutor::runFront() {
std::lock_guard<std::mutex> lock(_mutex);
if(!_tasks.empty()) {
auto task = std::move(_tasks.front());
_tasks.pop();
task();
}
}
folly::Executor::KeepAlive<GLibMainContextExecutor> GLibMainContextExecutor::instance() {
static GLibMainContextExecutor instance;
return folly::getKeepAliveToken(instance);
}
*/