[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