From 575dc2639862ba3abba0a063a00763119d262f5d Mon Sep 17 00:00:00 2001 From: albeu Date: Sun, 27 Nov 2005 23:29:33 +0000 Subject: 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 --- mplayer.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'mplayer.c') diff --git a/mplayer.c b/mplayer.c index fc86d67ecf..dc5a82b08d 100644 --- a/mplayer.c +++ b/mplayer.c @@ -1103,6 +1103,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 * @@ -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); -- cgit v1.2.3