]> git.sesse.net Git - vlc/blobdiff - modules/video_output/x11/xcommon.c
Remove useless vout_vaControlDefault
[vlc] / modules / video_output / x11 / xcommon.c
index c64ad7470d93a6d3012f08a4d4199029f3e11655..281887f28824f8c8489b78c895c6cbef14a3bdb8 100644 (file)
@@ -35,6 +35,7 @@
 #include <vlc_interface.h>
 #include <vlc_playlist.h>
 #include <vlc_vout.h>
+#include <vlc_window.h>
 #include <vlc_keys.h>
 
 #include <errno.h>                                                 /* ENOMEM */
@@ -1160,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,
+                                p_vout->p_sys->p_win->owner_window->handle.xid,
                                   StructureNotifyMask, &xevent ) == True )
         {
             /* ConfigureNotify event: prepare  */
@@ -1300,11 +1301,8 @@ static int ManageVideo( vout_thread_t *p_vout )
                         val.i_int &= ~1;
                         var_Set( p_vout, "mouse-button-down", val );
 
-                        val.b_bool = true;
-                        var_Set( p_vout, "mouse-clicked", val );
-
-                        vlc_value_t val; val.b_bool = false;
-                        var_Set( p_vout->p_libvlc, "intf-popupmenu", val );
+                        var_SetBool( p_vout, "mouse-clicked", true );
+                        var_SetBool( p_vout->p_libvlc, "intf-popupmenu", false );
                     }
                     break;
 
@@ -1322,14 +1320,11 @@ static int ManageVideo( vout_thread_t *p_vout )
 
                 case Button3:
                     {
-                        intf_thread_t *p_intf;
-
                         var_Get( p_vout, "mouse-button-down", &val );
                         val.i_int &= ~4;
                         var_Set( p_vout, "mouse-button-down", val );
 
-                        vlc_value_t val; val.b_bool = true;
-                        var_Set( p_vout->p_libvlc, "intf-popupmenu", val );
+                        var_SetBool( p_vout->p_libvlc, "intf-popupmenu", true );
                     }
                     break;
 
