X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fservice%2Fservicedvbrecord.cpp;h=86461d051d2e64cb3c95d1781e1a96038e872daa;hb=3d90ab1f54d07c4a25811b3819befacefd0a774d;hp=8feb8156b206c1054b35c72243f0a8e3d2425a0b;hpb=c866e3ad3c089e189ff94d51cb125603b998f5c6;p=vuplus_dvbapp diff --git a/lib/service/servicedvbrecord.cpp b/lib/service/servicedvbrecord.cpp index 8feb815..86461d0 100644 --- a/lib/service/servicedvbrecord.cpp +++ b/lib/service/servicedvbrecord.cpp @@ -45,6 +45,14 @@ void eDVBServiceRecord::serviceEvent(int event) m_event((iRecordableService*)this, evNewProgramInfo); break; } + case eDVBServicePMTHandler::eventMisconfiguration: + m_error = errMisconfiguration; + m_event((iRecordableService*)this, evTuneFailed); + break; + case eDVBServicePMTHandler::eventNoResources: + m_error = errNoResources; + m_event((iRecordableService*)this, evTuneFailed); + break; } } @@ -125,7 +133,7 @@ RESULT eDVBServiceRecord::start() RESULT eDVBServiceRecord::stop() { - eDebug("stop recording!!"); + eDebug("stop recording!"); if (m_state == stateRecording) { if (m_record) @@ -136,7 +144,8 @@ RESULT eDVBServiceRecord::stop() m_target_fd = -1; } m_state = statePrepared; - } + } else + eDebug("(was not recording)"); if (m_state == statePrepared) { m_record = 0; @@ -206,6 +215,8 @@ int eDVBServiceRecord::doRecord() } m_record->setTargetFD(fd); m_record->setTargetFilename(m_filename.c_str()); + m_record->connectEvent(slot(*this, &eDVBServiceRecord::recordEvent), m_con_record_event); + m_target_fd = fd; } @@ -373,3 +384,16 @@ PyObject *eDVBServiceRecord::getStreamingData() return r; } +void eDVBServiceRecord::recordEvent(int event) +{ + switch (event) + { + case iDVBTSRecorder::eventWriteError: + eWarning("[eDVBServiceRecord] record write error"); + stop(); + m_event((iRecordableService*)this, evRecordWriteError); + return; + default: + eDebug("unhandled record event %d", event); + } +}