diff options
| author | louis <louis.braun@gmx.de> | 2016-01-26 18:32:38 +0100 |
|---|---|---|
| committer | louis <louis.braun@gmx.de> | 2016-01-26 18:32:38 +0100 |
| commit | 809fbda03c5014ba9cd361f5113d1d717cd41ea6 (patch) | |
| tree | 264bbc5640375f1bcb165fc7f4a3e595adcc26ca /coreengine/osdwrapper.c | |
| parent | 196dd7eb9965a405bb16b51dc870fbbb31aeef87 (diff) | |
| download | vdr-plugin-skindesigner-809fbda03c5014ba9cd361f5113d1d717cd41ea6.tar.gz vdr-plugin-skindesigner-809fbda03c5014ba9cd361f5113d1d717cd41ea6.tar.bz2 | |
Version 0.8.0 beta
Diffstat (limited to 'coreengine/osdwrapper.c')
| -rw-r--r-- | coreengine/osdwrapper.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/coreengine/osdwrapper.c b/coreengine/osdwrapper.c new file mode 100644 index 0000000..ec1119c --- /dev/null +++ b/coreengine/osdwrapper.c @@ -0,0 +1,71 @@ +#include "osdwrapper.h"
+
+cSdOsd::cSdOsd(void) {
+ osd = NULL;
+ flushLocked = false;
+}
+
+cSdOsd::~cSdOsd(void) {
+ DeleteOsd();
+}
+
+void cSdOsd::Lock(void) {
+ mutex.Lock();
+}
+
+void cSdOsd::Unlock(void) {
+ mutex.Unlock();
+}
+
+void cSdOsd::LockFlush(void) {
+ Lock();
+ flushLocked = true;
+ Unlock();
+}
+
+void cSdOsd::UnlockFlush(void) {
+ Lock();
+ flushLocked = false;
+ Unlock();
+}
+
+bool cSdOsd::CreateOsd(int x, int y, int width, int height) {
+ cOsd *newOsd = cOsdProvider::NewOsd(cOsd::OsdLeft() + x, cOsd::OsdTop() + y);
+ if (newOsd) {
+ tArea Area = { 0, 0, width - 1, height - 1, 32 };
+ if (newOsd->SetAreas(&Area, 1) == oeOk) {
+ Lock();
+ osd = newOsd;
+ Unlock();
+ return true;
+ }
+ }
+ return false;
+}
+
+void cSdOsd::DeleteOsd(void) {
+ Lock();
+ delete osd;
+ osd = NULL;
+ Unlock();
+}
+
+cPixmap *cSdOsd::CreatePixmap(int layer, cRect &viewPort, cRect &drawPort) {
+ if (osd) {
+ return osd->CreatePixmap(layer, viewPort, drawPort);
+ }
+ return NULL;
+}
+
+void cSdOsd::DestroyPixmap(cPixmap *pix) {
+ if (osd) {
+ osd->DestroyPixmap(pix);
+ }
+}
+
+void cSdOsd::Flush(void) {
+ Lock();
+ if (osd && !flushLocked)
+ osd->Flush();
+ Unlock();
+}
|
