Apache OpenOffice (AOO) Bugzilla – Full Text Issue Listing |
Summary: | Slide show needs idle callback | ||
---|---|---|---|
Product: | Impress | Reporter: | groucho266 |
Component: | code | Assignee: | groucho266 |
Status: | CLOSED FIXED | QA Contact: | issues@graphics <issues> |
Severity: | Trivial | ||
Priority: | P3 | CC: | issues |
Version: | DEV300m39 | ||
Target Milestone: | OOo 3.3 | ||
Hardware: | All | ||
OS: | All | ||
Issue Type: | ENHANCEMENT | Latest Confirmation in: | --- |
Developer Difficulty: | --- |
Description
groucho266
2009-02-03 14:55:01 UTC
added: static void Application::EnableNoYieldMode( bool i_bNoYield ); static void Application::AddPostYieldListener( const Link& i_rListener ); static void Application::RemovePostYieldListener( const Link& i_rListener ); please check if that is useful to you The slide show now uses the new vcl feature during animations. Synchronization of a steady frame rate (not too fast and not too slow) is done in slideshow/source/enginge/slideshowimpl.cxx. Changes in sd have revision 271262. Changes in slideshow have revision 271263. As the above does not seem to be very enlightening I will try to explain what I am trying to do for this issue. During animations in the slideshow (ActivitiesQueue is not empty) VCL is put into a special mode that a) processes all due timers and b) calls the registered (with AddPostYieldListener) listener as often as possible (no wait or sleep). This allows the SlideShowImpl::update() method to be called (from SD, triggered by VCL via the post-yield listener) as often as possible. Depending on the hardware this could result in frame rates higher as desired (more than 60 frames can not be displayed on many monitors). Therefore the frame rate is reduced to the desired number by waiting between preparation of the new frame and displaying it. The major change made for this issue was to move the code that waits from VCL (timer based) to the slideshow module. Furthermore it is done now with a combination of (wait/sleep, not yet implemented) and busy wait. This reduces the error of the duration between frames from the tens of milliseconds down to sub-millisecond values. What remains to be done is to render the frame not for the time at which rendering starts but for the time at which the frame will be displayed. Changing target to OOo 3.3 I can verify PLs changes in VCL. PL has reviewed my changes in sd. |