\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