Explorar o código

LibCore: Add a convenience constructor for CTimer.

new CTimer(250, [] { thing_to_do_every_250_msec(); });
Andreas Kling %!s(int64=6) %!d(string=hai) anos
pai
achega
a3e8fc3d9c
Modificáronse 3 ficheiros con 11 adicións e 4 borrados
  1. 8 0
      LibCore/CTimer.cpp
  2. 1 0
      LibCore/CTimer.h
  3. 2 4
      Servers/WindowServer/WSWindowManager.cpp

+ 8 - 0
LibCore/CTimer.cpp

@@ -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;
 }

+ 1 - 0
LibCore/CTimer.h

@@ -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();

+ 2 - 4
Servers/WindowServer/WSWindowManager.cpp

@@ -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();