diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/platform/native/ui_application.cpp | 10 | ||||
-rw-r--r-- | src/win/native/timer.cpp | 4 | ||||
-rw-r--r-- | src/win/native/timer.hpp | 2 | ||||
-rw-r--r-- | src/win/native/ui_application.cpp | 29 |
4 files changed, 22 insertions, 23 deletions
diff --git a/src/platform/native/ui_application.cpp b/src/platform/native/ui_application.cpp index b4794182..212d9104 100644 --- a/src/platform/native/ui_application.cpp +++ b/src/platform/native/ui_application.cpp @@ -2,4 +2,14 @@ namespace cru::platform::native { IUiApplication* IUiApplication::instance = nullptr; + +IUiApplication::IUiApplication() { + if (instance) { + throw std::runtime_error("An ui application has already been created."); + } + + instance = this; } + +IUiApplication::~IUiApplication() { instance = nullptr; } +} // namespace cru::platform::native diff --git a/src/win/native/timer.cpp b/src/win/native/timer.cpp index ed2ae069..66743963 100644 --- a/src/win/native/timer.cpp +++ b/src/win/native/timer.cpp @@ -4,10 +4,10 @@ namespace cru::platform::native::win { TimerManager::TimerManager(GodWindow* god_window) { god_window_ = god_window; } UINT_PTR TimerManager::CreateTimer(const UINT milliseconds, const bool loop, - const TimerAction& action) { + TimerAction action) { const auto id = current_count_++; ::SetTimer(god_window_->GetHandle(), id, milliseconds, nullptr); - map_.emplace(id, std::make_pair(loop, action)); + map_.emplace(id, std::make_pair(loop, std::move(action))); return id; } diff --git a/src/win/native/timer.hpp b/src/win/native/timer.hpp index 10658cf1..6c4871dd 100644 --- a/src/win/native/timer.hpp +++ b/src/win/native/timer.hpp @@ -21,7 +21,7 @@ class TimerManager : public Object { ~TimerManager() override = default; - UINT_PTR CreateTimer(UINT milliseconds, bool loop, const TimerAction& action); + UINT_PTR CreateTimer(UINT milliseconds, bool loop, TimerAction action); void KillTimer(UINT_PTR id); std::optional<std::pair<bool, TimerAction>> GetAction(UINT_PTR id); diff --git a/src/win/native/ui_application.cpp b/src/win/native/ui_application.cpp index 9ab61551..892acd50 100644 --- a/src/win/native/ui_application.cpp +++ b/src/win/native/ui_application.cpp @@ -18,13 +18,7 @@ namespace cru::platform::native::win { WinUiApplication* WinUiApplication::instance = nullptr; WinUiApplication::WinUiApplication() { - if (instance) { - throw new std::runtime_error( - "Already created an instance of WinUiApplication"); - } - instance = this; - IUiApplication::instance = this; instance_handle_ = ::GetModuleHandleW(nullptr); if (!instance_handle_) @@ -42,10 +36,7 @@ WinUiApplication::WinUiApplication() { cursor_manager_ = std::make_unique<WinCursorManager>(); } -WinUiApplication::~WinUiApplication() { - IUiApplication::instance = nullptr; - instance = nullptr; -} +WinUiApplication::~WinUiApplication() { instance = nullptr; } int WinUiApplication::Run() { MSG msg; @@ -63,13 +54,13 @@ void WinUiApplication::RequestQuit(const int quit_code) { ::PostQuitMessage(quit_code); } -void WinUiApplication::AddOnQuitHandler(const std::function<void()>& handler) { - quit_handlers_.push_back(handler); +void WinUiApplication::AddOnQuitHandler(std::function<void()> handler) { + quit_handlers_.push_back(std::move(handler)); } -void WinUiApplication::InvokeLater(const std::function<void()>& action) { +void WinUiApplication::InvokeLater(std::function<void()> action) { // copy the action to a safe place - auto p_action_copy = new std::function<void()>(action); + auto p_action_copy = new std::function<void()>(std::move(action)); if (::PostMessageW(GetGodWindow()->GetHandle(), invoke_later_message_id, reinterpret_cast<WPARAM>(p_action_copy), 0) == 0) @@ -77,17 +68,15 @@ void WinUiApplication::InvokeLater(const std::function<void()>& action) { } unsigned long WinUiApplication::SetTimeout( - std::chrono::milliseconds milliseconds, - const std::function<void()>& action) { + std::chrono::milliseconds milliseconds, std::function<void()> action) { return static_cast<unsigned long>(timer_manager_->CreateTimer( - static_cast<UINT>(milliseconds.count()), false, action)); + static_cast<UINT>(milliseconds.count()), false, std::move(action))); } unsigned long WinUiApplication::SetInterval( - std::chrono::milliseconds milliseconds, - const std::function<void()>& action) { + std::chrono::milliseconds milliseconds, std::function<void()> action) { return static_cast<unsigned long>(timer_manager_->CreateTimer( - static_cast<UINT>(milliseconds.count()), true, action)); + static_cast<UINT>(milliseconds.count()), true, std::move(action))); } void WinUiApplication::CancelTimer(unsigned long id) { |