[mythtv] [PATCH] Clearing the OSD

David Engel dlengel at attbi.com
Fri Oct 17 20:26:16 EDT 2003


On Fri, Oct 17, 2003 at 06:02:27PM -0500, David Engel wrote:
> This patch adds the ability to immediately clear the OSD if visible by
> pressing the escape key.  It can also be used to abort an unintended
> channel change.

Oops, I forgot the locking and OSD changed flag.  Here's an updated
patch.

David
-- 
David Engel
dlengel at attbi.com

Index: libs/libmythtv/osd.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/osd.cpp,v
retrieving revision 1.80
diff -u -r1.80 osd.cpp
--- libs/libmythtv/osd.cpp	13 Oct 2003 21:23:30 -0000	1.80
+++ libs/libmythtv/osd.cpp	18 Oct 2003 00:22:27 -0000
@@ -1425,6 +1425,19 @@
     osdlock.unlock();
 }
 
+void OSD::Hide(void)
+{
+    osdlock.lock();
+
+    vector<OSDSet *>::iterator i;
+    for (i = setList->begin(); i != setList->end(); i++)
+        if (*i)
+	    (*i)->Hide();
+
+    changed = true;
+    osdlock.unlock();
+}
+
 void OSD::HideSet(const QString &name)
 {
     osdlock.lock();
Index: libs/libmythtv/osd.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/osd.h,v
retrieving revision 1.47
diff -u -r1.47 osd.h
--- libs/libmythtv/osd.h	17 Oct 2003 07:19:40 -0000	1.47
+++ libs/libmythtv/osd.h	18 Oct 2003 00:22:27 -0000
@@ -76,6 +76,7 @@
 
     bool Visible(void);
 
+    void Hide(void);
     void HideSet(const QString &name);
 
     void AddSet(OSDSet *set, QString name, bool withlock = true);
Index: libs/libmythtv/osdtypes.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/osdtypes.cpp,v
retrieving revision 1.33
diff -u -r1.33 osdtypes.cpp
--- libs/libmythtv/osdtypes.cpp	13 Oct 2003 21:23:30 -0000	1.33
+++ libs/libmythtv/osdtypes.cpp	18 Oct 2003 00:22:27 -0000
@@ -309,7 +309,8 @@
 
 void OSDSet::Hide(void)
 {
-    m_timeleft = 1;
+    m_timeleft = -1;
+    m_fadetime = 0;
     m_notimeout = false;
 }
 
Index: libs/libmythtv/tv_play.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/tv_play.cpp,v
retrieving revision 1.110
diff -u -r1.110 tv_play.cpp
--- libs/libmythtv/tv_play.cpp	17 Oct 2003 07:19:41 -0000	1.110
+++ libs/libmythtv/tv_play.cpp	18 Oct 2003 00:22:28 -0000
@@ -713,10 +713,7 @@
     int updatecheck = 0;
     update_osd_pos = false;
 
-    channelqueued = false;
-    channelKeys[0] = channelKeys[1] = channelKeys[2] = channelKeys[3] = ' ';
-    channelKeys[4] = 0;
-    channelkeysstored = 0;    
+    ChannelClear();
 
     runMainLoop = true;
     exitPlayer = false;
@@ -1042,7 +1039,13 @@
         {
             StopFFRew();
 
-            if (StateIsPlaying(internalState) && 
+	    if (osd && osd->Visible())
+	    {
+	        ChannelClear();
+		osd->Hide();
+		return;
+	    }
+            else if (StateIsPlaying(internalState) && 
                 gContext->GetNumSetting("PlaybackExitPrompt") == 1) 
             {
                 nvp->Pause();
@@ -1660,14 +1663,20 @@
         AddPreviousChannel();
     }
 
-    channelqueued = false;
-    channelKeys[0] = channelKeys[1] = channelKeys[2] = channelKeys[3] = ' ';
-    channelkeysstored = 0;
+    ChannelClear();
 
     if (muted)
         muteTimer->start(kMuteTimeout * 2, true);
 }
 
+void TV::ChannelClear(void)
+{
+    channelqueued = false;
+    channelKeys[0] = channelKeys[1] = channelKeys[2] = channelKeys[3] = ' ';
+    channelKeys[4] = 0;
+    channelkeysstored = 0;
+}
+
 void TV::ChannelKey(int key)
 {
     char thekey = key;
@@ -1718,9 +1727,7 @@
     QString chan = QString(channelKeys).stripWhiteSpace();
     ChangeChannelByString(chan);
 
-    channelqueued = false;
-    channelKeys[0] = channelKeys[1] = channelKeys[2] = channelKeys[3] = ' ';
-    channelkeysstored = 0;
+    ChannelClear();
 }
 
 void TV::ChangeChannelByString(QString &name)
Index: libs/libmythtv/tv_play.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/tv_play.h,v
retrieving revision 1.48
diff -u -r1.48 tv_play.h
--- libs/libmythtv/tv_play.h	17 Oct 2003 07:19:41 -0000	1.48
+++ libs/libmythtv/tv_play.h	18 Oct 2003 00:22:28 -0000
@@ -116,6 +116,7 @@
     void ChangeColour(bool up, bool recorder);
     void ChangeHue(bool up, bool recorder);
  
+    void ChannelClear(void);
     void ChannelKey(int key);
     void ChannelCommit(void);
 


More information about the mythtv-dev mailing list