diff options
-rw-r--r-- | include/m_gui.h | 1 | ||||
-rw-r--r-- | libs/win32/mir_core.lib | bin | 461678 -> 461970 bytes | |||
-rw-r--r-- | libs/win64/mir_core.lib | bin | 466490 -> 466792 bytes | |||
-rw-r--r-- | src/mir_core/src/CTimer.cpp | 27 | ||||
-rw-r--r-- | src/mir_core/src/mir_core.def | 1 | ||||
-rw-r--r-- | src/mir_core/src/mir_core64.def | 1 |
6 files changed, 28 insertions, 2 deletions
diff --git a/include/m_gui.h b/include/m_gui.h index 817c08e8c1..3f5715746d 100644 --- a/include/m_gui.h +++ b/include/m_gui.h @@ -488,6 +488,7 @@ public: CTimer(CDlgBase* wnd, UINT_PTR idEvent);
__forceinline UINT_PTR GetEventId() const { return m_idEvent; }
+ __forceinline HWND GetHwnd() const { return m_wnd->GetHwnd(); }
virtual BOOL OnTimer();
diff --git a/libs/win32/mir_core.lib b/libs/win32/mir_core.lib Binary files differindex 14fc52674b..40864ec163 100644 --- a/libs/win32/mir_core.lib +++ b/libs/win32/mir_core.lib diff --git a/libs/win64/mir_core.lib b/libs/win64/mir_core.lib Binary files differindex 6cf66cde34..3c7ea2205a 100644 --- a/libs/win64/mir_core.lib +++ b/libs/win64/mir_core.lib diff --git a/src/mir_core/src/CTimer.cpp b/src/mir_core/src/CTimer.cpp index d4df04649a..b0e990e05f 100644 --- a/src/mir_core/src/CTimer.cpp +++ b/src/mir_core/src/CTimer.cpp @@ -38,12 +38,35 @@ BOOL CTimer::OnTimer() return FALSE; } +///////////////////////////////////////////////////////////////////////////////////////// + +struct TStartParam +{ + CTimer *pTimer; + int period; +}; + +static INT_PTR CALLBACK stubStart(void *param) +{ + auto *p = (TStartParam *)param; + return ::SetTimer(p->pTimer->GetHwnd(), p->pTimer->GetEventId(), p->period, nullptr); +} + void CTimer::Start(int elapse) { - ::SetTimer(m_wnd->GetHwnd(), m_idEvent, elapse, nullptr); + TStartParam param = { this, elapse }; + CallFunctionSync(stubStart, ¶m); +} + +///////////////////////////////////////////////////////////////////////////////////////// + +static INT_PTR CALLBACK stubStop(void *param) +{ + auto *p = (CTimer*)param; + return ::KillTimer(p->GetHwnd(), p->GetEventId()); } void CTimer::Stop() { - ::KillTimer(m_wnd->GetHwnd(), m_idEvent); + CallFunctionSync(stubStop, this); } diff --git a/src/mir_core/src/mir_core.def b/src/mir_core/src/mir_core.def index 1b22df32d6..8cf65ac054 100644 --- a/src/mir_core/src/mir_core.def +++ b/src/mir_core/src/mir_core.def @@ -1451,3 +1451,4 @@ XmlGetChildText @1645 ?Unsigned64Value@XMLAttribute@tinyxml2@@QBE_KXZ @1666 NONAME
?RemoveControl@CDlgBase@@IAEXPAVCCtrlBase@@@Z @1667 NONAME
?assign@MBinBuffer@@QAEXPAXI@Z @1668 NONAME
+?GetHwnd@CTimer@@QBEPAUHWND__@@XZ @1669 NONAME
diff --git a/src/mir_core/src/mir_core64.def b/src/mir_core/src/mir_core64.def index 26b80a6021..ad6aff5753 100644 --- a/src/mir_core/src/mir_core64.def +++ b/src/mir_core/src/mir_core64.def @@ -1451,3 +1451,4 @@ XmlGetChildText @1645 ?Unsigned64Value@XMLAttribute@tinyxml2@@QEBA_KXZ @1666 NONAME
?RemoveControl@CDlgBase@@IEAAXPEAVCCtrlBase@@@Z @1667 NONAME
?assign@MBinBuffer@@QEAAXPEAX_K@Z @1668 NONAME
+?GetHwnd@CTimer@@QEBAPEAUHWND__@@XZ @1669 NONAME
|