X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=lib%2Fmedia_player.c;h=14d5bcea4c932697860e7a5a18de5ea13bad9898;hb=674fe3654d880fb3f8775db989fd0bec74c95c26;hp=4b4073075ef9c76ee9f4eab068f54e4e0ef9f2e4;hpb=7dcac68447be650214d3d0adfa49c3454d342234;p=vlc diff --git a/lib/media_player.c b/lib/media_player.c index 4b4073075e..14d5bcea4c 100644 --- a/lib/media_player.c +++ b/lib/media_player.c @@ -1,8 +1,7 @@ /***************************************************************************** * media_player.c: Libvlc API Media Instance management functions ***************************************************************************** - * Copyright (C) 2005-2009 the VideoLAN team - * $Id$ + * Copyright (C) 2005-2011 the VideoLAN team * * Authors: Clément Stenac * @@ -52,7 +51,7 @@ static const vlc_action_t libvlc_navigate_to_action[] = ACTIONID_NAV_RIGHT }; -static const uint32_t libvlc_navigate_to_action_size = \ +static const uint32_t libvlc_navigate_to_action_size = \ sizeof( libvlc_navigate_to_action ) / sizeof( libvlc_navigate_to_action[0] ); @@ -316,6 +315,25 @@ input_event_changed( vlc_object_t * p_this, char const * psz_cmd, var_GetFloat( p_input, "cache" )); libvlc_event_send( p_mi->p_event_manager, &event ); } + else if( newval.i_int == INPUT_EVENT_VOUT ) + { + vout_thread_t **pp_vout; + size_t i_vout; + if( input_Control( p_input, INPUT_GET_VOUTS, &pp_vout, &i_vout ) ) + { + i_vout = 0; + } + else + { + for( size_t i = 0; i < i_vout; i++ ) + vlc_object_release( pp_vout[i] ); + free( pp_vout ); + } + + event.type = libvlc_MediaPlayerVout; + event.u.media_player_vout.new_count = i_vout; + libvlc_event_send( p_mi->p_event_manager, &event ); + } return VLC_SUCCESS; } @@ -395,7 +413,7 @@ libvlc_media_player_new( libvlc_instance_t *instance ) var_Create (mp, "vmem-height", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT); var_Create (mp, "vmem-pitch", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT); var_Create (mp, "drawable-xid", VLC_VAR_INTEGER); -#ifdef WIN32 +#if defined (WIN32) || defined (__OS2__) var_Create (mp, "drawable-hwnd", VLC_VAR_INTEGER); #endif #ifdef __APPLE__ @@ -452,7 +470,7 @@ libvlc_media_player_new( libvlc_instance_t *instance ) var_SetAddress (mp, "find-input-callback", find_input); var_Create (mp, "amem-data", VLC_VAR_ADDRESS); var_Create (mp, "amem-setup", VLC_VAR_ADDRESS); - var_Create (mp, "amem-close", VLC_VAR_ADDRESS); + var_Create (mp, "amem-cleanup", VLC_VAR_ADDRESS); var_Create (mp, "amem-play", VLC_VAR_ADDRESS); var_Create (mp, "amem-pause", VLC_VAR_ADDRESS); var_Create (mp, "amem-resume", VLC_VAR_ADDRESS); @@ -496,6 +514,8 @@ libvlc_media_player_new( libvlc_instance_t *instance ) register_event(mp, TitleChanged); register_event(mp, PausableChanged); + register_event(mp, Vout); + /* Snapshot initialization */ register_event(mp, SnapshotTaken); @@ -915,7 +935,7 @@ void libvlc_media_player_set_hwnd( libvlc_media_player_t *p_mi, void *drawable ) { assert (p_mi != NULL); -#ifdef WIN32 +#if defined (WIN32) || defined (__OS2__) var_SetString (p_mi, "window", (drawable != NULL) ? "embed-hwnd,any" : ""); var_SetInteger (p_mi, "drawable-hwnd", (uintptr_t)drawable); @@ -930,7 +950,7 @@ void libvlc_media_player_set_hwnd( libvlc_media_player_t *p_mi, void *libvlc_media_player_get_hwnd( libvlc_media_player_t *p_mi ) { assert (p_mi != NULL); -#ifdef WIN32 +#if defined (WIN32) || defined (__OS2__) return (void *)(uintptr_t)var_GetInteger (p_mi, "drawable-hwnd"); #else return NULL; @@ -1271,7 +1291,7 @@ int libvlc_media_player_is_seekable( libvlc_media_player_t *p_mi ) } void libvlc_media_player_navigate( libvlc_media_player_t* p_mi, - unsigned navigate ) + unsigned navigate ) { input_thread_t *p_input_thread; @@ -1283,7 +1303,7 @@ void libvlc_media_player_navigate( libvlc_media_player_t* p_mi, return; var_SetInteger( p_mi->p_libvlc_instance->p_libvlc_int, - "key-action", libvlc_navigate_to_action[navigate] ); + "key-action", libvlc_navigate_to_action[navigate] ); vlc_object_release( p_input_thread ); } @@ -1324,7 +1344,7 @@ libvlc_track_description_t * malloc( sizeof( libvlc_track_description_t ) ); if ( !p_actual ) { - libvlc_track_description_release( p_track_description ); + libvlc_track_description_list_release( p_track_description ); libvlc_printerr( "Not enough memory" ); goto end; } @@ -1345,7 +1365,13 @@ end: return p_track_description; } +// Deprecated alias for libvlc_track_description_list_release void libvlc_track_description_release( libvlc_track_description_t *p_td ) +{ + libvlc_track_description_list_release( p_td ); +} + +void libvlc_track_description_list_release( libvlc_track_description_t *p_td ) { libvlc_track_description_t *p_actual, *p_before; p_actual = p_td;