summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/m_gui.h1
-rw-r--r--libs/win32/mir_core.libbin461678 -> 461970 bytes
-rw-r--r--libs/win64/mir_core.libbin466490 -> 466792 bytes
-rw-r--r--src/mir_core/src/CTimer.cpp27
-rw-r--r--src/mir_core/src/mir_core.def1
-rw-r--r--src/mir_core/src/mir_core64.def1
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
index 14fc52674b..40864ec163 100644
--- a/libs/win32/mir_core.lib
+++ b/libs/win32/mir_core.lib
Binary files differ
diff --git a/libs/win64/mir_core.lib b/libs/win64/mir_core.lib
index 6cf66cde34..3c7ea2205a 100644
--- a/libs/win64/mir_core.lib
+++ b/libs/win64/mir_core.lib
Binary files differ
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, &param);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+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