| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #pragma once
- #include <chrono>
- #include <functional>
- #include <sigc++/signal.h>
- #include <thread>
- #include <atomic>
- #include <mutex>
- #include <condition_variable>
- class Timer {
- public:
- Timer();
- ~Timer();
- // Start timer
- void start();
-
- // Stop timer
- void stop();
-
- // Reset timer
- void reset();
-
- // Get elapsed time in milliseconds
- int getElapsedTime() const;
-
- // Signal emitted on timer tick
- sigc::signal<void(int)> timerSignal;
- private:
- std::chrono::time_point<std::chrono::steady_clock> m_startTime;
- std::atomic<bool> m_running;
-
- // Thread handling
- std::thread m_timerThread;
- std::mutex m_mutex;
- std::condition_variable m_condition;
-
- // Timer thread function
- void timerThread();
- };
|