From 809fbda03c5014ba9cd361f5113d1d717cd41ea6 Mon Sep 17 00:00:00 2001 From: louis Date: Tue, 26 Jan 2016 18:32:38 +0100 Subject: Version 0.8.0 beta --- coreengine/osdwrapper.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 coreengine/osdwrapper.c (limited to 'coreengine/osdwrapper.c') 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(); +} -- cgit v1.2.3