Mercurial > mplayer.hg
changeset 35060:c5c8d88d612e
directx: Support negative panscanrange (i.e. zooming) for noaccel.
All that is necessary is to skip the code clipping
the destination rectangle.
author | reimar |
---|---|
date | Fri, 07 Sep 2012 19:27:44 +0000 |
parents | 568f0925d9a9 |
children | b27fc7004bf2 |
files | libvo/vo_directx.c |
diffstat | 1 files changed, 8 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vo_directx.c Fri Sep 07 19:16:10 2012 +0000 +++ b/libvo/vo_directx.c Fri Sep 07 19:27:44 2012 +0000 @@ -476,8 +476,14 @@ rd.right = rd.left + width; rd.bottom = rd.top + height; + if(nooverlay) { + g_lpddclipper->lpVtbl->SetHWnd(g_lpddclipper, 0, vo_w32_window); + // For nooverlay we are done, the blitter can handle + // a destination RECT larger than the window. + return 0; + } /*ok, let's workaround some overlay limitations*/ - if (!nooverlay) { + { uint32_t uStretchFactor1000; //minimum stretch uint32_t xstretch1000, ystretch1000; @@ -564,8 +570,6 @@ dwUpdateFlags |= DDOVER_KEYDESTOVERRIDE; else if (!tmp_image) vo_ontop = 1; - } else { - g_lpddclipper->lpVtbl->SetHWnd(g_lpddclipper, 0, vo_w32_window); } /*make sure the overlay is inside the screen*/ @@ -574,10 +578,7 @@ rd.bottom = FFMIN(rd.bottom, vo_screenheight); rd.right = FFMIN(rd.right, vo_screenwidth); - /*for nonoverlay mode we are finished, for overlay mode we have to display the overlay first*/ - if (nooverlay) - return 0; - + /* Now reconfigure/show the overlay */ // printf("overlay: %i %i %ix%i\n",rd.left,rd.top,rd.right - rd.left,rd.bottom - rd.top); ddrval = g_lpddsOverlay->lpVtbl->UpdateOverlay(g_lpddsOverlay, &rs, g_lpddsPrimary, &rd, dwUpdateFlags, &ovfx); if (FAILED(ddrval)) {