From f2f24f4915d16e223b5716938c7aa2c5c7f2f6cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= Date: Thu, 12 Feb 2009 22:22:34 +0200 Subject: [PATCH] Add libvlc_media_player_get_(hwnd|xwindow) as requested on forum --- include/vlc/libvlc.h | 21 +++++++++++++++++++++ src/control/media_player.c | 10 ++++++++++ src/libvlc.sym | 2 ++ 3 files changed, 33 insertions(+) diff --git a/include/vlc/libvlc.h b/include/vlc/libvlc.h index 57c88b24a0..3b8d8fce9b 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 ec74c9bc40..aebe7d9901 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 45587b8b4c..8de9c3f6f5 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