diff --git a/src/driver/record.cpp b/src/driver/record.cpp index 636149ff0..b3edb2b47 100644 --- a/src/driver/record.cpp +++ b/src/driver/record.cpp @@ -1096,6 +1096,18 @@ bool CRecordManager::Stop(const t_channel_id channel_id) return (inst != NULL); } +bool CRecordManager::IsRecording(const CTimerd::RecordingStopInfo * recinfo) +{ + bool ret = false; + mutex.lock(); + CRecordInstance * inst = FindInstanceID(recinfo->eventID); + if(inst != NULL && recinfo->eventID == inst->GetRecordingId()) + ret = true; + mutex.unlock(); + printf("[%s] eventID: %d, channel_id: 0x%llx, ret: %d\n", __FUNCTION__, recinfo->eventID, recinfo->channel_id, ret); + return ret; +} + bool CRecordManager::Stop(const CTimerd::RecordingStopInfo * recinfo) { bool ret = false; diff --git a/src/driver/record.h b/src/driver/record.h index 60d9e03fd..ac5ebc311 100644 --- a/src/driver/record.h +++ b/src/driver/record.h @@ -187,6 +187,7 @@ class CRecordManager : public CMenuTarget /*, public CChangeObserver*/ bool Record(const t_channel_id channel_id, const char * dir = NULL, bool timeshift = false); bool Stop(const t_channel_id channel_id); bool Stop(const CTimerd::RecordingStopInfo * recinfo); + bool IsRecording(const CTimerd::RecordingStopInfo * recinfo); bool Update(const t_channel_id channel_id); bool ShowMenu(void); bool AskToStop(const t_channel_id channel_id, const int recid = 0); diff --git a/src/gui/timerlist.cpp b/src/gui/timerlist.cpp index 99dbd4591..406e10ef5 100644 --- a/src/gui/timerlist.cpp +++ b/src/gui/timerlist.cpp @@ -574,18 +574,23 @@ int CTimerList::show() { bool killTimer = true; if (CRecordManager::getInstance()->RecordingStatus(timerlist[selected].channel_id)) { - std::string title = ""; - char buf1[1024]; - CEPGData epgdata; - CEitManager::getInstance()->getEPGid(timerlist[selected].epgID, timerlist[selected].epg_starttime, &epgdata); - memset(buf1, '\0', sizeof(buf1)); - if (epgdata.title != "") - title = "(" + epgdata.title + ")\n"; - snprintf(buf1, sizeof(buf1)-1, g_Locale->getText(LOCALE_TIMERLIST_ASK_TO_DELETE), title.c_str()); - if(ShowMsgUTF(LOCALE_RECORDINGMENU_RECORD_IS_RUNNING, buf1, - CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbNo, NULL, 450, 30, false) == CMessageBox::mbrNo) { - killTimer = false; - update = false; + CTimerd::RecordingStopInfo recinfo; + recinfo.channel_id = timerlist[selected].channel_id; + recinfo.eventID = timerlist[selected].eventID; + if (CRecordManager::getInstance()->IsRecording(&recinfo)) { + std::string title = ""; + char buf1[1024]; + CEPGData epgdata; + CEitManager::getInstance()->getEPGid(timerlist[selected].epgID, timerlist[selected].epg_starttime, &epgdata); + memset(buf1, '\0', sizeof(buf1)); + if (epgdata.title != "") + title = "(" + epgdata.title + ")\n"; + snprintf(buf1, sizeof(buf1)-1, g_Locale->getText(LOCALE_TIMERLIST_ASK_TO_DELETE), title.c_str()); + if(ShowMsgUTF(LOCALE_RECORDINGMENU_RECORD_IS_RUNNING, buf1, + CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbNo, NULL, 450, 30, false) == CMessageBox::mbrNo) { + killTimer = false; + update = false; + } } } if (killTimer) {