]> git.vomp.tv Git - vompclient-marten.git/commitdiff
Fix bug in osdvector
authorMarten Richter <marten.richter@freenet.de>
Sun, 28 Oct 2012 13:49:29 +0000 (14:49 +0100)
committerMarten Richter <marten.richter@freenet.de>
Sun, 28 Oct 2012 13:49:29 +0000 (14:49 +0100)
osdvector.cc

index a1ae4f3a99ff6864f86b8fa072d26bbc649d72ec..fadd1615333fdafa960272d9a2a26c74b7668227 100644 (file)
@@ -224,22 +224,42 @@ void OsdVector::removeImageRef(const ImageIndex ref)
 \r
 void OsdVector::cleanupOrphanedRefs()\r
 { // Do some garbage collection\r
-       map<ImageIndex,unsigned int>::iterator iitty=images_ref.begin();\r
-       while (iitty!=images_ref.end()) {\r
-               int count=(*iitty).second;\r
+\r
+       map<void *,ImageIndex>::iterator mitty=monobitmaps.begin();\r
+       while (mitty!=monobitmaps.end()) {\r
+               map<ImageIndex,unsigned int>::iterator curitty=images_ref.find((*mitty).second);\r
+               int count=(*curitty).second;\r
+               if (count==0) {\r
+                       ImageIndex ref=(*curitty).first;\r
+                       monobitmaps.erase(mitty++);\r
+                       images_ref.erase(curitty++);\r
+                       destroyImageRef(ref);\r
+               } else ++mitty;\r
+       }\r
+\r
+       map<string,ImageIndex>::iterator jitty=jpegs.begin();\r
+       while (jitty!=jpegs.end()) {\r
+               map<ImageIndex,unsigned int>::iterator curitty=images_ref.find((*jitty).second);\r
+               int count=(*curitty).second;\r
                if (count==0) {\r
-                       ImageIndex ref=(*iitty).first;\r
-                       images_ref.erase(iitty++);\r
+                       ImageIndex ref=(*curitty).first;\r
+                       jpegs.erase(jitty++);\r
+                       images_ref.erase(curitty++);\r
                        destroyImageRef(ref);\r
-               } else ++iitty;\r
+               } else ++jitty;\r
        }\r
-       map<unsigned int,unsigned int>::iterator sitty=styles_ref.begin();\r
-       while (sitty!=styles_ref.end()) {\r
-               int count=(*sitty).second;\r
+\r
+\r
+       map<pair<Colour*,unsigned int>,unsigned int>::iterator sitty=styles.begin();\r
+       while (sitty!=styles.end()) {\r
+               map<unsigned int,unsigned int>::iterator curitty=styles_ref.find((*sitty).second);\r
+               int count=(*curitty).second;\r
                if (count==0) {\r
-                       unsigned int ref=(*sitty).first;\r
-                       styles_ref.erase(sitty++);\r
+                       unsigned int ref=(*curitty).first;\r
+                       styles.erase(sitty++);\r
+                       styles_ref.erase(curitty++);\r
                        destroyStyleRef(ref);\r
+\r
                } else ++sitty;\r
 \r
        }\r