SetWindowPos( p_vout->p_sys->hwnd, 0, 0, 0,
rect_parent.right - rect_parent.left,
- rect_parent.bottom - rect_parent.top, 0 );
+ rect_parent.bottom - rect_parent.top,
+ SWP_NOZORDER );
}
}
else
LPDIRECT3DDEVICE9 p_d3ddev = p_vout->p_sys->p_d3ddev;
// Present the back buffer contents to the display
// stretching and filtering happens here
- HRESULT hr = IDirect3DDevice9_Present(p_d3ddev, NULL, NULL, NULL, NULL);
+ HRESULT hr = IDirect3DDevice9_Present(p_d3ddev,
+ &(p_vout->p_sys->rect_src_clipped),
+ NULL, NULL, NULL);
if( FAILED(hr) )
msg_Dbg( p_vout, "%s:%d (hr=0x%0lX)", __FUNCTION__, __LINE__, hr);
}
** Video window is initially hidden, show it now since we got a
** picture to show.
*/
- SetWindowPos( p_vout->p_sys->hvideownd, NULL, 0, 0, 0, 0,
+ SetWindowPos( p_vout->p_sys->hvideownd, 0, 0, 0, 0, 0,
SWP_ASYNCWINDOWPOS|
SWP_FRAMECHANGED|
SWP_SHOWWINDOW|
d3dpp->hDeviceWindow = p_vout->p_sys->hvideownd;
d3dpp->BackBufferWidth = p_vout->output.i_width;
d3dpp->BackBufferHeight = p_vout->output.i_height;
- d3dpp->SwapEffect = D3DSWAPEFFECT_DISCARD;
+ d3dpp->SwapEffect = D3DSWAPEFFECT_COPY;
d3dpp->MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp->PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
d3dpp->BackBufferFormat = d3ddm.Format;
return D3DFMT_UNKNOWN;
}
-D3DFORMAT Direct3DVoutFindFormat(vout_thread_t *p_vout, int i_chroma, D3DFORMAT target)
+static D3DFORMAT Direct3DVoutFindFormat(vout_thread_t *p_vout, int i_chroma, D3DFORMAT target)
{
if( p_vout->p_sys->b_hw_yuv && ! _got_vista_or_above )
{
&i_x, &i_y, &i_width, &i_height );
if( p_vout->p_sys->hvideownd )
- SetWindowPos( p_vout->p_sys->hvideownd, HWND_TOP,
- i_x, i_y, i_width, i_height, 0 );
+ SetWindowPos( p_vout->p_sys->hvideownd, 0,
+ i_x, i_y, i_width, i_height,
+ SWP_NOCOPYBITS|SWP_NOZORDER|SWP_ASYNCWINDOWPOS );
/* Destination image position and dimensions */
rect_dest.left = point.x + i_x;
p_vout->p_sys->i_align_dest_size / 2 ) &
~p_vout->p_sys->i_align_dest_size) + rect_dest.left;
}
-#endif
/* UpdateOverlay directdraw function doesn't automatically clip to the
* display size so we need to do it otherwise it will fail */
SetRectEmpty( &rect_src_clipped );
return;
}
+#else /* MODULE_NAME_IS_vout_directx */
+
+ /* AFAIK, there are no clipping constraints in Direct3D or OpenGL */
+ rect_dest_clipped = rect_dest;
+
+#endif
/* src image dimensions */
rect_src.left = 0;
rect_src_clipped.right, rect_src_clipped.bottom );
#endif
+#ifdef MODULE_NAME_IS_vout_directx
/* The destination coordinates need to be relative to the current
* directdraw primary surface (display) */
rect_dest_clipped.left -= p_vout->p_sys->rect_display.left;
rect_dest_clipped.top -= p_vout->p_sys->rect_display.top;
rect_dest_clipped.bottom -= p_vout->p_sys->rect_display.top;
-#ifdef MODULE_NAME_IS_vout_directx
if( p_vout->p_sys->b_using_overlay )
E_(DirectXUpdateOverlay)( p_vout );
#endif
{
#ifdef MODULE_NAME_IS_vout_directx
case WM_ERASEBKGND:
- /* For overlay, we need to erase background */
+ /* For overlay, we need to erase background */
return !p_vout->p_sys->b_using_overlay ?
1 : DefWindowProc(hwnd, message, wParam, lParam);
case WM_PAINT: