From: Marten Richter Date: Sun, 28 Oct 2012 13:49:29 +0000 (+0100) Subject: Fix bug in osdvector X-Git-Tag: 0-4-0^2~12^2~46 X-Git-Url: https://git.vomp.tv/gitweb/?a=commitdiff_plain;h=37be9d531882d99db474915ee14ab7693146f794;p=vompclient.git Fix bug in osdvector --- diff --git a/osdvector.cc b/osdvector.cc index a1ae4f3..fadd161 100644 --- a/osdvector.cc +++ b/osdvector.cc @@ -224,22 +224,42 @@ void OsdVector::removeImageRef(const ImageIndex ref) void OsdVector::cleanupOrphanedRefs() { // Do some garbage collection - map::iterator iitty=images_ref.begin(); - while (iitty!=images_ref.end()) { - int count=(*iitty).second; + + map::iterator mitty=monobitmaps.begin(); + while (mitty!=monobitmaps.end()) { + map::iterator curitty=images_ref.find((*mitty).second); + int count=(*curitty).second; + if (count==0) { + ImageIndex ref=(*curitty).first; + monobitmaps.erase(mitty++); + images_ref.erase(curitty++); + destroyImageRef(ref); + } else ++mitty; + } + + map::iterator jitty=jpegs.begin(); + while (jitty!=jpegs.end()) { + map::iterator curitty=images_ref.find((*jitty).second); + int count=(*curitty).second; if (count==0) { - ImageIndex ref=(*iitty).first; - images_ref.erase(iitty++); + ImageIndex ref=(*curitty).first; + jpegs.erase(jitty++); + images_ref.erase(curitty++); destroyImageRef(ref); - } else ++iitty; + } else ++jitty; } - map::iterator sitty=styles_ref.begin(); - while (sitty!=styles_ref.end()) { - int count=(*sitty).second; + + + map,unsigned int>::iterator sitty=styles.begin(); + while (sitty!=styles.end()) { + map::iterator curitty=styles_ref.find((*sitty).second); + int count=(*curitty).second; if (count==0) { - unsigned int ref=(*sitty).first; - styles_ref.erase(sitty++); + unsigned int ref=(*curitty).first; + styles.erase(sitty++); + styles_ref.erase(curitty++); destroyStyleRef(ref); + } else ++sitty; }