void CPVRRecordings::UpdateFromClient(const CPVRRecordingPtr &tag) { CSingleLock lock(m_critSection); if (tag->IsDeleted()) m_bHasDeleted = true; CPVRRecordingPtr newTag = GetById(tag->m_iClientId, tag->m_strRecordingId); if (newTag) { newTag->Update(*tag); } else { newTag = CPVRRecordingPtr(new CPVRRecording); newTag->Update(*tag); if (newTag->EpgEvent() > 0) { EPG::CEpgInfoTagPtr epgTag = EPG::CEpgContainer::GetInstance().GetTagById(newTag->EpgEvent()); if (epgTag) epgTag->SetRecording(newTag); } newTag->m_iRecordingId = ++m_iLastId; m_recordings.insert(std::make_pair(CPVRRecordingUid(newTag->m_iClientId, newTag->m_strRecordingId), newTag)); } }