git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix cached channel handling
[enigma2.git]
/
lib
/
dvb
/
dvb.h
diff --git
a/lib/dvb/dvb.h
b/lib/dvb/dvb.h
index 0c652e35dd0569d84de17bd1b4722ab083cf285c..8b0a3595fd7545d2d1eddb6e213cccaff9383b73 100644
(file)
--- a/
lib/dvb/dvb.h
+++ b/
lib/dvb/dvb.h
@@
-3,6
+3,7
@@
#include <lib/base/ebase.h>
#include <lib/base/filepush.h>
#include <lib/base/ebase.h>
#include <lib/base/filepush.h>
+#include <lib/base/elock.h>
#include <lib/dvb/idvb.h>
#include <lib/dvb/demux.h>
#include <lib/dvb/frontend.h>
#include <lib/dvb/idvb.h>
#include <lib/dvb/demux.h>
#include <lib/dvb/frontend.h>
@@
-116,13
+117,11
@@
private:
eSmartPtrList<eDVBDemux> m_demux;
};
eSmartPtrList<eDVBDemux> m_demux;
};
-class eDVBResourceManager: public iObject
+class eDVBResourceManager: public iObject
, public Object
{
DECLARE_REF(eDVBResourceManager);
int avail, busy;
{
DECLARE_REF(eDVBResourceManager);
int avail, busy;
- eUsePtr<iDVBChannel> m_cached_channel;
-
eSmartPtrList<iDVBAdapter> m_adapter;
eSmartPtrList<eDVBRegisteredDemux> m_demux;
eSmartPtrList<iDVBAdapter> m_adapter;
eSmartPtrList<eDVBRegisteredDemux> m_demux;
@@
-166,6
+165,12
@@
class eDVBResourceManager: public iObject
Signal1<void,eDVBChannel*> m_channelAdded;
bool canAllocateFrontend(ePtr<iDVBFrontendParameters> &feparm);
Signal1<void,eDVBChannel*> m_channelAdded;
bool canAllocateFrontend(ePtr<iDVBFrontendParameters> &feparm);
+
+ eUsePtr<iDVBChannel> m_cached_channel;
+ Connection m_cached_channel_state_changed_conn;
+ eTimer m_releaseCachedChannelTimer;
+ void DVBChannelStateChanged(iDVBChannel*);
+ void releaseCachedChannel();
public:
eDVBResourceManager();
virtual ~eDVBResourceManager();
public:
eDVBResourceManager();
virtual ~eDVBResourceManager();
@@
-195,6
+200,7
@@
public:
class eDVBChannel: public iDVBPVRChannel, public iFilePushScatterGather, public Object
{
DECLARE_REF(eDVBChannel);
class eDVBChannel: public iDVBPVRChannel, public iFilePushScatterGather, public Object
{
DECLARE_REF(eDVBChannel);
+ friend class eDVBResourceManager;
public:
eDVBChannel(eDVBResourceManager *mgr, eDVBAllocatedFrontend *frontend);
virtual ~eDVBChannel();
public:
eDVBChannel(eDVBResourceManager *mgr, eDVBAllocatedFrontend *frontend);
virtual ~eDVBChannel();
@@
-256,6
+262,8
@@
private:
std::list<std::pair<off_t, off_t> > m_source_span;
void getNextSourceSpan(off_t current_offset, size_t bytes_read, off_t &start, size_t &size);
void flushPVR(iDVBDemux *decoding_demux=0);
std::list<std::pair<off_t, off_t> > m_source_span;
void getNextSourceSpan(off_t current_offset, size_t bytes_read, off_t &start, size_t &size);
void flushPVR(iDVBDemux *decoding_demux=0);
+
+ eSingleLock m_cuesheet_lock;
friend class eUsePtr<eDVBChannel>;
/* use count */
friend class eUsePtr<eDVBChannel>;
/* use count */