LibCore: Add a convenience constructor for CTimer.

new CTimer(250, [] { thing_to_do_every_250_msec(); });
This commit is contained in:
Andreas Kling 2019-04-14 05:44:15 +02:00
parent 2af729a58a
commit a3e8fc3d9c
Notes: sideshowbarker 2024-07-19 14:43:16 +09:00
3 changed files with 11 additions and 4 deletions

View File

@ -5,6 +5,13 @@ CTimer::CTimer(CObject* parent)
{
}
CTimer::CTimer(int interval, Function<void()>&& timeout_handler, CObject* parent)
: CObject(parent)
, on_timeout(move(timeout_handler))
{
start(interval);
}
CTimer::~CTimer()
{
}
@ -18,6 +25,7 @@ void CTimer::start(int interval)
{
if (m_active)
return;
m_interval = interval;
start_timer(interval);
m_active = true;
}

View File

@ -6,6 +6,7 @@
class CTimer final : public CObject {
public:
explicit CTimer(CObject* parent = nullptr);
CTimer(int interval, Function<void()>&& timeout_handler, CObject* parent = nullptr);
virtual ~CTimer() override;
void start();

View File

@ -142,8 +142,7 @@ WSWindowManager::WSWindowManager()
// NOTE: This ensures that the system menu has the correct dimensions.
set_current_menubar(nullptr);
auto* timer = new CTimer;
timer->on_timeout = [this] {
new CTimer(300, [this] {
static time_t last_update_time;
time_t now = time(nullptr);
if (now != last_update_time || m_cpu_monitor.is_dirty()) {
@ -151,8 +150,7 @@ WSWindowManager::WSWindowManager()
last_update_time = now;
m_cpu_monitor.set_dirty(false);
}
};
timer->start(300);
});
invalidate();
compose();