Set the ownership before locking the bitmap in EngCreateDeviceSurface, because GDIOBJ_SetOwnership runs in a dead lock if the object is already locked by the same process. This may fix bug 747. Modified: trunk/reactos/subsys/win32k/eng/surface.c _____
Modified: trunk/reactos/subsys/win32k/eng/surface.c --- trunk/reactos/subsys/win32k/eng/surface.c 2005-09-03 11:51:22 UTC (rev 17620) +++ trunk/reactos/subsys/win32k/eng/surface.c 2005-09-03 17:40:33 UTC (rev 17621) @@ -394,6 +394,8 @@
if (NewSurface == NULL) return 0;
+ GDIOBJ_SetOwnership(NewSurface, NULL); + BitmapObj = BITMAPOBJ_LockBitmap(NewSurface); if (! BITMAPOBJ_InitBitsLock(BitmapObj)) { @@ -403,8 +405,6 @@ } SurfObj = &BitmapObj->SurfObj;
- GDIOBJ_SetOwnership(NewSurface, NULL); - SurfObj->dhsurf = dhsurf; SurfObj->hsurf = NewSurface; SurfObj->sizlBitmap = Size;