aboutsummaryrefslogtreecommitdiff
path: root/src/win/native/ui_application.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-03-18 21:16:25 +0800
committercrupest <crupest@outlook.com>2020-03-18 21:16:25 +0800
commitb129c5a144dfb116082689ffaaa9ac78e2403656 (patch)
tree08c3540569260c4231996f769040beb3737e5b4b /src/win/native/ui_application.cpp
parentabf604f8c6ec89c8d7df7062fe10fd17c60d5719 (diff)
downloadcru-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.cpp29
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) {