From: RĂ©mi Denis-Courmont Date: Sat, 31 Jan 2009 18:18:17 +0000 (+0200) Subject: Cleanup vout window handle typedef X-Git-Tag: 1.0.0-pre1~947 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=4de1d766d14cead239459cf7cf31d9f907237bcd;p=vlc Cleanup vout window handle typedef --- diff --git a/include/vlc_window.h b/include/vlc_window.h index 3021eab02b..a0fe0ece8e 100644 --- a/include/vlc_window.h +++ b/include/vlc_window.h @@ -36,7 +36,11 @@ struct vout_window_t module_t *module; vout_thread_t *vout; - void *handle; /* OS-specific Window handle */ + union + { + void *hwnd; /* Win32 window handle */ + uint32_t xid; /* X11 window ID */ + } handle; void *p_sys; /* window provider private data */ unsigned width; /* pixels width */ diff --git a/modules/gui/maemo/maemo.c b/modules/gui/maemo/maemo.c index 8bdafdbeb2..7ed5c39df2 100644 --- a/modules/gui/maemo/maemo.c +++ b/modules/gui/maemo/maemo.c @@ -36,6 +36,7 @@ #include #include #include +#include #include "maemo.h" #include "maemo_callbacks.h" @@ -288,8 +289,8 @@ static int OpenWindow (vlc_object_t *obj) return VLC_EGENERIC; /* Maemo not in use */ } - wnd->handle = request_video( intf, wnd->vout ); - msg_Dbg( intf, "Using handle %p", wnd->handle ); + wnd->handle.xid = request_video( intf, wnd->vout ); + msg_Dbg( intf, "Using handle %"PRIu32, wnd->handle.xid ); wnd->control = ControlWindow; wnd->p_private = intf; diff --git a/modules/gui/qt4/components/interface_widgets.cpp b/modules/gui/qt4/components/interface_widgets.cpp index 3c07475c07..2b6a305b96 100644 --- a/modules/gui/qt4/components/interface_widgets.cpp +++ b/modules/gui/qt4/components/interface_widgets.cpp @@ -100,9 +100,9 @@ VideoWidget::~VideoWidget() /** * Request the video to avoid the conflicts **/ -void *VideoWidget::request( vout_thread_t *p_nvout, int *pi_x, int *pi_y, - unsigned int *pi_width, unsigned int *pi_height, - bool b_keep_size ) +WId VideoWidget::request( vout_thread_t *p_nvout, int *pi_x, int *pi_y, + unsigned int *pi_width, unsigned int *pi_height, + bool b_keep_size ) { msg_Dbg( p_intf, "Video was requested %i, %i", *pi_x, *pi_y ); @@ -122,7 +122,7 @@ void *VideoWidget::request( vout_thread_t *p_nvout, int *pi_x, int *pi_y, #ifndef NDEBUG msg_Dbg( p_intf, "embedded video ready (handle %p)", (void *)winId() ); #endif - return ( void* )winId(); + return winId(); } /* Set the Widget to the correct Size */ diff --git a/modules/gui/qt4/components/interface_widgets.hpp b/modules/gui/qt4/components/interface_widgets.hpp index 71c3bf3ef5..b3c2ba6d6a 100644 --- a/modules/gui/qt4/components/interface_widgets.hpp +++ b/modules/gui/qt4/components/interface_widgets.hpp @@ -59,8 +59,8 @@ public: VideoWidget( intf_thread_t * ); virtual ~VideoWidget(); - void *request( vout_thread_t *, int *, int *, - unsigned int *, unsigned int *, bool ); + WId request( vout_thread_t *, int *, int *, + unsigned int *, unsigned int *, bool ); void release( void ); int control( void *, int, va_list ); diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp index e8ad9c6535..ad14e4d79b 100644 --- a/modules/gui/qt4/main_interface.cpp +++ b/modules/gui/qt4/main_interface.cpp @@ -638,13 +638,13 @@ private: * Thou shall not call/resize/hide widgets from on another thread. * This is wrong, and this is THE reason to emit signals on those Video Functions **/ -void *MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x, - int *pi_y, unsigned int *pi_width, - unsigned int *pi_height ) +WId MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x, + int *pi_y, unsigned int *pi_width, + unsigned int *pi_height ) { /* Request the videoWidget */ - void *ret = videoWidget->request( p_nvout,pi_x, pi_y, - pi_width, pi_height, b_keep_size ); + WId ret = videoWidget->request( p_nvout,pi_x, pi_y, + pi_width, pi_height, b_keep_size ); if( ret ) /* The videoWidget is available */ { /* Did we have a bg ? Hide it! */ @@ -689,9 +689,8 @@ void MainInterface::releaseVideoSlot( void ) } /* Call from WindowControl function */ -int MainInterface::controlVideo( void *p_window, int i_query, va_list args ) +int MainInterface::controlVideo( int i_query, va_list args ) { - VLC_UNUSED( p_window ); //FIXME remove this param int i_ret = VLC_SUCCESS; switch( i_query ) { diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp index 9dc9b46c72..95e0a787a8 100644 --- a/modules/gui/qt4/main_interface.hpp +++ b/modules/gui/qt4/main_interface.hpp @@ -75,11 +75,11 @@ public: virtual ~MainInterface(); /* Video requests from core */ - void *requestVideo( vout_thread_t *p_nvout, int *pi_x, - int *pi_y, unsigned int *pi_width, - unsigned int *pi_height ); + WId requestVideo( vout_thread_t *p_nvout, int *pi_x, + int *pi_y, unsigned int *pi_width, + unsigned int *pi_height ); void releaseVideo( void ); - int controlVideo( void *p_window, int i_query, va_list args ); + int controlVideo( int i_query, va_list args ); /* Getters */ QSystemTrayIcon *getSysTray() { return sysTray; }; diff --git a/modules/gui/qt4/qt4.cpp b/modules/gui/qt4/qt4.cpp index 01bae6fe7c..6ea352005e 100644 --- a/modules/gui/qt4/qt4.cpp +++ b/modules/gui/qt4/qt4.cpp @@ -516,11 +516,23 @@ static int WindowOpen (vlc_object_t *obj) MainInterface *p_mi = intf->p_sys->p_mi; msg_Dbg (obj, "requesting video..."); - wnd->handle = p_mi->requestVideo (wnd->vout, &wnd->pos_x, &wnd->pos_y, - &wnd->width, &wnd->height); - if (!wnd->handle) +#if defined (Q_WS_X11) + wnd->handle.xid = p_mi->requestVideo (wnd->vout, &wnd->pos_x, &wnd->pos_y, + &wnd->width, &wnd->height); + if (!wnd->handle.xid) return VLC_EGENERIC; +#elif defined (WIN32) + wnd->handle.hwnd = p_mi->requestVideo (wnd->vout, &wnd->pos_x, &wnd->pos_y, + &wnd->width, &wnd->height); + if (!wnd->handle.hwnd) + return VLC_EGENERIC; + +#else + return VLC_EGENERIC; + +#endif + wnd->control = WindowControl; wnd->p_private = p_mi; return VLC_SUCCESS; @@ -531,7 +543,7 @@ static int WindowControl (vout_window_t *wnd, int query, va_list args) MainInterface *p_mi = (MainInterface *)wnd->p_private; QMutexLocker locker (&iface.lock); - return p_mi->controlVideo (wnd->handle, query, args); + return p_mi->controlVideo (query, args); } static void WindowClose (vlc_object_t *obj) diff --git a/modules/video_output/msw/events.c b/modules/video_output/msw/events.c index 9c48875332..3e7a7a614a 100644 --- a/modules/video_output/msw/events.c +++ b/modules/video_output/msw/events.c @@ -422,7 +422,7 @@ static int DirectXCreateWindow( vout_thread_t *p_vout ) &p_vout->p_sys->i_window_y, &p_vout->p_sys->i_window_width, &p_vout->p_sys->i_window_height ); - p_vout->p_sys->hparent = p_vout->p_sys->parent_window->handle; + p_vout->p_sys->hparent = p_vout->p_sys->parent_window->handle.hwnd; /* We create the window ourself, there is no previous window proc. */ p_vout->p_sys->pf_wndproc = NULL; diff --git a/modules/video_output/omapfb.c b/modules/video_output/omapfb.c index d3e772149c..f992700b32 100644 --- a/modules/video_output/omapfb.c +++ b/modules/video_output/omapfb.c @@ -701,7 +701,7 @@ static void CreateWindow( vout_sys_t *p_sys ) BlackPixel( p_sys->p_display, DefaultScreen(p_sys->p_display) ); xwindow_attributes.event_mask = ExposureMask | StructureNotifyMask; p_sys->window = XCreateWindow( p_sys->p_display, - p_sys->owner_window->handle, + p_sys->owner_window->handle.xid, 0, 0, p_sys->main_window.i_width, p_sys->main_window.i_height, @@ -714,7 +714,7 @@ static void CreateWindow( vout_sys_t *p_sys ) XSelectInput( p_sys->p_display, p_sys->window, KeyPressMask | ButtonPressMask | StructureNotifyMask | VisibilityChangeMask | FocusChangeMask ); - XSelectInput( p_sys->p_display, p_sys->owner_window->handle, + XSelectInput( p_sys->p_display, p_sys->owner_window->handle.xid, StructureNotifyMask ); XSetInputFocus( p_sys->p_display, p_sys->window, RevertToParent, CurrentTime ); } diff --git a/modules/video_output/x11/xcommon.c b/modules/video_output/x11/xcommon.c index 5ba486d2ca..3d103ceccc 100644 --- a/modules/video_output/x11/xcommon.c +++ b/modules/video_output/x11/xcommon.c @@ -1161,7 +1161,7 @@ static int ManageVideo( vout_thread_t *p_vout ) if( p_vout->p_sys->p_win->owner_window ) { while( XCheckWindowEvent( p_vout->p_sys->p_display, - p_vout->p_sys->p_win->owner_window->handle, + p_vout->p_sys->p_win->owner_window->handle.xid, StructureNotifyMask, &xevent ) == True ) { /* ConfigureNotify event: prepare */ @@ -1716,11 +1716,12 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win ) unsigned int dummy4, dummy5; /* Select events we are interested in. */ - XSelectInput( p_vout->p_sys->p_display, p_win->owner_window->handle, - StructureNotifyMask ); + XSelectInput( p_vout->p_sys->p_display, + p_win->owner_window->handle.xid, StructureNotifyMask ); /* Get the parent window's geometry information */ - XGetGeometry( p_vout->p_sys->p_display, p_win->owner_window->handle, + XGetGeometry( p_vout->p_sys->p_display, + p_win->owner_window->handle.xid, &dummy1, &dummy2, &dummy3, &p_win->i_width, &p_win->i_height, @@ -1733,7 +1734,7 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win ) * ButtonPress event, so we need to open a new window anyway. */ p_win->base_window = XCreateWindow( p_vout->p_sys->p_display, - p_win->owner_window->handle, + p_win->owner_window->handle.xid, 0, 0, p_win->i_width, p_win->i_height, 0, diff --git a/modules/video_output/xcb/window.c b/modules/video_output/xcb/window.c index b2a235f57f..0dac44f3e1 100644 --- a/modules/video_output/xcb/window.c +++ b/modules/video_output/xcb/window.c @@ -96,7 +96,7 @@ static int Open (vlc_object_t *obj) xcb_map_window (conn, window); xcb_flush (conn); - wnd->handle = (void *)(intptr_t)window; + wnd->handle.xid = window; wnd->p_sys = conn; wnd->control = Control; return VLC_SUCCESS; diff --git a/modules/video_output/xcb/xcb.c b/modules/video_output/xcb/xcb.c index 34b83d09f6..035311a9ef 100644 --- a/modules/video_output/xcb/xcb.c +++ b/modules/video_output/xcb/xcb.c @@ -377,7 +377,7 @@ static int Init (vout_thread_t *vout) msg_Err (vout, "cannot get window"); return VLC_EGENERIC; } - p_sys->parent = (intptr_t)p_sys->embed->handle; + p_sys->parent = p_sys->embed->handle.xid; } /* Determine our input format */