summaryrefslogtreecommitdiff
path: root/vcl/win
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2018-08-25 02:56:32 +0200
committerJan-Marek Glogowski <glogow@fbihome.de>2018-08-27 15:12:58 +0200
commit0073101ec520e40727800f1d90b3b211fd6ec8d8 (patch)
tree37fbf3670d9c24771c8f9e558615e942002dbf8c /vcl/win
parent4c356a3e5eafea92856824f902181b59ffed4fcc (diff)
WIN use the SetTimer timer as one-shot
SetTimer is a continuous timer, but we want to use it as a one-shot, so make sure we actually kill it when not needed. Change-Id: If6f5374346dc530eb664545ade2c2955885941b5 Reviewed-on: https://gerrit.libreoffice.org/59589 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
Diffstat (limited to 'vcl/win')
-rw-r--r--vcl/win/app/saltimer.cxx11
1 files changed, 9 insertions, 2 deletions
diff --git a/vcl/win/app/saltimer.cxx b/vcl/win/app/saltimer.cxx
index 17478bf58fdd..e89dbd561425 100644
--- a/vcl/win/app/saltimer.cxx
+++ b/vcl/win/app/saltimer.cxx
@@ -42,8 +42,11 @@ void WinSalTimer::ImplStop()
const WinSalInstance *pInst = pSalData->mpInstance;
assert( !pInst || pSalData->mnAppThreadId == GetCurrentThreadId() );
- if ( m_bForceRealTimer && m_bDirectTimeout )
+ if ( m_bSetTimerRunning )
+ {
+ m_bSetTimerRunning = false;
KillTimer( GetSalData()->mpInstance->mhComWnd, m_aWmTimerId );
+ }
m_bDirectTimeout = false;
const HANDLE hTimer = m_nTimerId;
@@ -83,6 +86,7 @@ void WinSalTimer::ImplStart( sal_uLong nMS )
// with posted 0ms SAL_MSG_TIMER_CALLBACK messages
SetTimer( GetSalData()->mpInstance->mhComWnd, m_aWmTimerId,
USER_TIMER_MINIMUM, nullptr );
+ m_bSetTimerRunning = true;
}
// we don't need any wakeup message, as this code can just run in the
// main thread!
@@ -92,6 +96,7 @@ WinSalTimer::WinSalTimer()
: m_nTimerId( nullptr )
, m_bDirectTimeout( false )
, m_bForceRealTimer( false )
+ , m_bSetTimerRunning( false )
{
}
@@ -183,9 +188,11 @@ void WinSalTimer::SetForceRealTimer( const bool bVal )
void WinSalTimer::ImplHandle_WM_TIMER( const WPARAM aWPARAM )
{
assert( m_aWmTimerId == aWPARAM );
- if ( !(m_aWmTimerId == aWPARAM && m_bDirectTimeout && m_bForceRealTimer) )
+ if ( !(m_aWmTimerId == aWPARAM && m_bSetTimerRunning) )
return;
+ m_bSetTimerRunning = false;
+ KillTimer( GetSalData()->mpInstance->mhComWnd, m_aWmTimerId );
ImplHandleElapsedTimer();
}