summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dxr3device.c12
-rw-r--r--dxr3device.h11
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_*/