diff --git a/include/vlc/libvlc.h b/include/vlc/libvlc.h index 57c88b24a047357585a0928a6cec51643fc48e88..3b8d8fce9b79cde95abc6496e76fa77d80745e30 100644 --- a/include/vlc/libvlc.h +++ b/include/vlc/libvlc.h @@ -568,6 +568,16 @@ VLC_PUBLIC_API void libvlc_media_player_stop ( libvlc_media_player_t *, libvlc_e */ VLC_PUBLIC_API void libvlc_media_player_set_xwindow ( libvlc_media_player_t *p_mi, uint32_t drawable, libvlc_exception_t *p_e ); +/** + * Get the X Window System window identifier previously set with + * libvlc_media_player_set_xwindow(). Note that this will return the identifier + * even if VLC is not currently using it (for instance if it is playing an + * audio-only input). + * + * \return an X window ID, or 0 if none where set. + */ +VLC_PUBLIC_API uint32_t libvlc_media_player_get_xwindow ( libvlc_media_player_t *p_mi ); + /** * Set a Win32/Win64 API window handle (HWND) where the media player should * render its video output. If LibVLC was built without Win32/Win64 API output @@ -579,6 +589,17 @@ VLC_PUBLIC_API void libvlc_media_player_set_xwindow ( libvlc_media_player_t *p_m */ VLC_PUBLIC_API void libvlc_media_player_set_hwnd ( libvlc_media_player_t *p_mi, void *drawable, libvlc_exception_t *p_e ); +/** + * Get the Windows API window handle (HWND) previously set with + * libvlc_media_player_set_hwnd(). The handle will be returned even if LibVLC + * is not currently outputting any video to it. + * + * \return a window handle or NULL if there are none. + */ +VLC_PUBLIC_API void *libvlc_media_player_get_hwnd ( libvlc_media_player_t *p_mi ); + + + /** \bug This might go away ... to be replaced by a broader system */ /** diff --git a/src/control/media_player.c b/src/control/media_player.c index ec74c9bc4037925b54494f28f03ed91788115be0..aebe7d9901149ea4e56fff2b2d5f6f07031bb71d 100644 --- a/src/control/media_player.c +++ b/src/control/media_player.c @@ -706,6 +706,11 @@ void libvlc_media_player_set_xwindow( libvlc_media_player_t *p_mi, p_mi->drawable.xid = drawable; } +uint32_t libvlc_media_player_get_xwindow( libvlc_media_player_t *p_mi ) +{ + return p_mi->drawable.xid; +} + void libvlc_media_player_set_hwnd( libvlc_media_player_t *p_mi, void *drawable, libvlc_exception_t *p_e ) @@ -714,6 +719,11 @@ void libvlc_media_player_set_hwnd( libvlc_media_player_t *p_mi, p_mi->drawable.hwnd = drawable; } +void *libvlc_media_player_get_hwnd( libvlc_media_player_t *p_mi ) +{ + return p_mi->drawable.hwnd; +} + /************************************************************************** * Set Drawable **************************************************************************/ diff --git a/src/libvlc.sym b/src/libvlc.sym index 45587b8b4c45fbaee1ed0311a283d670d5c78e8a..8de9c3f6f590b71a41e37a1ef800d7932834f9af 100644 --- a/src/libvlc.sym +++ b/src/libvlc.sym @@ -125,6 +125,7 @@ libvlc_media_player_get_chapter_count libvlc_media_player_get_chapter_count_for_title libvlc_media_player_get_drawable libvlc_media_player_get_fps +libvlc_media_player_get_hwnd libvlc_media_player_get_length libvlc_media_player_get_media libvlc_media_player_get_position @@ -133,6 +134,7 @@ libvlc_media_player_get_state libvlc_media_player_get_time libvlc_media_player_get_title libvlc_media_player_get_title_count +libvlc_media_player_get_xwindow libvlc_media_player_has_vout libvlc_media_player_is_seekable libvlc_media_player_is_playing