changeset 17057:d301c1833d12

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.
author albeu
date Sun, 27 Nov 2005 23:29:33 +0000
parents e0018f345868
children 1a87fe45bd4e
files mplayer.c
diffstat 1 files changed, 25 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mplayer.c	Sun Nov 27 19:48:39 2005 +0000
+++ b/mplayer.c	Sun Nov 27 23:29:33 2005 +0000
@@ -1104,6 +1104,29 @@
 }
 
 /**
+ *  \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 (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);