# HG changeset patch # User reimar # Date 1347046064 0 # Node ID c5c8d88d612ea0be833f00c472b753a8381331cf # Parent 568f0925d9a9188f005643f8068f904c588bacfd directx: Support negative panscanrange (i.e. zooming) for noaccel. All that is necessary is to skip the code clipping the destination rectangle. diff -r 568f0925d9a9 -r c5c8d88d612e libvo/vo_directx.c --- 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)) {