UINT AFX_CDECL CPartFileConvert::run(LPVOID /*lpParam*/) { DbgSetThreadName("Partfile-Converter"); InitThreadLocale(); //Xman // BEGIN SLUGFILLER: SafeHash CReadWriteLock lock(&theApp.m_threadlock); if (!lock.ReadLock(0)) return 0; // END SLUGFILLER: SafeHash int imported=0; for (;;) { // search next queued job and start it pfconverting=NULL; for(POSITION pos = m_jobs.GetHeadPosition(); pos != NULL; m_jobs.GetNext(pos)){ pfconverting=m_jobs.GetAt(pos); if (pfconverting->state==CONV_QUEUE) break; else pfconverting=NULL; } if (pfconverting!=NULL) { pfconverting->state=CONV_INPROGRESS; UpdateGUI(pfconverting); pfconverting->state=performConvertToeMule(pfconverting->folder); if (pfconverting->state==CONV_OK) ++imported; UpdateGUI(pfconverting); AddLogLine(true,GetResString(IDS_IMP_STATUS),pfconverting->folder,GetReturncodeText(pfconverting->state)); } else break;// nothing more to do now } // clean up UpdateGUI(NULL); if (imported) theApp.sharedfiles->PublishNextTurn(); convertPfThread=NULL; return 0; }
wxThread::ExitCode CPartFileConvert::Entry() { int imported = 0; for (;;) { // search next queued job and start it { wxMutexLocker lock(s_mutex); s_pfconverting = NULL; for (std::list<ConvertJob*>::iterator it = s_jobs.begin(); it != s_jobs.end(); ++it) { if ((*it)->state == CONV_QUEUE) { s_pfconverting = *it; break; } } } if (s_pfconverting) { { wxMutexLocker lock(s_mutex); s_pfconverting->state = CONV_INPROGRESS; } Notify_ConvertUpdateJobInfo(s_pfconverting); ConvStatus convertResult = performConvertToeMule(s_pfconverting->folder); { wxMutexLocker lock(s_mutex); s_pfconverting->state = convertResult; } if (s_pfconverting->state == CONV_OK) { ++imported; } Notify_ConvertUpdateJobInfo(s_pfconverting); AddLogLineC(CFormat(_("Importing %s: %s")) % s_pfconverting->folder % GetConversionState(s_pfconverting->state)); if (TestDestroy()) { wxMutexLocker lock(s_mutex); DeleteContents(s_jobs); break; } } else { break; // nothing more to do now } } // clean up Notify_ConvertClearInfos(); if (imported) { theApp->sharedfiles->PublishNextTurn(); } AddDebugLogLineN(logPfConvert, wxT("No more jobs on queue, exiting from thread.")); s_convertPfThread = NULL; return NULL; }