[ros-dev] [ros-diffs] [jimtabor] 46349: - Hack fix for gdibatch, please retest Acrobat reader 7.
Aleksey Bragin
aleksey at reactos.org
Tue Mar 23 09:37:56 CET 2010
Forget what I said about acpi hack being nasty the other day. After looking
at this one....
Aleksey.
--------------------------------------------------
From: <jimtabor at svn.reactos.org>
Sent: Tuesday, March 23, 2010 4:34 AM
To: <ros-diffs at 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/objects/gdibatch.c?rev=46349&r1=46348&r2=46349&view=diff
> ==============================================================================
> --- 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);
> }
>
>
More information about the Ros-dev
mailing list