[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdenonbeta/style-workshop/largeimagelib
From:       Maks Orlovich <maksim () kde ! org>
Date:       2004-06-30 22:21:05
Message-ID: 20040630222105.4DD139447 () office ! kde ! org
[Download RAW message or body]

CVS commit by orlovich: 

Fix the major scaling bug: Do not create tiles in the basic plane as reconstructable \
just because there is a scaled plane. Oops.

Also,instead of discarding swapped out loader backing store, keep track of dirtiness, \
and update it.


  M +3 -4      frame.cpp   1.15
  M +13 -6     imagetile.cpp   1.3
  M +6 -1      imagetile.h   1.2


--- kdenonbeta/style-workshop/largeimagelib/frame.cpp  #1.14:1.15
@@ -208,5 +208,5 @@ const QImage& Frame::image(bool forceBas
             */            
             ImageManager::imageCache()->acquireSpot();
-            ts.image = ImageTile::create(scaledPlane, &ts, tw, th, format);
+            ts.image = ImageTile::create(usePlane == scaledPlane, &ts, tw, th, \
format);  ImageManager::imageCache()->addEntry(ts.image);
         }
@@ -460,7 +460,6 @@ void Frame::notifyScanline(uchar version
                             format.depth() * basicPlane->tileWidth(tileX));
                             
-        //Invalidate the backing store, if any 
-        if (ts.swappedInfo.exists())
-            ImageManager::vmMan()->free(ts.swappedInfo);                            
+        //Mark as dirty..
+        ts.image->setDirty();
     }
     

--- kdenonbeta/style-workshop/largeimagelib/imagetile.cpp  #1.2:1.3
@@ -36,4 +36,5 @@ ImageTile* ImageTile::create(bool recons
     tile->owner = owner;
     tile->reconstructable = reconst;
+    tile->dirty           = false;
     
     //Give the proper geometry, set palette if needed be
@@ -71,5 +72,7 @@ ImageTile* ImageTile::restore(TileStack*
 void ImageTile::discard()
 {
-    if (!reconstructable && !owner->swappedInfo.exists()) //we don't swap out things \
we can rebuild anyway +    if (!reconstructable) //we don't swap out things we can \
rebuild anyway +    {
+        if (!owner->swappedInfo.exists()) 
     {
         int size = image.width() * image.height() * (image.depth() / 8);
@@ -77,4 +80,8 @@ void ImageTile::discard()
         
         owner->swappedInfo = ImageManager::vmMan()->alloc(size);
+            dirty = true; //must write out the first time
+        }
+        
+        if (dirty)
         owner->swappedInfo.swapOut(image.bits());
     }

--- kdenonbeta/style-workshop/largeimagelib/imagetile.h  #1.1:1.2
@@ -48,4 +48,5 @@ private:
     
     bool reconstructable;
+    bool dirty;
     
     friend class Pool<ImageTile>;
@@ -63,4 +64,8 @@ public:
     }
 
+    void setDirty()
+    {
+        dirty = true;
+    }
 };
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic