diff options
author | Michael Stahl <mstahl@redhat.com> | 2016-04-11 23:49:12 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2016-04-18 11:23:56 +0000 |
commit | 8a0e6b25219e59b12034348b8b264117059755ec (patch) | |
tree | 2dc90d9cf21dfd2c81c86d077f59e38737cbe0c5 /vcl/inc/win/salinst.h | |
parent | 8bf82dd3979871cc1284570fcb2b3dcaa442a17e (diff) |
tdf#96887 vcl: stop using periodic timers on WNT
Every time the periodic timer fires, it does a PostMessage() to the
main thread. The main thread will only process the first message and
discard the rest anyway, but with a short enough timer and other
threads hogging the SolarMutex it's possible that the message queue
overflows and other PostMessage calls fail with ERROR_NOT_ENOUGH_QUOTA.
Try to avoid the problem by having the WinSalTimer always be a one-shot
timer; when it fires and the main thread processes the posted message,
it is restarted with the new due time.
This requires creating a new TimerQueueTimer because
ChangeTimerQueueTimer only works on periodic timers.
Change-Id: I816bd3fa5fbfbea4f26be8ff680a1c916618d3f9
Reviewed-on: https://gerrit.libreoffice.org/24024
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'vcl/inc/win/salinst.h')
-rw-r--r-- | vcl/inc/win/salinst.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/vcl/inc/win/salinst.h b/vcl/inc/win/salinst.h index fe2c3414593e..43c0313efa7d 100644 --- a/vcl/inc/win/salinst.h +++ b/vcl/inc/win/salinst.h @@ -83,6 +83,7 @@ SalFrame* ImplSalCreateFrame( WinSalInstance* pInst, HWND hWndParent, SalFrameSt SalObject* ImplSalCreateObject( WinSalInstance* pInst, WinSalFrame* pParent ); HWND ImplSalReCreateHWND( HWND hWndParent, HWND oldhWnd, bool bAsChild ); void ImplSalStartTimer( sal_uIntPtr nMS, bool bMutex = false ); +void ImplSalStopTimer(); #endif // INCLUDED_VCL_INC_WIN_SALINST_H |