summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
authoralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-11-27 23:29:33 +0000
committeralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-11-27 23:29:33 +0000
commit575dc2639862ba3abba0a063a00763119d262f5d (patch)
tree49cba09112ba2daf6e0c14e9328e2dbecd91e71c /mplayer.c
parentf5373be10ee16f04b11440be97c6c36cd9803f82 (diff)
downloadmpv-575dc2639862ba3abba0a063a00763119d262f5d.tar.bz2
mpv-575dc2639862ba3abba0a063a00763119d262f5d.tar.xz
Add a function to remove osd msg and use it to remove the "OSD: enabled"
msg when switching the OSD to a level above 1. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17058 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/mplayer.c b/mplayer.c
index fc86d67ecf..dc5a82b08d 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -1104,6 +1104,29 @@ static void set_osd_msg(int id, int level, int time, char* fmt, ...) {
}
/**
+ * \brief Remove a message from the OSD stack
+ *
+ * This function can be used to get rid of a message right away.
+ *
+ */
+
+static void rm_osd_msg(int id) {
+ mp_osd_msg_t *msg,*last=NULL;
+
+ // Search for the msg
+ for(msg = osd_msg_stack ; msg && msg->id != id ;
+ last = msg, msg = msg->prev);
+ if(!msg) return;
+
+ // Detach it from the stack and free it
+ if(last)
+ last->prev = msg->prev;
+ else
+ osd_msg_stack = msg->prev;
+ free(msg);
+}
+
+/**
* \brief Get the current message fron the OSD stack
*
* This function decrement the message timer and destroy the old ones.
@@ -3248,6 +3271,8 @@ if (stream->type==STREAMTYPE_DVDNAV && dvd_nav_still)
if (v == -1 && osd_level <= 1)
set_osd_msg(OSD_MSG_OSD_STATUS,0,osd_duration,
MSGTR_OSDosd, osd_level ? MSGTR_OSDenabled : MSGTR_OSDdisabled);
+ else
+ rm_osd_msg(OSD_MSG_OSD_STATUS);
} break;
case MP_CMD_OSD_SHOW_TEXT : {
set_osd_msg(OSD_MSG_TEXT,1,osd_duration,"%64s",cmd->args[0].v.s);