From 694c067e19dcbabe8f6121923fe628b9bfa6ac32 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Mon, 30 Mar 2009 02:06:58 +0300 Subject: options: Move osd_level and osd_duration to options struct --- cfg-mplayer.h | 4 ++-- command.c | 30 +++++++++++++++++------------- defaultopts.c | 2 ++ mp_osd.h | 1 - mplayer.c | 23 +++++++++++++---------- mplayer.h | 1 - options.h | 2 ++ 7 files changed, 36 insertions(+), 27 deletions(-) diff --git a/cfg-mplayer.h b/cfg-mplayer.h index 152b9bf9bd..5b5a1ac176 100644 --- a/cfg-mplayer.h +++ b/cfg-mplayer.h @@ -242,8 +242,8 @@ const m_option_t mplayer_opts[]={ {"crash-debug", &crash_debug, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL}, {"nocrash-debug", &crash_debug, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL}, #endif - {"osdlevel", &osd_level, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL}, - {"osd-duration", &osd_duration, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL}, + OPT_INTRANGE("osdlevel", osd_level, 0, 0, 3), + OPT_INTRANGE("osd-duration", osd_duration, 0, 0, 3600000), #ifdef CONFIG_MENU {"menu", &use_menu, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL}, {"nomenu", &use_menu, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL}, diff --git a/command.c b/command.c index 0138052c2a..5e76158116 100644 --- a/command.c +++ b/command.c @@ -172,7 +172,7 @@ static void log_sub(struct MPContext *mpctx) static int mp_property_osdlevel(m_option_t *prop, int action, void *arg, MPContext *mpctx) { - return m_property_choice(prop, action, arg, &osd_level); + return m_property_choice(prop, action, arg, &mpctx->opts.osd_level); } /// Loop (RW) @@ -385,6 +385,7 @@ static int mp_property_time_pos(m_option_t *prop, int action, static int mp_property_chapter(m_option_t *prop, int action, void *arg, MPContext *mpctx) { + struct MPOpts *opts = &mpctx->opts; int chapter = -1; float next_pts = 0; int chapter_num; @@ -440,13 +441,13 @@ static int mp_property_chapter(m_option_t *prop, int action, void *arg, mpctx->rel_seek_secs = next_pts; } if (chapter_name) - set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, + set_osd_msg(OSD_MSG_TEXT, 1, opts->osd_duration, MSGTR_OSDChapter, chapter + 1, chapter_name); } else if (step_all > 0) mpctx->rel_seek_secs = 1000000000.; else - set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, + set_osd_msg(OSD_MSG_TEXT, 1, opts->osd_duration, MSGTR_OSDChapter, 0, MSGTR_Unknown); if (chapter_name) free(chapter_name); @@ -468,6 +469,7 @@ static int mp_property_chapters(m_option_t *prop, int action, void *arg, static int mp_property_angle(m_option_t *prop, int action, void *arg, MPContext *mpctx) { + struct MPOpts *opts = &mpctx->opts; int angle = -1; int angles; char *angle_name = NULL; @@ -519,7 +521,7 @@ static int mp_property_angle(m_option_t *prop, int action, void *arg, return M_PROPERTY_NOT_IMPLEMENTED; } angle = demuxer_set_angle(mpctx->demuxer, angle); - set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, + set_osd_msg(OSD_MSG_TEXT, 1, opts->osd_duration, MSGTR_OSDAngle, angle, angles); if (angle_name) free(angle_name); @@ -2285,6 +2287,7 @@ static struct { /// Handle commands that set a property. static int set_property_command(MPContext *mpctx, mp_cmd_t *cmd) { + struct MPOpts *opts = &mpctx->opts; int i, r; m_option_t* prop; const char *pname; @@ -2335,7 +2338,7 @@ static int set_property_command(MPContext *mpctx, mp_cmd_t *cmd) if (val) { set_osd_msg(set_prop_cmd[i].osd_id >= 0 ? set_prop_cmd[i].osd_id : OSD_MSG_PROPERTY + i, - 1, osd_duration, set_prop_cmd[i].osd_msg, val); + 1, opts->osd_duration, set_prop_cmd[i].osd_msg, val); free(val); } } @@ -2377,6 +2380,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) struct MPOpts *opts = &mpctx->opts; sh_audio_t * const sh_audio = mpctx->sh_audio; sh_video_t * const sh_video = mpctx->sh_video; + int osd_duration = opts->osd_duration; if (!set_property_command(mpctx, cmd)) switch (cmd->id) { case MP_CMD_SEEK:{ @@ -2621,18 +2625,18 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) int v = cmd->args[0].v.i; int max = (term_osd && !sh_video) ? MAX_TERM_OSD_LEVEL : MAX_OSD_LEVEL; - if (osd_level > max) - osd_level = max; + if (opts->osd_level > max) + opts->osd_level = max; if (v < 0) - osd_level = (osd_level + 1) % (max + 1); + opts->osd_level = (opts->osd_level + 1) % (max + 1); else - osd_level = v > max ? max : v; + opts->osd_level = v > max ? max : v; /* Show OSD state when disabled, but not when an explicit argument is given to the OSD command, i.e. in slave mode. */ - if (v == -1 && osd_level <= 1) + if (v == -1 && opts->osd_level <= 1) set_osd_msg(OSD_MSG_OSD_STATUS, 0, osd_duration, MSGTR_OSDosd, - osd_level ? MSGTR_OSDenabled : + opts->osd_level ? MSGTR_OSDenabled : MSGTR_OSDdisabled); else rm_osd_msg(OSD_MSG_OSD_STATUS); @@ -3181,7 +3185,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) pointer_y = (int) (dy * (double) sh_video->disp_h); mp_dvdnav_update_mouse_pos(mpctx->stream, pointer_x, pointer_y, &button); - if (osd_level > 1 && button > 0) + if (opts->osd_level > 1 && button > 0) set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, "Selected button number %d", button); } @@ -3208,7 +3212,7 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) command = mp_dvdnav_bindings[i].cmd; mp_dvdnav_handle_input(mpctx->stream,command,&button); - if (osd_level > 1 && button > 0) + if (opts->osd_level > 1 && button > 0) set_osd_msg(OSD_MSG_TEXT, 1, osd_duration, "Selected button number %d", button); } diff --git a/defaultopts.c b/defaultopts.c index 2f77b16fcd..fb841e64a1 100644 --- a/defaultopts.c +++ b/defaultopts.c @@ -17,6 +17,8 @@ void set_default_mplayer_options(struct MPOpts *opts) .vo_gamma_contrast = 1000, .vo_gamma_saturation = 1000, .vo_gamma_hue = 1000, + .osd_level = 1, + .osd_duration = 1000, .loop_times = -1, .user_correct_pts = -1, .key_fifo_size = 7, diff --git a/mp_osd.h b/mp_osd.h index d4ba8adbaf..6a1b3b94fe 100644 --- a/mp_osd.h +++ b/mp_osd.h @@ -16,7 +16,6 @@ #define MAX_TERM_OSD_LEVEL 1 // These appear in options list -extern int osd_duration; extern int term_osd; struct MPContext; diff --git a/mplayer.c b/mplayer.c index a30fe21899..ec91b2a10e 100644 --- a/mplayer.c +++ b/mplayer.c @@ -201,10 +201,8 @@ int enqueue=0; static int list_properties = 0; -int osd_level=1; // if nonzero, hide current OSD contents when GetTimerMS() reaches this unsigned int osd_visible; -int osd_duration = 1000; int term_osd = 1; static char* term_osd_esc = "\x1b[A\r\x1b[K"; @@ -1403,6 +1401,7 @@ static void clear_osd_msgs(void) { static mp_osd_msg_t* get_osd_msg(struct MPContext *mpctx) { + struct MPOpts *opts = &mpctx->opts; mp_osd_msg_t *msg,*prev,*last = NULL; static unsigned last_update = 0; unsigned now = GetTimerMS(); @@ -1428,14 +1427,16 @@ static mp_osd_msg_t* get_osd_msg(struct MPContext *mpctx) // Look for the first message in the stack with high enough level. for(msg = osd_msg_stack ; msg ; last = msg, msg = prev) { prev = msg->prev; - if(msg->level > osd_level && hidden_dec_done) continue; + if (msg->level > opts->osd_level && hidden_dec_done) + continue; // The message has a high enough level or it is the first hidden one // in both cases we decrement the timer or kill it. if(!msg->started || msg->time > diff) { if(msg->started) msg->time -= diff; else msg->started = 1; // display it - if(msg->level <= osd_level) return msg; + if (msg->level <= opts->osd_level) + return msg; hidden_dec_done = 1; continue; } @@ -1461,8 +1462,9 @@ static mp_osd_msg_t* get_osd_msg(struct MPContext *mpctx) */ void set_osd_bar(struct MPContext *mpctx, int type,const char* name,double min,double max,double val) { - - if(osd_level < 1) return; + struct MPOpts *opts = &mpctx->opts; + if (opts->osd_level < 1) + return; if(mpctx->sh_video) { osd_visible = (GetTimerMS() + 1000) | 1; @@ -1472,8 +1474,8 @@ void set_osd_bar(struct MPContext *mpctx, int type,const char* name,double min,d return; } - set_osd_msg(OSD_MSG_BAR,1,osd_duration,"%s: %d %%", - name,ROUND(100*(val-min)/(max-min))); + set_osd_msg(OSD_MSG_BAR, 1, opts->osd_duration, "%s: %d %%", + name, ROUND(100*(val-min)/(max-min))); } @@ -1488,6 +1490,7 @@ void set_osd_bar(struct MPContext *mpctx, int type,const char* name,double min,d static void update_osd_msg(struct MPContext *mpctx) { + struct MPOpts *opts = &mpctx->opts; mp_osd_msg_t *msg; struct osd_state *osd = mpctx->osd; char osd_text_timer[128]; @@ -1504,7 +1507,7 @@ static void update_osd_msg(struct MPContext *mpctx) if(mpctx->sh_video) { // fallback on the timer - if(osd_level>=2) { + if (opts->osd_level >= 2) { int len = demuxer_get_time_length(mpctx->demuxer); int percentage = -1; char percentage_text[10]; @@ -1518,7 +1521,7 @@ static void update_osd_msg(struct MPContext *mpctx) else percentage_text[0] = 0; - if (osd_level == 3) + if (opts->osd_level == 3) snprintf(osd_text_timer, 63, "%c %02d:%02d:%02d / %02d:%02d:%02d%s", mpctx->osd_function,pts/3600,(pts/60)%60,pts%60, diff --git a/mplayer.h b/mplayer.h index c59b4ca723..5ca10cec6b 100644 --- a/mplayer.h +++ b/mplayer.h @@ -17,7 +17,6 @@ extern char * video_driver; extern char * audio_driver; extern float audio_delay; -extern int osd_level; extern unsigned int osd_visible; extern char * font_name; diff --git a/options.h b/options.h index 7e1a67c2b9..33dcccd883 100644 --- a/options.h +++ b/options.h @@ -25,6 +25,8 @@ typedef struct MPOpts { int vo_gamma_saturation; int vo_gamma_hue; + int osd_level; + int osd_duration; int loop_times; int correct_pts; int user_correct_pts; -- cgit v1.2.3