struct ScreenUpdater::ImplScreenUpdater
{ /** List of registered ViewUpdaters, to consult for necessary updates
*/
ThreadUnsafeListenerContainer<
ViewUpdateSharedPtr,
std::vector<ViewUpdateSharedPtr> > maUpdaters;
/// Views that have been notified for update
UpdateRequestVector maViewUpdateRequests;
/// List of View. Used to issue screen updates on.
UnoViewContainer const& mrViewContainer;
/// True, if a notifyUpdate() for all views has been issued. bool mbUpdateAllRequest;
/// True, if at least one notifyUpdate() call had bViewClobbered set bool mbViewClobbered;
/// The screen is updated only when mnLockCount==0
sal_Int32 mnLockCount;
void ScreenUpdater::commitUpdates()
{ if (mpImpl->mnLockCount > 0) return;
// cases:
// (a) no update necessary at all
// (b) no ViewUpdate-generated update // I. update all views requested -> for_each( mrViewContainer ) // II. update some views requested -> for_each( maViewUpdateRequests )
// (c) ViewUpdate-triggered update - update all views
// any ViewUpdate-triggered updates? constbool bViewUpdatesNeeded(
mpImpl->maUpdaters.apply(
std::mem_fn(&ViewUpdate::needsUpdate)) );
void ScreenUpdater::requestImmediateUpdate()
{ if (mpImpl->mnLockCount > 0) return;
// TODO(F2): This will interfere with other updates, since it // happens out-of-sync with main animation loop. Might cause // artifacts. for( autoconst& pView : mpImpl->mrViewContainer )
pView->updateScreen();
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.