@@ -1351,7 +1346,6 @@ static int ManageVideo( vout_thread_t *p_vout )
         else if( xevent.type == MotionNotify )
         {
             unsigned int i_width, i_height, i_x, i_y;
-            vlc_value_t val;
 
             /* somewhat different use for vout_PlacePicture:
              * here the values are needed to give to mouse coordinates
@@ -1386,8 +1380,7 @@ static int ManageVideo( vout_thread_t *p_vout )
 
             var_Set( p_vout, "mouse-y", val );
 
-            val.b_bool = true;
-            var_Set( p_vout, "mouse-moved", val );
+            var_SetBool( p_vout, "mouse-moved", true );
 
             p_vout->p_sys->i_time_mouse_last_moved = mdate();
             if( ! p_vout->p_sys->b_mouse_pointer_visible )
@@ -1480,6 +1473,29 @@ static int ManageVideo( vout_thread_t *p_vout )
         p_vout->i_changes &= ~VOUT_FULLSCREEN_CHANGE;
     }
 
+    /* autoscale toggle */
+    if( p_vout->i_changes & VOUT_SCALE_CHANGE )
+    {
+        p_vout->i_changes &= ~VOUT_SCALE_CHANGE;
+
+        p_vout->b_autoscale = var_GetBool( p_vout, "autoscale" );
+        p_vout->i_zoom = ZOOM_FP_FACTOR;
+
+        p_vout->i_changes |= VOUT_SIZE_CHANGE;
+    }
+
+    /* scaling factor */
+    if( p_vout->i_changes & VOUT_ZOOM_CHANGE )
+    {
+        p_vout->i_changes &= ~VOUT_ZOOM_CHANGE;
+
+        p_vout->b_autoscale = false;
+        p_vout->i_zoom =
+            (int)( ZOOM_FP_FACTOR * var_GetFloat( p_vout, "scale" ) );
+
+        p_vout->i_changes |= VOUT_SIZE_CHANGE;
+    }
+
     if( p_vout->i_changes & VOUT_CROP_CHANGE ||
         p_vout->i_changes & VOUT_ASPECT_CHANGE )
     {
@@ -1621,9 +1637,8 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
 
     if( !p_vout->b_fullscreen )
     {
-        void *ptr = vout_RequestWindow( p_vout, &p_win->i_x, &p_win->i_y,
-                                        &p_win->i_width, &p_win->i_height );
-        p_win->owner_window = (uintptr_t)ptr;
+        p_win->owner_window = vout_RequestXWindow( p_vout, &p_win->i_x,
+                              &p_win->i_y, &p_win->i_width, &p_win->i_height );
         xsize_hints.base_width  = xsize_hints.width = p_win->i_width;
         xsize_hints.base_height = xsize_hints.height = p_win->i_height;
         xsize_hints.flags       = PSize | PMinSize;
@@ -1638,7 +1653,7 @@ static int CreateWindow( vout_thread_t *p_vout, x11_window_t *p_win )
     else
     {
         /* Fullscreen window size and position */
-        p_win->owner_window = 0;
+        p_win->owner_window = NULL;
         p_win->i_x = p_win->i_y = 0;
         p_win->i_width =
             DisplayWidth( p_vout->p_sys->p_display, p_vout->p_sys->i_screen );
@@ -1719,11 +1734,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,
-                      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,
+        XGetGeometry( p_vout->p_sys->p_display,
+                      p_win->owner_window->handle.xid,
                       &dummy1, &dummy2, &dummy3,
                       &p_win->i_width,
                       &p_win->i_height,
@@ -1736,7 +1752,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,
+                           p_win->owner_window->handle.xid,
                            0, 0,
                            p_win->i_width, p_win->i_height,
                            0,
@@ -1883,8 +1899,7 @@ static void DestroyWindow( vout_thread_t *p_vout, x11_window_t *p_win )
     XUnmapWindow( p_vout->p_sys->p_display, p_win->base_window );
     XDestroyWindow( p_vout->p_sys->p_display, p_win->base_window );
 
-    if( p_win->owner_window )
-        vout_ReleaseWindow( p_vout, (void *)p_win->owner_window );
+    vout_ReleaseWindow( p_win->owner_window );
 }
 
 /*****************************************************************************
@@ -2111,7 +2126,7 @@ static void ToggleFullScreen ( vout_thread_t *p_vout )
         /* Getting current window position */
         Window root_win;
         Window* child_windows;
-        int num_child_windows;
+        unsigned int num_child_windows;
         Window parent_win;
         Window child_win;
         XWindowAttributes win_attr;
@@ -2764,7 +2779,7 @@ static int InitDisplay( vout_thread_t *p_vout )
 #ifdef HAVE_SYS_SHM_H
     p_vout->p_sys->i_shm_opcode = 0;
 
-    if( config_GetInt( p_vout, MODULE_STRING "-shm" ) )
+    if( config_GetInt( p_vout, MODULE_STRING "-shm" ) > 0 )
     {
         int major, evt, err;
 
@@ -2775,7 +2790,7 @@ static int InitDisplay( vout_thread_t *p_vout )
 
         if( p_vout->p_sys->i_shm_opcode )
         {
-            int major, minor;
+            int minor;
             Bool pixmaps;
 
             XShmQueryVersion( p_vout->p_sys->p_display, &major, &minor,
@@ -3131,8 +3146,8 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args )
     {
         case VOUT_GET_SIZE:
             if( p_vout->p_sys->p_win->owner_window )
-                return vout_ControlWindow( p_vout,
-                    (void *)p_vout->p_sys->p_win->owner_window, i_query, args);
+                return vout_ControlWindow( p_vout->p_sys->p_win->owner_window,
+                                           i_query, args);
 
             pi_width  = va_arg( args, unsigned int * );
             pi_height = va_arg( args, unsigned int * );
@@ -3145,8 +3160,8 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args )
 
         case VOUT_SET_SIZE:
             if( p_vout->p_sys->p_win->owner_window )
-                return vout_ControlWindow( p_vout,
-                    (void *)p_vout->p_sys->p_win->owner_window, i_query, args);
+                return vout_ControlWindow( p_vout->p_sys->p_win->owner_window,
+                                           i_query, args);
 
             vlc_mutex_lock( &p_vout->p_sys->lock );
 
@@ -3168,13 +3183,6 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args )
             vlc_mutex_unlock( &p_vout->p_sys->lock );
             return VLC_SUCCESS;
 
-       case VOUT_CLOSE:
-            vlc_mutex_lock( &p_vout->p_sys->lock );
-            XUnmapWindow( p_vout->p_sys->p_display,
-                          p_vout->p_sys->original_window.base_window );
-            vlc_mutex_unlock( &p_vout->p_sys->lock );
-            /* Fall through */
-
        case VOUT_REPARENT:
             vlc_mutex_lock( &p_vout->p_sys->lock );
             if( i_query == VOUT_REPARENT ) d = (Drawable)va_arg( args, int );
@@ -3193,17 +3201,18 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args )
                              p_vout->p_sys->original_window.base_window,
                              d, 0, 0);
             XSync( p_vout->p_sys->p_display, False );
-            p_vout->p_sys->original_window.owner_window = 0;
 #ifdef MODULE_NAME_IS_xvmc
             xvmc_context_reader_unlock( &p_vout->p_sys->xvmc_lock );
 #endif
             vlc_mutex_unlock( &p_vout->p_sys->lock );
-            return vout_vaControlDefault( p_vout, i_query, args );
+            vout_ReleaseWindow( p_vout->p_sys->p_win->owner_window );
+            p_vout->p_sys->original_window.owner_window = NULL;
+            return VLC_SUCCESS;
 
         case VOUT_SET_STAY_ON_TOP:
             if( p_vout->p_sys->p_win->owner_window )
-                return vout_ControlWindow( p_vout,
-                    (void *)p_vout->p_sys->p_win->owner_window, i_query, args);
+                return vout_ControlWindow( p_vout->p_sys->p_win->owner_window,
+                                           i_query, args);
 
             b_arg = (bool) va_arg( args, int );
             vlc_mutex_lock( &p_vout->p_sys->lock );
@@ -3218,7 +3227,7 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args )
             return VLC_SUCCESS;
 
        default:
-            return vout_vaControlDefault( p_vout, i_query, args );
+            return VLC_EGENERIC;
     }
 }