[Libreoffice-commits] core.git: Branch 'feature/slideshow_onlySprites' - slideshow/source
Michael Jaumann
meta_dev at yahoo.com
Fri Mar 6 06:05:04 PST 2015
slideshow/source/engine/slide/shapemanagerimpl.cxx | 35 ++++++++++++++++++---
slideshow/source/engine/slide/shapemanagerimpl.hxx | 2 +
2 files changed, 33 insertions(+), 4 deletions(-)
New commits:
commit 21009ded43206124264a17992cb554f89aac6b75
Author: Michael Jaumann <meta_dev at yahoo.com>
Date: Fri Mar 6 14:01:53 2015 +0000
added updateSprites in shapemangerimpl
Change-Id: I72e768be6bfaae1d6eccc25cebc12f995efdf55e
diff --git a/slideshow/source/engine/slide/shapemanagerimpl.cxx b/slideshow/source/engine/slide/shapemanagerimpl.cxx
index 47d12bf..0db4f80 100644
--- a/slideshow/source/engine/slide/shapemanagerimpl.cxx
+++ b/slideshow/source/engine/slide/shapemanagerimpl.cxx
@@ -343,8 +343,7 @@ void ShapeManagerImpl::viewsChanged()
bool ShapeManagerImpl::update()
{
- //if( mbEnabled)
- // return mpLayerManager->update();
+ updateSprites();
return false;
}
@@ -381,8 +380,36 @@ void ShapeManagerImpl::leaveAnimationMode( const AnimatableShapeSharedPtr& rShap
void ShapeManagerImpl::notifyShapeUpdate( const ShapeSharedPtr& rShape )
{
- // if( mbEnabled )
- // mpLayerManager->notifyShapeUpdate(rShape);
+ if( rShape->isVisible() || rShape->isBackgroundDetached() )
+ maUpdateShapes.insert( rShape );
+}
+
+bool ShapeManagerImpl::updateSprites()
+{
+ bool bRet(true);
+
+ // send update() calls to every shape in the
+ // maUpdateShapes set, which is _animated_ (i.e. a
+ // sprite).
+ const ShapeUpdateSet::const_iterator aEnd=maUpdateShapes.end();
+ ShapeUpdateSet::const_iterator aCurrShape=maUpdateShapes.begin();
+ while( aCurrShape != aEnd )
+ {
+ if( (*aCurrShape)->isBackgroundDetached() )
+ {
+ // can update shape directly, without
+ // affecting layer content (shape is
+ // currently displayed in a sprite)
+ if( !(*aCurrShape)->update() )
+ bRet = false; // delay error exit
+ }
+
+ ++aCurrShape;
+ }
+
+ maUpdateShapes.clear();
+
+ return bRet;
}
ShapeSharedPtr ShapeManagerImpl::lookupShape( uno::Reference< drawing::XShape > const & xShape ) const
diff --git a/slideshow/source/engine/slide/shapemanagerimpl.hxx b/slideshow/source/engine/slide/shapemanagerimpl.hxx
index ab98c6a..c1b9916 100644
--- a/slideshow/source/engine/slide/shapemanagerimpl.hxx
+++ b/slideshow/source/engine/slide/shapemanagerimpl.hxx
@@ -198,6 +198,8 @@ private:
::com::sun::star::drawing::XShape>& xShape,
sal_Int16 nCursor );
+ bool updateSprites();
+
/** Common stuff when adding a shape
*/
void implAddShape( const ShapeSharedPtr& rShape );
More information about the Libreoffice-commits
mailing list