[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