diff options
author | crupest <crupest@outlook.com> | 2020-03-18 21:16:25 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-03-18 21:16:25 +0800 |
commit | b129c5a144dfb116082689ffaaa9ac78e2403656 (patch) | |
tree | 08c3540569260c4231996f769040beb3737e5b4b /src/win/native/ui_application.cpp | |
parent | abf604f8c6ec89c8d7df7062fe10fd17c60d5719 (diff) | |
download | cru-b129c5a144dfb116082689ffaaa9ac78e2403656.tar.gz cru-b129c5a144dfb116082689ffaaa9ac78e2403656.tar.bz2 cru-b129c5a144dfb116082689ffaaa9ac78e2403656.zip |
...
Diffstat (limited to 'src/win/native/ui_application.cpp')
-rw-r--r-- | src/win/native/ui_application.cpp | 29 |
1 files changed, 9 insertions, 20 deletions
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) { |