summaryrefslogtreecommitdiff
path: root/osd.c
diff options
context:
space:
mode:
Diffstat (limited to 'osd.c')
-rw-r--r--osd.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/osd.c b/osd.c
index 42f1f82c..8a6840d7 100644
--- a/osd.c
+++ b/osd.c
@@ -4,12 +4,13 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: osd.c,v 1.10 2007-10-28 18:57:29 phintuka Exp $
+ * $Id: osd.c,v 1.11 2007-10-30 20:30:23 phintuka Exp $
*
*/
#include <vdr/config.h>
-#include <vdr/tools.h> // cListObject
+#include <vdr/tools.h>
+#include <vdr/thread.h>
#include "logdefs.h"
#include "device.h"
@@ -30,6 +31,8 @@ class cXinelibOsd : public cOsd, public cListObject
cXinelibDevice *m_Device;
+ void CloseWindows(void);
+
protected:
static cMutex m_Lock;
static cList<cXinelibOsd> m_OsdStack;
@@ -206,8 +209,7 @@ cXinelibOsd::~cXinelibOsd()
cMutexLock ml(&m_Lock);
- if(m_IsVisible)
- Hide();
+ CloseWindows();
m_OsdStack.Del(this,false);
@@ -330,22 +332,30 @@ void cXinelibOsd::Show(void)
Refresh();
}
-void cXinelibOsd::Hide(void)
+void cXinelibOsd::CloseWindows(void)
{
- TRACEF("cXinelibOsd::Hide");
-
- cMutexLock ml(&m_Lock);
+ TRACEF("cXinelibOsd::CloseWindows");
if(m_IsVisible) {
cBitmap *Bitmap;
- m_IsVisible = false;
+ m_Shown = false;
for (int i = 0; (Bitmap = GetBitmap(i)) != NULL; i++) {
- LOGOSD("Hide OSD %d.%d", Index(), i);
+ LOGOSD("Close OSD %d.%d", Index(), i);
CmdClose(m_Device, i);
}
}
}
+void cXinelibOsd::Hide(void)
+{
+ TRACEF("cXinelibOsd::Hide");
+
+ cMutexLock ml(&m_Lock);
+
+ CloseWindows();
+ m_IsVisible = false;
+}
+
void cXinelibOsd::Detach(void)
{
TRACEF("cXinelibOsd::Detach");