]> git.sesse.net Git - vlc/commitdiff
vout_window_t: simplify via anynomous union
authorRémi Denis-Courmont <remi@remlab.net>
Mon, 7 Dec 2009 21:17:46 +0000 (23:17 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Tue, 8 Dec 2009 20:03:55 +0000 (22:03 +0200)
14 files changed:
include/vlc_vout_window.h
modules/gui/hildon/maemo.c
modules/gui/qt4/qt4.cpp
modules/gui/skins2/src/skin_main.cpp
modules/video_output/drawable.c
modules/video_output/msw/events.c
modules/video_output/msw/events_vo.c
modules/video_output/omapfb.c
modules/video_output/x11/xcommon.c
modules/video_output/xcb/common.c
modules/video_output/xcb/window.c
modules/video_output/xcb/x11.c
modules/video_output/xcb/xvideo.c
src/video_output/window.c

index a3615cdbdbbe2d1a32f727cc6e26092a6077e497..2c05e4cb7a7c73cff9659002e68a1715cda48327 100644 (file)
@@ -90,7 +90,7 @@ struct vout_window_t {
     union {
         void     *hwnd;   /* Win32 window handle */
         uint32_t xid;     /* X11 windows ID */
-    } handle;
+    };
 
     /* Control on the module (mandatory)
      *
index 264217138115048ebdd2cc1059e02b1e89fe9468..476dacf530e88d198e8e78aea7a85199fbf09707 100644 (file)
@@ -288,15 +288,15 @@ static int OpenWindow (vlc_object_t *obj)
     while ((intf = wnd_req.intf) == NULL)
         vlc_cond_wait (&wnd_req.wait, &wnd_req.lock);
 
-    wnd->handle.xid = request_video( intf, vout );
+    wnd->xid = request_video( intf, vout );
     vlc_mutex_unlock (&wnd_req.lock);
 
     vlc_object_release( vout );
 
-    if (!wnd->handle.xid)
+    if (!wnd->xid)
         return VLC_EGENERIC;
 
-    msg_Dbg( intf, "Using handle %"PRIu32, wnd->handle.xid );
+    msg_Dbg( intf, "Using handle %"PRIu32, wnd->xid );
 
     wnd->control = ControlWindow;
     wnd->sys = (vout_window_sys_t*)intf;
index 87055924b8ca967ef76919d37ae0814424151d46..92b4672614118bfb42cd7d3b827c482d79ca1cc4 100644 (file)
@@ -528,13 +528,13 @@ static int WindowOpen( vlc_object_t *p_obj )
     unsigned i_height = p_wnd->cfg->height;
 
 #if defined (Q_WS_X11)
-    p_wnd->handle.xid = p_mi->getVideo( &i_x, &i_y, &i_width, &i_height );
-    if( !p_wnd->handle.xid )
+    p_wnd->xid = p_mi->getVideo( &i_x, &i_y, &i_width, &i_height );
+    if( !p_wnd->xid )
         return VLC_EGENERIC;
 
 #elif defined (WIN32)
-    p_wnd->handle.hwnd = p_mi->getVideo( &i_x, &i_y, &i_width, &i_height );
-    if( !p_wnd->handle.hwnd )
+    p_wnd->hwnd = p_mi->getVideo( &i_x, &i_y, &i_width, &i_height );
+    if( !p_wnd->hwnd )
         return VLC_EGENERIC;
 #endif
 
index 42840b6372b73641d6192d923da2082dc6d98edd..e650ac7de3aa2e5d3a7ed01180078a355f9bc430 100644 (file)
@@ -385,9 +385,9 @@ static int WindowOpen( vlc_object_t *p_this )
 
     vlc_mutex_lock( &serializer );
 
-    pWnd->handle.hwnd = VoutManager::getWindow( pIntf, pWnd );
+    pWnd->hwnd = VoutManager::getWindow( pIntf, pWnd );
 
-    if( pWnd->handle.hwnd )
+    if( pWnd->hwnd )
     {
         pWnd->control = &VoutManager::controlWindow;
         pWnd->sys = (vout_window_sys_t*)pIntf;
index c2d7aae2046113923dfbf004b0b4618ae695f0e7..927f2762922b446eb1938e1366c22a1fcf387fd2 100644 (file)
@@ -101,7 +101,7 @@ skip:
     if (val == NULL)
         return VLC_EGENERIC;
 
-    wnd->handle.hwnd = val;
+    wnd->hwnd = val;
     wnd->control = Control;
     wnd->sys = val;
     return VLC_SUCCESS;
index 9d109e9eec6f144745be8afd4f231ccd4c38d574..647a8f669e5d7976ed52f0533df8da12e7ead363 100644 (file)
@@ -420,7 +420,7 @@ static int DirectXCreateWindow( event_thread_t *p_event )
         /* If an external window was specified, we'll draw in it. */
         p_event->parent_window = vout_display_NewWindow(vd, &p_event->wnd_cfg );
         if( p_event->parent_window )
-            p_event->hparent = p_event->parent_window->handle.hwnd;
+            p_event->hparent = p_event->parent_window->hwnd;
         else
             p_event->hparent = NULL;
     #ifdef MODULE_NAME_IS_direct3d
index 1357cffcf1de96029b82cd0d44fc53858967a8b5..7e64bf73788f770a643e7545b12f11220d0354ad 100644 (file)
@@ -449,7 +449,7 @@ static int DirectXCreateWindow( event_thread_t *p_event )
         /* If an external window was specified, we'll draw in it. */
         p_event->parent_window = vout_window_New( VLC_OBJECT(p_vout), NULL, &p_event->wnd_cfg );
         if( p_event->parent_window )
-            p_event->hparent = p_event->parent_window->handle.hwnd;
+            p_event->hparent = p_event->parent_window->hwnd;
         else
             p_event->hparent = NULL;
     #ifdef MODULE_NAME_IS_direct3d
index 20765c62641eb8a45c86b0b9cac22a9b9bdd0122..d18616b5be29a10af2bff550ae111b3dda2f492d 100644 (file)
@@ -610,7 +610,7 @@ static void CreateWindow( vout_sys_t *p_sys )
     xwindow_attributes.event_mask = ExposureMask | StructureNotifyMask
                                   | VisibilityChangeMask;
     p_sys->window = XCreateWindow( p_sys->p_display,
-                                   p_sys->owner_window->handle.xid,
+                                   p_sys->owner_window->xid,
                                    0, 0,
                                    p_sys->main_window.i_width,
                                    p_sys->main_window.i_height,
@@ -620,7 +620,7 @@ static void CreateWindow( vout_sys_t *p_sys )
                                    &xwindow_attributes );
 
     XMapWindow( p_sys->p_display, p_sys->window );
-    XSelectInput( p_sys->p_display, p_sys->owner_window->handle.xid,
+    XSelectInput( p_sys->p_display, p_sys->owner_window->xid,
                   StructureNotifyMask );
 }
 
index 0dd87b4682406c126fa37fb407dc6eaff2c56d7f..239e76bf406ded217cd71922251e5ea5aa63a62d 100644 (file)
@@ -242,7 +242,7 @@ static int ManageVideo( vout_thread_t *p_vout )
 
     /* Handle events from the owner window */
     while( XCheckWindowEvent( p_vout->p_sys->p_display,
-                              p_vout->p_sys->window.owner_window->handle.xid,
+                              p_vout->p_sys->window.owner_window->xid,
                               StructureNotifyMask, &xevent ) == True )
     {
         /* ConfigureNotify event: prepare  */
@@ -602,11 +602,11 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
 
         /* Select events we are interested in. */
         XSelectInput( p_vout->p_sys->p_display,
-                      p_win->owner_window->handle.xid, StructureNotifyMask );
+                      p_win->owner_window->xid, StructureNotifyMask );
 
         /* Get the parent window's geometry information */
         XGetGeometry( p_vout->p_sys->p_display,
-                      p_win->owner_window->handle.xid,
+                      p_win->owner_window->xid,
                       &(Window){ 0 }, &(int){ 0 }, &(int){ 0 },
                       &p_win->i_width,
                       &p_win->i_height,
@@ -616,7 +616,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.xid,
+                           p_win->owner_window->xid,
                            0, 0,
                            p_win->i_width, p_win->i_height,
                            0,
index 0f99fdb1571440f7a5c82961aefa3ccf4b308994..cf3d05500bc73ace88ba837cb7a4c3588cf61930 100644 (file)
@@ -116,7 +116,7 @@ vout_window_t *GetWindow (vout_display_t *vd,
         xcb_get_geometry_reply_t *geo;
         xcb_get_geometry_cookie_t ck;
 
-        ck = xcb_get_geometry (conn, wnd->handle.xid);
+        ck = xcb_get_geometry (conn, wnd->xid);
         geo = xcb_get_geometry_reply (conn, ck, NULL);
         if (geo == NULL)
         {
@@ -130,7 +130,7 @@ vout_window_t *GetWindow (vout_display_t *vd,
         /* Subscribe to parent window resize events */
         uint32_t value = XCB_EVENT_MASK_POINTER_MOTION
                        | XCB_EVENT_MASK_STRUCTURE_NOTIFY;
-        xcb_change_window_attributes (conn, wnd->handle.xid,
+        xcb_change_window_attributes (conn, wnd->xid,
                                       XCB_CW_EVENT_MASK, &value);
         /* Try to subscribe to click events */
         /* (only one X11 client can get them, so might not work) */
@@ -138,7 +138,7 @@ vout_window_t *GetWindow (vout_display_t *vd,
         {
             value |= XCB_EVENT_MASK_BUTTON_PRESS
                    | XCB_EVENT_MASK_BUTTON_RELEASE;
-            xcb_change_window_attributes (conn, wnd->handle.xid,
+            xcb_change_window_attributes (conn, wnd->xid,
                                           XCB_CW_EVENT_MASK, &value);
         }
     }
@@ -193,7 +193,7 @@ error:
 int GetWindowSize (struct vout_window_t *wnd, xcb_connection_t *conn,
                    unsigned *restrict width, unsigned *restrict height)
 {
-    xcb_get_geometry_cookie_t ck = xcb_get_geometry (conn, wnd->handle.xid);
+    xcb_get_geometry_cookie_t ck = xcb_get_geometry (conn, wnd->xid);
     xcb_get_geometry_reply_t *geo = xcb_get_geometry_reply (conn, ck, NULL);
 
     if (!geo)
index d28353f9b3539bbc9c02b82db19ca58b4d013b8e..f22db1d353f81f65db403c8147fa1be1107dfc49 100644 (file)
@@ -261,7 +261,7 @@ static int Open (vlc_object_t *obj)
         goto error;
     }
 
-    wnd->handle.xid = window;
+    wnd->xid = window;
     wnd->control = Control;
     wnd->sys = p_sys;
 
@@ -335,7 +335,7 @@ static int Open (vlc_object_t *obj)
 #ifdef MATCHBOX_HACK
     if (p_sys->mb_current_app_window)
         xcb_set_input_focus (p_sys->conn, XCB_INPUT_FOCUS_POINTER_ROOT,
-                             wnd->handle.xid, XCB_CURRENT_TIME);
+                             wnd->xid, XCB_CURRENT_TIME);
 #endif
     xcb_flush (conn); /* Make sure map_window is sent (should be useless) */
     return VLC_SUCCESS;
@@ -404,13 +404,13 @@ static void *Thread (void *data)
                             xcb_get_property (conn, 0, pne->window, pne->atom,
                                               XA_WINDOW, 0, 4), NULL);
                     if (r != NULL
-                     && !memcmp (xcb_get_property_value (r), &wnd->handle.xid,
+                     && !memcmp (xcb_get_property_value (r), &wnd->xid,
                                  4))
                     {
                         msg_Dbg (wnd, "asking Matchbox for input focus");
                         xcb_set_input_focus (conn,
                                              XCB_INPUT_FOCUS_POINTER_ROOT,
-                                             wnd->handle.xid, pne->time);
+                                             wnd->xid, pne->time);
                         xcb_flush (conn);
                     }
                     free (r);
@@ -440,7 +440,7 @@ static void set_wm_state (vout_window_t *wnd, bool on, xcb_atom_t state)
     xcb_client_message_event_t ev = {
          .response_type = XCB_CLIENT_MESSAGE,
          .format = 32,
-         .window = wnd->handle.xid,
+         .window = wnd->xid,
          .type = sys->wm_state,
     };
 
@@ -470,7 +470,7 @@ static int Control (vout_window_t *wnd, int cmd, va_list ap)
             unsigned height = va_arg (ap, unsigned);
             const uint32_t values[] = { width, height, };
 
-            xcb_configure_window (conn, wnd->handle.xid,
+            xcb_configure_window (conn, wnd->xid,
                                   XCB_CONFIG_WINDOW_WIDTH |
                                   XCB_CONFIG_WINDOW_HEIGHT, values);
             break;
@@ -585,7 +585,7 @@ static int EmOpen (vlc_object_t *obj)
     if (p_sys == NULL || xcb_connection_has_error (conn))
         goto error;
 
-    wnd->handle.xid = window;
+    wnd->xid = window;
     wnd->control = Control;
     wnd->sys = p_sys;
 
@@ -633,7 +633,7 @@ error:
 static void EmClose (vlc_object_t *obj)
 {
     vout_window_t *wnd = (vout_window_t *)obj;
-    xcb_window_t window = wnd->handle.xid;
+    xcb_window_t window = wnd->xid;
 
     Close (obj);
     ReleaseDrawable (obj, window);
index 997c62be1b39defddc6aebe9413e1aaed8bf6bfb..5d330eb806a2f0dea0a120c0b8af55c9f7628ddd 100644 (file)
@@ -271,7 +271,7 @@ static int Open (vlc_object_t *obj)
 
         c = xcb_create_window_checked (p_sys->conn, p_sys->depth,
                                        p_sys->window,
-                                       p_sys->embed->handle.xid, 0, 0,
+                                       p_sys->embed->xid, 0, 0,
                                        width, height, 0,
                                        XCB_WINDOW_CLASS_INPUT_OUTPUT,
                                        vid, mask, values);
@@ -519,7 +519,7 @@ static int Control (vout_display_t *vd, int query, va_list ap)
     /* Hide the mouse. It will be send when
      * vout_display_t::info.b_hide_mouse is false */
     case VOUT_DISPLAY_HIDE_MOUSE:
-        xcb_change_window_attributes (p_sys->conn, p_sys->embed->handle.xid,
+        xcb_change_window_attributes (p_sys->conn, p_sys->embed->xid,
                                   XCB_CW_CURSOR, &(uint32_t){ p_sys->cursor });
         return VLC_SUCCESS;
 
index 775e8b4a5ed47059c54ca0d5b75987d65c3f8459..0328e1e8be11b8000e1a578059051e6fa78be587 100644 (file)
@@ -340,7 +340,7 @@ static int Open (vlc_object_t *obj)
     /* Cache adaptors infos */
     xcb_xv_query_adaptors_reply_t *adaptors =
         xcb_xv_query_adaptors_reply (conn,
-            xcb_xv_query_adaptors (conn, p_sys->embed->handle.xid), NULL);
+            xcb_xv_query_adaptors (conn, p_sys->embed->xid), NULL);
     if (adaptors == NULL)
         goto error;
 
@@ -464,7 +464,7 @@ static int Open (vlc_object_t *obj)
             xcb_void_cookie_t c;
 
             c = xcb_create_window_checked (conn, f->depth, p_sys->window,
-                 p_sys->embed->handle.xid, 0, 0, 1, 1, 0,
+                 p_sys->embed->xid, 0, 0, 1, 1, 0,
                  XCB_WINDOW_CLASS_INPUT_OUTPUT, f->visual,
                  XCB_CW_EVENT_MASK, &mask);
 
@@ -762,7 +762,7 @@ static int Control (vout_display_t *vd, int query, va_list ap)
     /* Hide the mouse. It will be send when
      * vout_display_t::info.b_hide_mouse is false */
     case VOUT_DISPLAY_HIDE_MOUSE:
-        xcb_change_window_attributes (p_sys->conn, p_sys->embed->handle.xid,
+        xcb_change_window_attributes (p_sys->conn, p_sys->embed->xid,
                                   XCB_CW_CURSOR, &(uint32_t){ p_sys->cursor });
         return VLC_SUCCESS;
     case VOUT_DISPLAY_RESET_PICTURES:
index 87e9a13c745c7c3a4da95164c83e65aff7da2358..4a2498c1032476a10ec80ee9618242b777dc067d 100644 (file)
@@ -50,7 +50,6 @@ vout_window_t *vout_window_New(vlc_object_t *obj,
     vout_window_t *window = &w->wnd;
 
     window->cfg = cfg;
-    memset(&window->handle, 0, sizeof(window->handle));
     window->control = NULL;
     window->sys = NULL;
 
@@ -60,9 +59,11 @@ vout_window_t *vout_window_New(vlc_object_t *obj,
     switch (cfg->type) {
     case VOUT_WINDOW_TYPE_HWND:
         type = "vout window hwnd";
+        window->hwnd = NULL;
         break;
     case VOUT_WINDOW_TYPE_XID:
         type = "vout window xid";
+        window->xid = 0;
         break;
     default:
         assert(0);
@@ -78,7 +79,7 @@ vout_window_t *vout_window_New(vlc_object_t *obj,
     /* Hook for screensaver inhibition */
     if (cfg->type == VOUT_WINDOW_TYPE_XID) {
         w->inhibit = vlc_inhibit_Create (VLC_OBJECT (window),
-                                         window->handle.xid);
+                                         window->xid);
         if (w->inhibit != NULL)
             vlc_inhibit_Set (w->inhibit, true);
             /* FIXME: ^ wait for vout activation, pause */