From: Marian Durkovic Date: Mon, 31 Oct 2005 07:35:39 +0000 (+0000) Subject: backport [13049] and [13059] X-Git-Tag: 0.8.4~92 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=1f59b54ab15581b5a84484b62daf3c8978136b43;hp=b7e5d7c50f89f9c354627729901bd3b0630f6f47;p=vlc backport [13049] and [13059] --- diff --git a/include/video_output.h b/include/video_output.h index de9120918b..4badb1fe9e 100644 --- a/include/video_output.h +++ b/include/video_output.h @@ -254,7 +254,7 @@ static inline int vout_Control( vout_thread_t *p_vout, int i_query, ... ) enum output_query_e { - VOUT_SET_ZOOM, /* arg1= double res= */ + VOUT_SET_ZOOM, VOUT_SET_STAY_ON_TOP, /* arg1= vlc_bool_t res= */ VOUT_REPARENT, VOUT_SNAPSHOT, diff --git a/modules/gui/skins2/src/vlcproc.cpp b/modules/gui/skins2/src/vlcproc.cpp index e3b0fce601..d73f0f6eeb 100644 --- a/modules/gui/skins2/src/vlcproc.cpp +++ b/modules/gui/skins2/src/vlcproc.cpp @@ -484,18 +484,13 @@ int VlcProc::controlWindow( intf_thread_t *pIntf, void *pWindow, { case VOUT_SET_ZOOM: { - double fArg = va_arg( args, double ); - if( pThis->m_pVout ) { - // Compute requested vout dimensions - int width = (int)( pThis->m_pVout->i_window_width * fArg ); - int height = (int)( pThis->m_pVout->i_window_height * fArg ); - // Post a resize vout command CmdResizeVout *pCmd = new CmdResizeVout( pThis->getIntf(), pWindow, - width, height ); + pThis->m_pVout->i_window_width, + pThis->m_pVout->i_window_height ); AsyncQueue *pQueue = AsyncQueue::instance( pThis->getIntf() ); pQueue->remove( "resize vout" ); pQueue->push( CmdGenericPtr( pCmd ) ); diff --git a/modules/gui/wxwidgets/video.cpp b/modules/gui/wxwidgets/video.cpp index b31e8f80c3..d2e4f1c3a4 100644 --- a/modules/gui/wxwidgets/video.cpp +++ b/modules/gui/wxwidgets/video.cpp @@ -364,11 +364,9 @@ int VideoWindow::ControlWindow( void *p_window, int i_query, va_list args ) { if( !b_auto_size ) break; - double f_arg = va_arg( args, double ); - /* Update dimensions */ - wxSizeEvent event( wxSize((int)(p_vout->i_window_width * f_arg), - (int)(p_vout->i_window_height * f_arg)), + wxSizeEvent event( wxSize( p_vout->i_window_width, + p_vout->i_window_height ), UpdateSize_Event ); diff --git a/modules/video_output/directx/directx.c b/modules/video_output/directx/directx.c index 5c345c579d..546a22bfbe 100644 --- a/modules/video_output/directx/directx.c +++ b/modules/video_output/directx/directx.c @@ -555,6 +555,7 @@ static int Manage( vout_thread_t *p_vout ) p_vout->fmt_out.i_sar_den = p_vout->fmt_in.i_sar_den; p_vout->output.i_aspect = p_vout->fmt_in.i_aspect; E_(DirectXUpdateRects)( p_vout, VLC_TRUE ); + vout_Control( p_vout, VOUT_SET_ZOOM ); } /* We used to call the Win32 PeekMessage function here to read the window diff --git a/modules/video_output/directx/events.c b/modules/video_output/directx/events.c index 0790b8ed23..f7dd749071 100644 --- a/modules/video_output/directx/events.c +++ b/modules/video_output/directx/events.c @@ -900,12 +900,10 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args ) return vout_ControlWindow( p_vout, (void *)p_vout->p_sys->hparent, i_query, args ); - f_arg = va_arg( args, double ); - /* Update dimensions */ rect_window.top = rect_window.left = 0; - rect_window.right = p_vout->i_window_width * f_arg; - rect_window.bottom = p_vout->i_window_height * f_arg; + rect_window.right = p_vout->i_window_width; + rect_window.bottom = p_vout->i_window_height; AdjustWindowRect( &rect_window, p_vout->p_sys->i_window_style, 0 ); SetWindowPos( p_vout->p_sys->hwnd, 0, 0, 0, diff --git a/modules/video_output/directx/glwin32.c b/modules/video_output/directx/glwin32.c index 82b78711a0..961c06778b 100644 --- a/modules/video_output/directx/glwin32.c +++ b/modules/video_output/directx/glwin32.c @@ -318,6 +318,7 @@ static int Manage( vout_thread_t *p_vout ) p_vout->fmt_out.i_sar_den = p_vout->fmt_in.i_sar_den; p_vout->output.i_aspect = p_vout->fmt_in.i_aspect; E_(DirectXUpdateRects)( p_vout, VLC_TRUE ); + vout_Control( p_vout, VOUT_SET_ZOOM ); } /* We used to call the Win32 PeekMessage function here to read the window diff --git a/modules/video_output/wingdi.c b/modules/video_output/wingdi.c index 00fa366d98..34723464a4 100644 --- a/modules/video_output/wingdi.c +++ b/modules/video_output/wingdi.c @@ -1294,12 +1294,10 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args ) return vout_ControlWindow( p_vout, (void *)p_vout->p_sys->hparent, i_query, args ); - f_arg = va_arg( args, double ); - /* Update dimensions */ rect_window.top = rect_window.left = 0; - rect_window.right = p_vout->i_window_width * f_arg; - rect_window.bottom = p_vout->i_window_height * f_arg; + rect_window.right = p_vout->i_window_width; + rect_window.bottom = p_vout->i_window_height; AdjustWindowRect( &rect_window, p_vout->p_sys->i_window_style, 0 ); SetWindowPos( p_vout->p_sys->hwnd, 0, 0, 0, diff --git a/modules/video_output/x11/xcommon.c b/modules/video_output/x11/xcommon.c index 8533aff807..7e2352af9f 100644 --- a/modules/video_output/x11/xcommon.c +++ b/modules/video_output/x11/xcommon.c @@ -2298,16 +2298,13 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args ) return vout_ControlWindow( p_vout, (void *)p_vout->p_sys->p_win->owner_window, i_query, args); - f_arg = va_arg( args, double ); - vlc_mutex_lock( &p_vout->p_sys->lock ); /* Update dimensions */ - /* FIXME: export InitWindowSize() from vout core */ XResizeWindow( p_vout->p_sys->p_display, p_vout->p_sys->p_win->base_window, - p_vout->i_window_width * f_arg, - p_vout->i_window_height * f_arg ); + p_vout->i_window_width, + p_vout->i_window_height ); vlc_mutex_unlock( &p_vout->p_sys->lock ); return VLC_SUCCESS; diff --git a/src/video_output/vout_intf.c b/src/video_output/vout_intf.c index 09ff7b7b00..5efca5deac 100644 --- a/src/video_output/vout_intf.c +++ b/src/video_output/vout_intf.c @@ -308,8 +308,6 @@ void vout_IntfInit( vout_thread_t *p_vout ) /* Initialize the dimensions of the video window */ InitWindowSize( p_vout, &p_vout->i_window_width, &p_vout->i_window_height ); - msg_Dbg( p_vout, "window size: %dx%d", p_vout->i_window_width, - p_vout->i_window_height ); /* Add a variable to indicate if the window should be on top of others */ var_Create( p_vout, "video-on-top", VLC_VAR_BOOL | VLC_VAR_DOINHERIT ); @@ -560,7 +558,7 @@ static void InitWindowSize( vout_thread_t *p_vout, unsigned *pi_width, { *pi_width = (int)( i_width * ll_zoom / FP_FACTOR ); *pi_height = (int)( i_height * ll_zoom / FP_FACTOR ); - return; + goto initwsize_end; } else if( i_width > 0 ) { @@ -568,7 +566,7 @@ static void InitWindowSize( vout_thread_t *p_vout, unsigned *pi_width, *pi_height = (int)( p_vout->fmt_in.i_visible_height * ll_zoom * p_vout->fmt_in.i_sar_den * i_width / p_vout->fmt_in.i_sar_num / FP_FACTOR / p_vout->fmt_in.i_visible_width ); - return; + goto initwsize_end; } else if( i_height > 0 ) { @@ -576,7 +574,7 @@ static void InitWindowSize( vout_thread_t *p_vout, unsigned *pi_width, *pi_width = (int)( p_vout->fmt_in.i_visible_width * ll_zoom * p_vout->fmt_in.i_sar_num * i_height / p_vout->fmt_in.i_sar_den / FP_FACTOR / p_vout->fmt_in.i_visible_height ); - return; + goto initwsize_end; } if( p_vout->fmt_in.i_sar_num >= p_vout->fmt_in.i_sar_den ) @@ -594,6 +592,10 @@ static void InitWindowSize( vout_thread_t *p_vout, unsigned *pi_width, p_vout->fmt_in.i_sar_den / p_vout->fmt_in.i_sar_num / FP_FACTOR ); } +initwsize_end: + msg_Dbg( p_vout, "window size: %dx%d", p_vout->i_window_width, + p_vout->i_window_height ); + #undef FP_FACTOR } @@ -604,7 +606,9 @@ static int ZoomCallback( vlc_object_t *p_this, char const *psz_cmd, vlc_value_t oldval, vlc_value_t newval, void *p_data ) { vout_thread_t *p_vout = (vout_thread_t *)p_this; - vout_Control( p_vout, VOUT_SET_ZOOM, newval.f_float ); + InitWindowSize( p_vout, &p_vout->i_window_width, + &p_vout->i_window_height ); + vout_Control( p_vout, VOUT_SET_ZOOM ); return VLC_SUCCESS; }