gdi32: Creating hVisRgn and hClipRgn fields of DC structure for any physDevs (eterbug...
authorIlya Shpigor <shpigor@etersoft.ru>
Mon, 31 Aug 2009 08:54:05 +0000 (12:54 +0400)
committerVitaly Lipatov <lav@etersoft.ru>
Wed, 23 Sep 2009 17:37:33 +0000 (21:37 +0400)
dlls/gdi32/clipping.c

index 8e80207f0e9b8ca6fe623133fe5c7e0aad81e8e2..e3bb6a0e169a7fad4490f38ae8e81c5d2ae4a08a 100644 (file)
@@ -126,8 +126,21 @@ INT WINAPI ExtSelectClipRgn( HDC hdc, HRGN hrgn, INT fnMode )
     if (dc->funcs->pExtSelectClipRgn)
     {
         retval = dc->funcs->pExtSelectClipRgn( dc->physDev, hrgn, fnMode );
-        release_dc_ptr( dc );
-        return retval;
+        if (!dc->hVisRgn)
+        {
+            if ((fnMode == RGN_COPY) && !hrgn)
+                dc->hVisRgn = CreateRectRgn( 0, 0, 0, 0 );
+            else if (hrgn)
+            {
+                GetRgnBox( hrgn, &rect );
+                dc->hVisRgn = CreateRectRgn( rect.left, rect.top, rect.right, rect.bottom );
+            }
+            else
+            {
+                release_dc_ptr( dc );
+                return retval;
+            }
+        }
     }
 
     if (!hrgn)