[Libufo-commits] ufo-0.5/src uabstractdisplay.cpp,1.15,1.16
Status: Beta
Brought to you by:
schmidtjf
|
From: Johannes S. <sch...@us...> - 2005-08-18 18:05:29
|
Update of /cvsroot/libufo/ufo-0.5/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15244/src Modified Files: uabstractdisplay.cpp Log Message: Fixed deletion of volatile data objects. Index: uabstractdisplay.cpp =================================================================== RCS file: /cvsroot/libufo/ufo-0.5/src/uabstractdisplay.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** uabstractdisplay.cpp 5 Jul 2005 11:29:19 -0000 1.15 --- uabstractdisplay.cpp 18 Aug 2005 18:05:20 -0000 1.16 *************** *** 68,71 **** --- 68,77 ---- setDefault(NULL); } + // unreference volatile data + for(std::list<UVolatileData*>::iterator iter = m_volatileData.begin(); + iter != m_volatileData.end(); + ++iter) { + (*iter)->unreference(); + } } *************** *** 280,286 **** break; case UEvent::Refresh: { ! for(std::list<UVolatileData*>::iterator iter = m_volatileData.begin(); ! iter != m_volatileData.end(); ++iter) { ! (*iter)->refresh(); } } --- 286,309 ---- break; case UEvent::Refresh: { ! // refresh volatile data and remove unused data ! for(std::list<UVolatileData*>::iterator next_iter, iter = m_volatileData.begin(); ! iter != m_volatileData.end(); ! iter = next_iter) { ! next_iter = iter; ! ++next_iter; ! if ((*iter)->getReferenceCount() == 1) { ! // this object is ready for deletion ! (*iter)->unreference(); ! m_volatileData.erase(iter); ! } else { ! (*iter)->refresh(); ! } ! } ! // refresh contexts ! std::vector<UContext*> contexts = getContexts(); ! for(std::vector<UContext*>::iterator citer = contexts.begin(); ! citer != contexts.end(); ! ++citer) { ! (*citer)->refresh(); } } |