INTEGRATION: CWS presfixes01 (1.4.6); FILE MERGED
2005/02/17 23:56:50 thb 1.4.6.4: #i42499# Made de-spriting of shape effects happen in new Activity::dequeued() method; removed Activity::end() method; fixed calculation of XSlideShow::update() wait interval; slightly modified pres time handling, pres time is now held during _all_ queue processing, including EventQueue (generated funny bounce and break effects, because delayed activities got out of sync); clarified documentation 2005/02/07 01:05:36 thb 1.4.6.3: #i38960# Slight adaptions for new timer handling: event and activities queue now share a timer, such that e.g. a hold on this timer affects the other queue, too; slight reworks to slidechangebase, now creating the slide bitmap(s) on start(), too. 2005/02/02 22:46:58 dbo 1.4.6.2: #i37777# - timing changes for activities queue - minor fixes Issue number: Submitted by: Reviewed by: 2005/01/27 15:58:17 dbo 1.4.6.1: #i39662# using shared timer for correct pausing Issue number: Submitted by: Reviewed by:
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
*
|
||||
* $RCSfile: eventqueue.cxx,v $
|
||||
*
|
||||
* $Revision: 1.4 $
|
||||
* $Revision: 1.5 $
|
||||
*
|
||||
* last change: $Author: rt $ $Date: 2004-11-26 18:53:02 $
|
||||
* last change: $Author: vg $ $Date: 2005-03-10 13:41:56 $
|
||||
*
|
||||
* The Contents of this file are made available subject to the terms of
|
||||
* either of the following licenses
|
||||
@@ -96,9 +96,10 @@ namespace presentation
|
||||
}
|
||||
|
||||
|
||||
EventQueue::EventQueue() :
|
||||
maEvents(),
|
||||
maElapsedTime()
|
||||
EventQueue::EventQueue(
|
||||
boost::shared_ptr<canvas::tools::ElapsedTime> const & pPresTimer )
|
||||
: maEvents(),
|
||||
mpTimer( pPresTimer )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -122,7 +123,7 @@ namespace presentation
|
||||
// prepare entry
|
||||
EventEntry entry;
|
||||
|
||||
const double nCurrTime( maElapsedTime.getElapsedTime() );
|
||||
const double nCurrTime( mpTimer->getElapsedTime() );
|
||||
entry.pEvent = rEvent;
|
||||
entry.nTime = rEvent->getActivationTime( nCurrTime );
|
||||
|
||||
@@ -138,14 +139,14 @@ namespace presentation
|
||||
return true;
|
||||
}
|
||||
|
||||
void EventQueue::process( double* pTimeoutForNextCall )
|
||||
double EventQueue::process()
|
||||
{
|
||||
VERBOSE_TRACE( "EventQueue: heartbeat" );
|
||||
|
||||
// perform topmost, ready-to-execute event
|
||||
// =======================================
|
||||
|
||||
const double nCurrTime( maElapsedTime.getElapsedTime() );
|
||||
const double nCurrTime( mpTimer->getElapsedTime() );
|
||||
|
||||
// process ready/elapsed events. Note that the 'perceived'
|
||||
// current time remains constant for this loop, thus we're
|
||||
@@ -197,23 +198,10 @@ namespace presentation
|
||||
}
|
||||
}
|
||||
|
||||
// setup optional timeout value
|
||||
if( pTimeoutForNextCall )
|
||||
{
|
||||
if( maEvents.empty() )
|
||||
{
|
||||
// no further events available,
|
||||
*pTimeoutForNextCall = ::std::numeric_limits<double>::max();
|
||||
}
|
||||
else
|
||||
{
|
||||
// ensure nothing negative is returned. Fetch
|
||||
// fresh current time, event processing above
|
||||
// might have taken significant time
|
||||
*pTimeoutForNextCall = ::std::max(0.0,
|
||||
maEvents.top().nTime - maElapsedTime.getElapsedTime());
|
||||
}
|
||||
}
|
||||
// return time for next entry (if any)
|
||||
return maEvents.empty() ?
|
||||
::std::numeric_limits<double>::max() :
|
||||
maEvents.top().nTime;
|
||||
}
|
||||
|
||||
bool EventQueue::isEmpty()
|
||||
|
||||
Reference in New Issue
Block a user