int EpgSearchFilter::FilterRecordings(CFileItemList &results) { int iRemoved(0); if (!g_PVRManager.IsStarted()) return iRemoved; CPVRRecordings *recordings = CPVRManager::Get().Recordings(); // TODO not thread safe and inefficient! for (unsigned int iRecordingPtr = 0; iRecordingPtr < recordings->size(); iRecordingPtr++) { CPVRRecording *recording = recordings->at(iRecordingPtr); if (!recording) continue; for (int iResultPtr = 0; iResultPtr < results.Size(); iResultPtr++) { const CEpgInfoTag *epgentry = results.Get(iResultPtr)->GetEPGInfoTag(); /* no match */ if (!epgentry || epgentry->Title() != recording->m_strTitle || epgentry->Plot() != recording->m_strPlot) continue; results.Remove(iResultPtr); iResultPtr--; ++iRemoved; } } return iRemoved; }