summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2006-04-06 14:42:12 +0000
committerVladimir Glazounov <vg@openoffice.org>2006-04-06 14:42:12 +0000
commit972fcc578b29dac0bf092ef4bc7c7902fd9f66eb (patch)
treef3531d818fa53e1a06721081a75c350ad8e443d7 /vcl
parentff2994cf66e42fbbb30b53a22292c5c32f122126 (diff)
INTEGRATION: CWS vcl56 (1.27.102); FILE MERGED
2006/03/23 18:50:09 pl 1.27.102.1: #i60519# let timers elapse during windows internal dispatch message loops
Diffstat (limited to 'vcl')
-rw-r--r--vcl/win/source/app/salinst.cxx19
1 files changed, 16 insertions, 3 deletions
diff --git a/vcl/win/source/app/salinst.cxx b/vcl/win/source/app/salinst.cxx
index 0fa16d81a1d5..f53964010275 100644
--- a/vcl/win/source/app/salinst.cxx
+++ b/vcl/win/source/app/salinst.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: salinst.cxx,v $
*
- * $Revision: 1.28 $
+ * $Revision: 1.29 $
*
- * last change: $Author: obo $ $Date: 2006-03-24 13:49:10 $
+ * last change: $Author: vg $ $Date: 2006-04-06 15:42:12 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -420,6 +420,8 @@ SalData::SalData()
mpDitherHigh = 0; // Dither mapping table
mnTimerMS = 0; // Current Time (in MS) of the Timer
mnTimerOrgMS = 0; // Current Original Time (in MS)
+ mnNextTimerTime = 0;
+ mnLastEventTime = 0;
mnTimerId = 0; // windows timer id
mbInTimerProc = FALSE; // timer event is currently being dispatched
mhSalObjMsgHook = 0; // hook to get interesting msg for SalObject
@@ -717,14 +719,17 @@ static void ImplSalDispatchMessage( MSG* pMsg )
void ImplSalYield( BOOL bWait )
{
MSG aMsg;
+ bool bMsg = false;
- WinSalInstance* pInst = GetSalData()->mpFirstInstance;
+ SalData* pSalData = GetSalData();
+ WinSalInstance* pInst = pSalData->mpFirstInstance;
if ( bWait )
{
if ( ImplGetMessage( &aMsg, 0, 0, 0 ) )
{
TranslateMessage( &aMsg );
ImplSalDispatchMessage( &aMsg );
+ bMsg = true;
}
}
else
@@ -733,8 +738,16 @@ void ImplSalYield( BOOL bWait )
{
TranslateMessage( &aMsg );
ImplSalDispatchMessage( &aMsg );
+ bMsg = true;
}
}
+
+ if( bMsg )
+ {
+ pSalData->mnLastEventTime = aMsg.time;
+ if( pSalData->mnNextTimerTime && pSalData->mnNextTimerTime < aMsg.time )
+ SalTimerProc( 0, 0, 0, aMsg.time );
+ }
}
// -----------------------------------------------------------------------