Forget what I said about acpi hack being nasty the other day. After looking
at this one....
Aleksey.
--------------------------------------------------
From: <jimtabor(a)svn.reactos.org>
Sent: Tuesday, March 23, 2010 4:34 AM
To: <ros-diffs(a)reactos.org>
Subject: [ros-diffs] [jimtabor] 46349: - Hack fix for gdibatch,please retest
Acrobat reader 7.
Author: jimtabor
Date: Tue Mar 23 02:34:30 2010
New Revision: 46349
URL:
http://svn.reactos.org/svn/reactos?rev=46349&view=rev
Log:
- Hack fix for gdibatch, please retest Acrobat reader 7.
Modified:
trunk/reactos/subsystems/win32/win32k/objects/gdibatch.c
Modified: trunk/reactos/subsystems/win32/win32k/objects/gdibatch.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/gdibatch.c [iso-8859-1]
(original)
+++ trunk/reactos/subsystems/win32/win32k/objects/gdibatch.c [iso-8859-1]
Tue Mar 23 02:34:30 2010
@@ -72,7 +72,7 @@
{
pdcattr = dc->pdcattr;
}
- // The thread is approaching the end of sunset.
+ // FYI! The thread is approaching the end of sunset.
switch(pHdr->Cmd)
{
case GdiBCPatBlt: // Highest pri first!
@@ -139,6 +139,7 @@
APIENTRY
NtGdiFlushUserBatch(VOID)
{
+ BOOL Hit;
PTEB pTeb = NtCurrentTeb();
ULONG GdiBatchCount = pTeb->GdiBatchCount;
@@ -160,8 +161,26 @@
}
// No need to init anything, just go!
- for (; GdiBatchCount > 0; GdiBatchCount--)
- {
+ for (Hit = FALSE; GdiBatchCount > 0; GdiBatchCount--)
+ { /*
+ Looks like a hack,
+ feels like a hack,
+ you're right it's a hack,
+ due to the lack,
+ of kernel thread locking when it is in sunset!
+ */
+ _SEH2_TRY
+ {
+ ((PGDIBATCHHDR)pHdr)->Cmd = ((PGDIBATCHHDR)pHdr)->Cmd;
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Hit = TRUE;
+ }
+ _SEH2_END;
+
+ if (Hit) break;
+
// Process Gdi Batch!
pHdr += GdiFlushUserBatch(pDC, (PGDIBATCHHDR) pHdr);
}