X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcontrol%2Fvideo.c;h=2f122a54a18cc53ce55ed319b7316c58cc779830;hb=1da8392047446063f48bfaa61c1dc08be4461df8;hp=09070e3c02f33da983041da6d1acd7ca7039d514;hpb=a8fbe67ffbd0299169317074bdab82a84d35dc3b;p=vlc diff --git a/src/control/video.c b/src/control/video.c index 09070e3c02..2f122a54a1 100644 --- a/src/control/video.c +++ b/src/control/video.c @@ -47,7 +47,10 @@ static vout_thread_t **GetVouts( libvlc_media_player_t *p_mi, size_t *n ) { input_thread_t *p_input = libvlc_get_input_thread( p_mi ); if( !p_input ) + { + *n = 0; return NULL; + } vout_thread_t **pp_vouts; if (input_Control( p_input, INPUT_GET_VOUTS, &pp_vouts, n)) @@ -223,7 +226,7 @@ void libvlc_video_set_scale( libvlc_media_player_t *p_mp, float f_scale ) { if (f_scale != 0.) var_SetFloat (p_mp, "scale", f_scale); - var_SetBool (p_mp, "autoscale", f_scale != 0.); + var_SetBool (p_mp, "autoscale", f_scale == 0.); /* Apply to current video outputs (if any) */ size_t n; @@ -234,7 +237,7 @@ void libvlc_video_set_scale( libvlc_media_player_t *p_mp, float f_scale ) if (f_scale != 0.) var_SetFloat (p_vout, "scale", f_scale); - var_SetBool (p_mp, "autoscale", f_scale != 0.); + var_SetBool (p_vout, "autoscale", f_scale == 0.); vlc_object_release (p_vout); } free (pp_vouts); @@ -283,7 +286,7 @@ int libvlc_video_get_spu( libvlc_media_player_t *p_mi ) if( i_ret < 0 ) { vlc_object_release( p_input_thread ); - libvlc_printerr( "Subtitle informations not found" ); + libvlc_printerr( "Subtitle information not found" ); return -1; } @@ -395,7 +398,14 @@ void libvlc_video_set_crop_geometry( libvlc_media_player_t *p_mi, for (size_t i = 0; i < n; i++) { vout_thread_t *p_vout = pp_vouts[i]; - + vlc_value_t val; + + /* Make sure the geometry is in the choice list */ + /* Earlier choices are removed to not grow a long list over time. */ + /* FIXME: not atomic - lock? */ + val.psz_string = (char *)psz_geometry; + var_Change (p_vout, "crop", VLC_VAR_CLEARCHOICES, NULL, NULL); + var_Change (p_vout, "crop", VLC_VAR_ADDCHOICE, &val, &val); var_SetString (p_vout, "crop", psz_geometry); vlc_object_release (p_vout); } @@ -768,7 +778,7 @@ marq_option_bynumber(unsigned option) }; enum { num_opts = sizeof(optlist) / sizeof(*optlist) }; - opt_t *r = option < num_opts ? optlist+option : NULL; + const opt_t *r = option < num_opts ? optlist+option : NULL; if( !r ) libvlc_printerr( "Unknown marquee option" ); return r; @@ -816,7 +826,7 @@ void libvlc_video_set_marquee_string( libvlc_media_player_t *p_mi, /* logo module support */ -static opt_t * +static const opt_t * logo_option_bynumber( unsigned option ) { static const opt_t vlogo_optlist[] = @@ -833,7 +843,7 @@ logo_option_bynumber( unsigned option ) }; enum { num_vlogo_opts = sizeof(vlogo_optlist) / sizeof(*vlogo_optlist) }; - opt_t *r = option < num_vlogo_opts ? vlogo_optlist+option : NULL; + const opt_t *r = option < num_vlogo_opts ? vlogo_optlist+option : NULL; if( !r ) libvlc_printerr( "Unknown logo option" ); return r; @@ -864,7 +874,7 @@ int libvlc_video_get_logo_int( libvlc_media_player_t *p_mi, /* adjust module support */ -static opt_t * +static const opt_t * adjust_option_bynumber( unsigned option ) { static const opt_t optlist[] = @@ -878,7 +888,7 @@ adjust_option_bynumber( unsigned option ) }; enum { num_opts = sizeof(optlist) / sizeof(*optlist) }; - opt_t *r = option < num_opts ? optlist+option : NULL; + const opt_t *r = option < num_opts ? optlist+option : NULL; if( !r ) libvlc_printerr( "Unknown adjust option" ); return r;