From: Andy D. <kha...@us...> - 2004-04-04 17:27:09
|
Update of /cvsroot/planeshift/planeshift/src/client/sound In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5758/src/client/sound Modified Files: pssoundmngr.cpp pssoundmngr.h Log Message: Fixed some memory leaks in the client. Index: pssoundmngr.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/client/sound/pssoundmngr.cpp,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** pssoundmngr.cpp 29 Mar 2004 09:46:05 -0000 1.47 --- pssoundmngr.cpp 4 Apr 2004 17:14:36 -0000 1.48 *************** *** 346,349 **** --- 346,355 ---- psSoundManager::psSndSourceMngr::~psSndSourceMngr() { + csHash<psSoundFileInfo *>::GlobalIterator it (sndfiles.GetIterator ()); + while (it.HasNext ()) + { + psSoundFileInfo* sndfile = it.Next (); + delete sndfile; + } } *************** *** 394,398 **** info->name = node->GetAttributeValue("name"); info->file = node->GetAttributeValue("file"); ! sndfiles.Put(csHashCompute(info->name), (void*) info); } } --- 400,404 ---- info->name = node->GetAttributeValue("name"); info->file = node->GetAttributeValue("file"); ! sndfiles.Put(csHashCompute(info->name), info); } } *************** *** 454,461 **** const char* oldResource = oldResourceHandle->GetName(); ! csHashKey key = csHashCompute(oldResource); ! csHashIterator i(&sndfiles, key); psSoundFileInfo* oldResourceInfo = NULL; ! while ( (oldResourceInfo = (psSoundFileInfo*) i.Next()) ) { if (!strcmp(oldResourceInfo->name, oldResource)) --- 460,466 ---- const char* oldResource = oldResourceHandle->GetName(); ! csHash<psSoundFileInfo *>::Iterator i = sndfiles.GetIterator(csHashCompute(oldResource)); psSoundFileInfo* oldResourceInfo = NULL; ! while ( (oldResourceInfo = i.Next()) ) { if (!strcmp(oldResourceInfo->name, oldResource)) *************** *** 465,472 **** if ( !oldResourceInfo ) return false; ! csHashKey newkey = csHashCompute(newResource); ! csHashIterator itr(&sndfiles, newkey); psSoundFileInfo* newResourceInfo = NULL; ! while ( (newResourceInfo = (psSoundFileInfo*) itr.Next()) ) { if (!strcmp(newResourceInfo->name, newResource)) --- 470,477 ---- if ( !oldResourceInfo ) return false; ! csHash<psSoundFileInfo *>::Iterator itr = sndfiles.GetIterator(csHashCompute(newResource)); ! psSoundFileInfo* newResourceInfo = NULL; ! while ( (newResourceInfo = itr.Next()) ) { if (!strcmp(newResourceInfo->name, newResource)) *************** *** 485,494 **** (const char* name) { ! csHashKey key = csHashCompute(name); ! csHashIterator i(&sndfiles, key); psSoundFileInfo* info = NULL; while ( i.HasNext() ) { ! info = (psSoundFileInfo*) i.Next(); if (!strcmp(info->name, name)) break; --- 490,498 ---- (const char* name) { ! csHash<psSoundFileInfo *>::Iterator i = sndfiles.GetIterator(csHashCompute(name)); psSoundFileInfo* info = NULL; while ( i.HasNext() ) { ! info = i.Next(); if (!strcmp(info->name, name)) break; Index: pssoundmngr.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/client/sound/pssoundmngr.h,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** pssoundmngr.h 29 Mar 2004 09:46:05 -0000 1.19 --- pssoundmngr.h 4 Apr 2004 17:14:36 -0000 1.20 *************** *** 31,34 **** --- 31,35 ---- #include <iutil/comp.h> #include "isound/loader.h" + #include "csutil/hash.h" // PS includes *************** *** 42,45 **** --- 43,47 ---- class psSoundHandle; + struct psSoundFileInfo; /* The main PlaneShift Sound Manager. *************** *** 126,130 **** protected: csPtr<psTemplateRes> LoadResource (const char* name); ! csHashMap sndfiles; psSoundManager* parent; csRef<iSoundLoader> sndloader; --- 128,132 ---- protected: csPtr<psTemplateRes> LoadResource (const char* name); ! csHash<psSoundFileInfo *> sndfiles; psSoundManager* parent; csRef<iSoundLoader> sndloader; |