X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/5264f2cd003271ba2c426e21d62d13025dba177b..1a3a68d135903b60ad9aa5ee829cec58d663754a:/lib/service/servicedvbrecord.cpp diff --git a/lib/service/servicedvbrecord.cpp b/lib/service/servicedvbrecord.cpp index 62f3a126..b34dad10 100644 --- a/lib/service/servicedvbrecord.cpp +++ b/lib/service/servicedvbrecord.cpp @@ -111,6 +111,7 @@ RESULT eDVBServiceRecord::prepareStreaming() m_streaming = 1; if (m_state == stateIdle) return doPrepare(); + return -1; } RESULT eDVBServiceRecord::start() @@ -124,8 +125,7 @@ RESULT eDVBServiceRecord::start() RESULT eDVBServiceRecord::stop() { - eDebug("stop recording!!"); - m_event((iRecordableService*)this, evStop); + eDebug("stop recording!"); if (m_state == stateRecording) { if (m_record) @@ -136,8 +136,8 @@ RESULT eDVBServiceRecord::stop() m_target_fd = -1; } m_state = statePrepared; - } - + } else + eDebug("(was not recording)"); if (m_state == statePrepared) { m_record = 0; @@ -207,6 +207,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; } @@ -346,14 +348,6 @@ RESULT eDVBServiceRecord::connectEvent(const Slot2 return 0; } -static PyObject *createTuple(int pid, const char *type) -{ - PyObject *r = PyTuple_New(2); - PyTuple_SetItem(r, 0, PyInt_FromLong(pid)); - PyTuple_SetItem(r, 1, PyString_FromString(type)); - return r; -} - RESULT eDVBServiceRecord::stream(ePtr &ptr) { ptr = this; @@ -382,3 +376,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); + } +}