[Libreoffice-commits] .: canvas/inc canvas/source

Thorsten Behrens thorsten at kemper.freedesktop.org
Wed Feb 22 02:15:20 PST 2012


 canvas/inc/canvas/base/sprite.hxx           |    2 +-
 canvas/inc/canvas/spriteredrawmanager.hxx   |    2 +-
 canvas/source/tools/spriteredrawmanager.cxx |    5 ++---
 3 files changed, 4 insertions(+), 5 deletions(-)

New commits:
commit 2c7e061997202df9e602e209cf40c61606582e8e
Author: Thorsten Behrens <tbehrens at suse.com>
Date:   Wed Feb 22 00:31:30 2012 +0100

    Fix fdo#45219 wrong transparency for animated objects.
    
    With the attachement from said bug, and cairocanvas, sprites
    are displayed multiple times above each other (which, for semi-
    transparent sprites, lead to incorrect overall transparency)

diff --git a/canvas/inc/canvas/base/sprite.hxx b/canvas/inc/canvas/base/sprite.hxx
index bb3d655..38a2270 100644
--- a/canvas/inc/canvas/base/sprite.hxx
+++ b/canvas/inc/canvas/base/sprite.hxx
@@ -103,7 +103,7 @@ namespace canvas
 
     /** Functor providing a StrictWeakOrdering for sprite references
      */
-    struct SpriteComparator
+    struct SpriteWeakOrder
     {
         bool operator()( const Sprite::Reference& rLHS,
                          const Sprite::Reference& rRHS )
diff --git a/canvas/inc/canvas/spriteredrawmanager.hxx b/canvas/inc/canvas/spriteredrawmanager.hxx
index 3bf4ca6..9dc2099 100644
--- a/canvas/inc/canvas/spriteredrawmanager.hxx
+++ b/canvas/inc/canvas/spriteredrawmanager.hxx
@@ -361,7 +361,7 @@ namespace canvas
 
                         ::std::sort( aSortedUpdateSprites.begin(),
                                      aSortedUpdateSprites.end(),
-                                     SpriteComparator() );
+                                     SpriteWeakOrder() );
 
                         if( isAreaUpdateOpaque( rUpdateArea,
                                                 nNumSprites ) )
diff --git a/canvas/source/tools/spriteredrawmanager.cxx b/canvas/source/tools/spriteredrawmanager.cxx
index 72976c1..eeb4714 100644
--- a/canvas/source/tools/spriteredrawmanager.cxx
+++ b/canvas/source/tools/spriteredrawmanager.cxx
@@ -233,7 +233,7 @@ namespace canvas
         // in line with the problem of having sprite state available
         // for the frame before the last frame; plus, it avoids
         // frequent locks of the object mutices
-        SpriteComparator aSpriteComparator;
+        SpriteWeakOrder aSpriteComparator;
 
         // put all sprites that have changed content into update areas
         ListOfSprites::const_iterator       aCurrSprite( maSprites.begin() );
@@ -277,8 +277,7 @@ namespace canvas
 
         VectorOfSprites::iterator aEnd=
             ::std::unique( aUpdatableSprites.begin(),
-                           aUpdatableSprites.end(),
-                           aSpriteComparator );
+                           aUpdatableSprites.end() );
 
         // for each unique sprite, check the change event vector,
         // calculate the update operation from that, and add the


More information about the Libreoffice-commits mailing list