diff options
-rw-r--r-- | dxr3device.c | 12 | ||||
-rw-r--r-- | dxr3device.h | 11 |
2 files changed, 19 insertions, 4 deletions
diff --git a/dxr3device.c b/dxr3device.c index a6f46e0..e183272 100644 --- a/dxr3device.c +++ b/dxr3device.c @@ -62,6 +62,18 @@ cDxr3Device::~cDxr3Device() delete m_spuDecoder; } +cDxr3Device *cDxr3Device::instance() +{ + if (!inst) { + inst = new cDxr3Device(); + } + + return inst; +} + +// init static inst with NULL +cDxr3Device *cDxr3Device::inst = NULL; + int cDxr3Device::Dxr3Open(const char *name, int mode, bool report_error) { const char *filename = *cDxr3Name(name, cSettings::instance()->card()); diff --git a/dxr3device.h b/dxr3device.h index 02cfae0..f6eefdb 100644 --- a/dxr3device.h +++ b/dxr3device.h @@ -30,7 +30,7 @@ #include "dxr3audiodecoder.h" #include "dxr3spudecoder.h" #include "dxr3audio.h" -#include "singleton.h" +#include "uncopyable.h" class cDxr3Name { public: @@ -47,10 +47,9 @@ private: cDxr3Device is the interface for VDR devices. Is is the part, which VDR "talks" with our plugin. */ -class cDxr3Device : public cDevice, public Singleton<cDxr3Device> { +class cDxr3Device : public cDevice, public Uncopyable { public: - cDxr3Device(); - ~cDxr3Device(); + static cDxr3Device *instance(); static int Dxr3Open(const char *name, int mode, bool report_error = true); virtual void MakePrimaryDevice(bool On); @@ -97,6 +96,8 @@ public: int ossSetPlayMode(uint32_t mode); private: + cDxr3Device(); + ~cDxr3Device(); void claimDevices(); void releaseDevices(); @@ -122,6 +123,8 @@ private: uint32_t horizontal; uint32_t vertical; + + static cDxr3Device *inst; }; #endif /*_DXR3_DEVICE_H_*/ |