aboutsummaryrefslogtreecommitdiff
path: root/lib/service
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2007-04-30 21:39:35 +0000
committerFelix Domke <tmbinc@elitedvb.net>2007-04-30 21:39:35 +0000
commitfa458113395a4b8da3954b656dbe6c55b30f224a (patch)
treeab535494fa74ba597a83053c2619711d7d263b7a /lib/service
parent46f28210d3fc839f621900e932f650e197688ce5 (diff)
downloadenigma2-fa458113395a4b8da3954b656dbe6c55b30f224a.tar.gz
enigma2-fa458113395a4b8da3954b656dbe6c55b30f224a.zip
send write error messages down to service events
Diffstat (limited to 'lib/service')
-rw-r--r--lib/service/iservice.h4
-rw-r--r--lib/service/servicedvbrecord.cpp15
-rw-r--r--lib/service/servicedvbrecord.h4
3 files changed, 21 insertions, 2 deletions
diff --git a/lib/service/iservice.h b/lib/service/iservice.h
index df4e302f..b0042735 100644
--- a/lib/service/iservice.h
+++ b/lib/service/iservice.h
@@ -768,8 +768,8 @@ public:
evRecordRunning,
evRecordStopped,
evNewProgramInfo,
- evRecordFailed
- /*evDiskFull*/
+ evRecordFailed,
+ evRecordWriteError
};
enum {
NoError=0,
diff --git a/lib/service/servicedvbrecord.cpp b/lib/service/servicedvbrecord.cpp
index acd4a823..b34dad10 100644
--- a/lib/service/servicedvbrecord.cpp
+++ b/lib/service/servicedvbrecord.cpp
@@ -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;
}
@@ -374,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);
+ }
+}
diff --git a/lib/service/servicedvbrecord.h b/lib/service/servicedvbrecord.h
index 018e83f9..dcce3388 100644
--- a/lib/service/servicedvbrecord.h
+++ b/lib/service/servicedvbrecord.h
@@ -38,6 +38,7 @@ private:
eServiceReferenceDVB m_ref;
ePtr<iDVBTSRecorder> m_record;
+ ePtr<eConnection> m_con_record_event;
int m_recording, m_tuned, m_error;
std::set<int> m_pids_active;
@@ -51,6 +52,9 @@ private:
/* events */
void serviceEvent(int event);
Signal2<void,iRecordableService*,int> m_event;
+
+ /* recorder events */
+ void recordEvent(int event);
};
#endif