From: RĂ©mi Denis-Courmont Date: Sun, 31 Jan 2010 16:56:56 +0000 (+0200) Subject: LibVLC: use VLC variables inheritance for drawable and UI events X-Git-Tag: 1.1.0-ff~594 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=8f9c3647ccfcd55cd6835ed90e98766a7f2eb677;p=vlc LibVLC: use VLC variables inheritance for drawable and UI events --- diff --git a/src/control/media_player.c b/src/control/media_player.c index 7911ce813b..e8f937948f 100644 --- a/src/control/media_player.c +++ b/src/control/media_player.c @@ -111,10 +111,6 @@ static void release_input_thread( libvlc_media_player_t *p_mi, bool b_input_abor /* Store the input resource for future use. */ p_mi->p_input_resource = input_DetachResource( p_input_thread ); - var_Destroy( p_input_thread, "drawable-hwnd" ); - var_Destroy( p_input_thread, "drawable-xid" ); - var_Destroy( p_input_thread, "drawable-agl" ); - vlc_object_release( p_input_thread ); p_mi->p_input_thread = NULL; @@ -350,12 +346,23 @@ libvlc_media_player_new( libvlc_instance_t *instance, libvlc_exception_t *e ) return NULL; } vlc_object_attach (mp, mp->p_libvlc); + + /* Drawable */ + var_Create (mp, "drawable-xid", VLC_VAR_INTEGER); +#ifdef WIN32 + var_Create (mp, "drawable-hwnd", VLC_VAR_ADDRESS); +#endif +#ifdef __APPLE__ + var_Create (mp, "drawable-agl", VLC_VAR_INTEGER); + var_Create (mp, "drawable-nsobject", VLC_VAR_ADDRESS); +#endif + + /* Drawable input methods */ + var_Create (mp, "keyboard-events", VLC_VAR_BOOL); + var_SetBool (mp, "keyboard-events", true); + var_Create (mp, "mouse-events", VLC_VAR_BOOL); + mp->p_md = NULL; - mp->drawable.agl = 0; - mp->drawable.xid = 0; - mp->drawable.hwnd = NULL; - mp->drawable.nsobject = NULL; - mp->keyboard_events = mp->mouse_events = 1; mp->state = libvlc_NothingSpecial; mp->p_libvlc_instance = instance; mp->p_input_thread = NULL; @@ -601,27 +608,6 @@ void libvlc_media_player_play( libvlc_media_player_t *p_mi, p_mi->p_input_resource = NULL; p_input_thread = p_mi->p_input_thread; - var_Create( p_input_thread, "drawable-agl", VLC_VAR_INTEGER ); - if( p_mi->drawable.agl ) - var_SetInteger( p_input_thread, "drawable-agl", p_mi->drawable.agl ); - - var_Create( p_input_thread, "drawable-xid", VLC_VAR_INTEGER ); - if( p_mi->drawable.xid ) - var_SetInteger( p_input_thread, "drawable-xid", p_mi->drawable.xid ); - - var_Create( p_input_thread, "drawable-hwnd", VLC_VAR_ADDRESS ); - if( p_mi->drawable.hwnd != NULL ) - var_SetAddress( p_input_thread, "drawable-hwnd", p_mi->drawable.hwnd ); - - var_Create( p_input_thread, "drawable-nsobject", VLC_VAR_ADDRESS ); - if( p_mi->drawable.nsobject != NULL ) - var_SetAddress( p_input_thread, "drawable-nsobject", p_mi->drawable.nsobject ); - - var_Create( p_input_thread, "keyboard-events", VLC_VAR_BOOL ); - var_SetBool( p_input_thread, "keyboard-events", p_mi->keyboard_events ); - var_Create( p_input_thread, "mouse-events", VLC_VAR_BOOL ); - var_SetBool( p_input_thread, "mouse-events", p_mi->mouse_events ); - var_AddCallback( p_input_thread, "can-seek", input_seekable_changed, p_mi ); var_AddCallback( p_input_thread, "can-pause", input_pausable_changed, p_mi ); var_AddCallback( p_input_thread, "intf-event", input_event_changed, p_mi ); @@ -700,7 +686,12 @@ void libvlc_media_player_stop( libvlc_media_player_t *p_mi ) void libvlc_media_player_set_nsobject( libvlc_media_player_t *p_mi, void * drawable ) { - p_mi->drawable.nsobject = drawable; + assert (p_mi != NULL); +#ifdef __APPLE__ + var_SetAddress (p_mi, "drawable-nsobject", drawable); +#else + (void) p_mi; (void)drawable; +#endif } /************************************************************************** @@ -708,7 +699,12 @@ void libvlc_media_player_set_nsobject( libvlc_media_player_t *p_mi, **************************************************************************/ void * libvlc_media_player_get_nsobject( libvlc_media_player_t *p_mi ) { - return p_mi->drawable.nsobject; + assert (p_mi != NULL); +#ifdef __APPLE__ + return var_GetAddress (p_mi, "drawable-nsobject"); +#else + return NULL; +#endif } /************************************************************************** @@ -717,7 +713,11 @@ void * libvlc_media_player_get_nsobject( libvlc_media_player_t *p_mi ) void libvlc_media_player_set_agl( libvlc_media_player_t *p_mi, uint32_t drawable ) { - p_mi->drawable.agl = drawable; +#ifdef __APPLE__ + var_SetInteger (p_mi, "drawable-agl", drawable); +#else + (void) p_mi; (void)drawable; +#endif } /************************************************************************** @@ -725,7 +725,12 @@ void libvlc_media_player_set_agl( libvlc_media_player_t *p_mi, **************************************************************************/ uint32_t libvlc_media_player_get_agl( libvlc_media_player_t *p_mi ) { - return p_mi->drawable.agl; + assert (p_mi != NULL); +#ifdef __APPLE__ + return var_GetInteger (p_mi, "drawable-agl"); +#else + return 0; +#endif } /************************************************************************** @@ -734,7 +739,8 @@ uint32_t libvlc_media_player_get_agl( libvlc_media_player_t *p_mi ) void libvlc_media_player_set_xwindow( libvlc_media_player_t *p_mi, uint32_t drawable ) { - p_mi->drawable.xid = drawable; + assert (p_mi != NULL); + var_SetInteger (p_mi, "drawable-xid", drawable); } /************************************************************************** @@ -742,7 +748,7 @@ void libvlc_media_player_set_xwindow( libvlc_media_player_t *p_mi, **************************************************************************/ uint32_t libvlc_media_player_get_xwindow( libvlc_media_player_t *p_mi ) { - return p_mi->drawable.xid; + return var_GetInteger (p_mi, "drawable-xid"); } /************************************************************************** @@ -751,7 +757,12 @@ uint32_t libvlc_media_player_get_xwindow( libvlc_media_player_t *p_mi ) void libvlc_media_player_set_hwnd( libvlc_media_player_t *p_mi, void *drawable ) { - p_mi->drawable.hwnd = drawable; + assert (p_mi != NULL); +#ifdef WIN32 + var_SetAddress (p_mi, "drawable-hwnd", drawable); +#else + (void) p_mi; (void) drawable; +#endif } /************************************************************************** @@ -759,7 +770,12 @@ void libvlc_media_player_set_hwnd( libvlc_media_player_t *p_mi, **************************************************************************/ void *libvlc_media_player_get_hwnd( libvlc_media_player_t *p_mi ) { - return p_mi->drawable.hwnd; + assert (p_mi != NULL); +#ifdef WIN32 + return var_GetAddress (p_mi, "drawable-hwnd"); +#else + return NULL; +#endif } /************************************************************************** diff --git a/src/control/media_player_internal.h b/src/control/media_player_internal.h index cf22cc071e..96bb61041c 100644 --- a/src/control/media_player_internal.h +++ b/src/control/media_player_internal.h @@ -46,15 +46,6 @@ struct libvlc_media_player_t libvlc_media_t * p_md; /* current media descriptor */ libvlc_event_manager_t * p_event_manager; libvlc_state_t state; - struct - { - void *hwnd; - void *nsobject; - uint32_t xid; - uint32_t agl; - } drawable; - unsigned keyboard_events:1; - unsigned mouse_events:1; }; /* Media player - audio, video */ diff --git a/src/control/video.c b/src/control/video.c index 3cec002964..415605c8de 100644 --- a/src/control/video.c +++ b/src/control/video.c @@ -114,12 +114,12 @@ void libvlc_toggle_fullscreen( libvlc_media_player_t *p_mi, void libvlc_video_set_key_input( libvlc_media_player_t *p_mi, unsigned on ) { - p_mi->keyboard_events = !!on; + var_SetBool (p_mi, "keyboard-events", !!on); } void libvlc_video_set_mouse_input( libvlc_media_player_t *p_mi, unsigned on ) { - p_mi->mouse_events = !!on; + var_SetBool (p_mi, "mouse-events", !!on); } void