Author: tkreuzer
Date: Mon Nov 16 20:35:36 2009
New Revision: 44204
URL: http://svn.reactos.org/svn/reactos?rev=44204&view=rev
Log:
On amd64 the NextEntry member of MMPTE_LIST has 32 bits, but 36 would be required to cover the whole pte space. Therefore use MmSystemPtesStart[SystemPtePoolType] as base for the pfn linked list instead of MmSystemPteBase, which is set to PTE_BASE.
Modified:
branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/syspte.c
Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/syspte.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/syspte.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/mm/ARM3/syspte.c [iso-8859-1] Mon Nov 16 20:35:36 2009
@@ -64,7 +64,8 @@
// Now move to the first free system PTE cluster
//
PreviousPte = PointerPte;
- PointerPte = MmSystemPteBase + PointerPte->u.List.NextEntry;
+ PointerPte = MmSystemPtesStart[SystemPtePoolType] +
+ PointerPte->u.List.NextEntry;
//
// Loop each cluster
@@ -152,7 +153,8 @@
// Go to the next cluster
//
PreviousPte = PointerPte;
- PointerPte = MmSystemPteBase + PointerPte->u.List.NextEntry;
+ PointerPte = MmSystemPtesStart[SystemPtePoolType] +
+ PointerPte->u.List.NextEntry;
ASSERT(PointerPte > PreviousPte);
}
@@ -214,7 +216,7 @@
// Zero PTEs
//
RtlZeroMemory(StartingPte, NumberOfPtes * sizeof(MMPTE));
- CurrentSize = (ULONG_PTR)(StartingPte - MmSystemPteBase);
+ CurrentSize = (ULONG_PTR)(StartingPte - MmSystemPtesStart[SystemPtePoolType]);
//
// Acquire the system PTE lock
@@ -235,7 +237,8 @@
//
// Get the first real cluster of PTEs and check if it's ours
//
- PointerPte = MmSystemPteBase + CurrentPte->u.List.NextEntry;
+ PointerPte = MmSystemPtesStart[SystemPtePoolType] +
+ CurrentPte->u.List.NextEntry;
if (CurrentSize < CurrentPte->u.List.NextEntry)
{
//
@@ -395,7 +398,7 @@
StartingPte->u.List.NextEntry = ((ULONG)0xFFFFF);
MmFirstFreeSystemPte[PoolType].u.Long = 0;
MmFirstFreeSystemPte[PoolType].u.List.NextEntry = StartingPte -
- MmSystemPteBase;
+ MmSystemPtesStart[PoolType];
//
// The second entry stores the size of this PTE space
Author: khornicek
Date: Mon Nov 16 14:22:56 2009
New Revision: 44200
URL: http://svn.reactos.org/svn/reactos?rev=44200&view=rev
Log:
- release the old bitmap when selecting a new one
Modified:
branches/arwinss/reactos/subsystems/win32/win32k/gdi/dc.c
Modified: branches/arwinss/reactos/subsystems/win32/win32k/gdi/dc.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win3…
==============================================================================
--- branches/arwinss/reactos/subsystems/win32/win32k/gdi/dc.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/subsystems/win32/win32k/gdi/dc.c [iso-8859-1] Mon Nov 16 14:22:56 2009
@@ -221,6 +221,9 @@
/* Get a pointer to the DC and the bitmap*/
pDC = DC_Lock(physDev);
pSurface = SURFACE_ShareLock(hBmpKern);
+
+ /* Release the old bitmap */
+ SURFACE_ShareUnlock(pDC->pBitmap);
/* Select it */
pDC->pBitmap = pSurface;