dvb.cpp: migrate to iDataSource, use shared iDataSource for tstools and filepush...
authorghost <andreas.monzner@multimedia-labs.de>
Tue, 9 Nov 2010 22:31:05 +0000 (23:31 +0100)
committerghost <andreas.monzner@multimedia-labs.de>
Tue, 9 Nov 2010 22:31:05 +0000 (23:31 +0100)
lib/dvb/dvb.cpp

index 5162945..1807b87 100644 (file)
@@ -1760,7 +1760,15 @@ RESULT eDVBChannel::playFile(const char *file)
                m_pvr_thread = 0;
        }
 
                m_pvr_thread = 0;
        }
 
-       m_tstools.openFile(file);
+       eRawFile *f = new eRawFile();
+       if (f->open(file) < 0)
+       {
+               eDebug("can't open PVR file %s (%m)", file);
+               return -ENOENT;
+       }
+
+       ePtr<iDataSource> source = f;
+       m_tstools.setSource(source, file);
 
                /* DON'T EVEN THINK ABOUT FIXING THIS. FIX THE ATI SOURCES FIRST,
                   THEN DO A REAL FIX HERE! */
 
                /* DON'T EVEN THINK ABOUT FIXING THIS. FIX THE ATI SOURCES FIRST,
                   THEN DO A REAL FIX HERE! */
@@ -1787,15 +1795,7 @@ RESULT eDVBChannel::playFile(const char *file)
 
        m_event(this, evtPreStart);
 
 
        m_event(this, evtPreStart);
 
-       if (m_pvr_thread->start(file, m_pvr_fd_dst))
-       {
-               delete m_pvr_thread;
-               m_pvr_thread = 0;
-               ::close(m_pvr_fd_dst);
-               m_pvr_fd_dst = -1;
-               eDebug("can't open PVR file %s (%m)", file);
-               return -ENOENT;
-       }
+       m_pvr_thread->start(source, m_pvr_fd_dst);
        CONNECT(m_pvr_thread->m_event, eDVBChannel::pvrEvent);
 
        m_state = state_ok;
        CONNECT(m_pvr_thread->m_event, eDVBChannel::pvrEvent);
 
        m_state = state_ok;