Author: fireball
Date: Sun Mar 2 04:26:59 2008
New Revision: 32540
URL: http://svn.reactos.org/svn/reactos?rev=3D32540&view=3Drev
Log:
- The bootloader must zero user shared data page before passing control to =
the kernel. This fixes the "invalid timer state", "assert(SharedUserData->N=
umberOfPages =3D=3D 0" family of bugs after warm reboot.
See issue #3085 for more details.
Modified:
trunk/reactos/boot/freeldr/freeldr/arch/i386/loader.c
Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/loader.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/=
arch/i386/loader.c?rev=3D32540&r1=3D32539&r2=3D32540&view=3Ddiff
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/reactos/boot/freeldr/freeldr/arch/i386/loader.c (original)
+++ trunk/reactos/boot/freeldr/freeldr/arch/i386/loader.c Sun Mar 2 04:26:=
59 2008
@@ -202,5 +202,8 @@
PageDir->Pde[0x1FF].Valid =3D 1;
PageDir->Pde[0x1FF].Write =3D 1;
PageDir->Pde[0x1FF].PageFrameNumber =3D 1;
+
+ /* Zero shared data */
+ RtlZeroMemory((PVOID)(2 << MM_PAGE_SHIFT), PAGE_SIZE);
}
=
Author: greatlrd
Date: Sun Mar 2 11:50:11 2008
New Revision: 32544
URL: http://svn.reactos.org/svn/reactos?rev=3D32544&view=3Drev
Log:
small change in DdCreateSurface. now we pass down all usermode surface dat=
a to win32k.
left todo is translate back all surface data. =
Modified:
trunk/reactos/dll/win32/gdi32/misc/gdientry.c
Modified: trunk/reactos/dll/win32/gdi32/misc/gdientry.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/misc/=
gdientry.c?rev=3D32544&r1=3D32543&r2=3D32544&view=3Ddiff
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/reactos/dll/win32/gdi32/misc/gdientry.c (original)
+++ trunk/reactos/dll/win32/gdi32/misc/gdientry.c Sun Mar 2 11:50:11 2008
@@ -409,13 +409,10 @@
ptmpDdSurfaceMore->dwSurfaceHandle =3D (DWORD) pCreateSurf=
ace->lplpSList[i]->dbnOverlayNode.object_int;
}
=
- /* FIXME count to next SurfaceCount for
- ptmpDdSurfaceGlobal =3D pDdSurfaceGlobal;
- ptmpDdSurfaceLocal =3D pDdSurfaceLocal;
- ptmpDdSurfaceMore =3D pDdSurfaceMore;
-
- we only support one surface create at moment
- */
+ /* count to next SurfaceCount */
+ ptmpDdSurfaceGlobal =3D (PDD_SURFACE_GLOBAL) (((PBYTE) ((ULONG=
_PTR) ptmpDdSurfaceGlobal)) + sizeof(DD_SURFACE_GLOBAL));
+ ptmpDdSurfaceLocal =3D (PDD_SURFACE_LOCAL) (((PBYTE) ((ULONG_P=
TR) ptmpDdSurfaceLocal)) + sizeof(DD_SURFACE_LOCAL));
+ ptmpDdSurfaceMore =3D (PDD_SURFACE_MORE) (((PBYTE) ((ULONG_PTR=
) ptmpDdSurfaceMore)) + sizeof(DD_SURFACE_MORE));
}
}
=