diff --git a/reactos/dll/win32/gdi32/include/gdi32p.h b/reactos/dll/win32/gdi32/include/gdi32p.h index a7ea6bd6b4c..ca815aa60df 100644 --- a/reactos/dll/win32/gdi32/include/gdi32p.h +++ b/reactos/dll/win32/gdi32/include/gdi32p.h @@ -6,11 +6,14 @@ * PROGRAMMER: Alex Ionescu (alex@relsoft.net) */ +#define GDI_BATCH_LIMIT 20 + /* DATA **********************************************************************/ extern PGDI_TABLE_ENTRY GdiHandleTable; extern HANDLE hProcessHeap; extern HANDLE CurrentProcessId; +extern DWORD GDI_BatchLimit; typedef INT (CALLBACK* EMFPLAYPROC)( diff --git a/reactos/dll/win32/gdi32/misc/misc.c b/reactos/dll/win32/gdi32/misc/misc.c index 3fd24cfa7d8..9ca6185a7e2 100644 --- a/reactos/dll/win32/gdi32/misc/misc.c +++ b/reactos/dll/win32/gdi32/misc/misc.c @@ -30,6 +30,7 @@ PGDI_TABLE_ENTRY GdiHandleTable = NULL; HANDLE CurrentProcessId = NULL; +DWORD GDI_BatchLimit = 1; /* * @implemented @@ -69,3 +70,29 @@ BOOL GdiGetHandleUserData(HGDIOBJ hGdiObj, PVOID *UserData) } return FALSE; } + + +/* + * @implemented + */ +DWORD +STDCALL +GdiSetBatchLimit(DWORD Limit) +{ + DWORD OldLimit = GDI_BatchLimit; + if ((!Limit) || (Limit > GDI_BATCH_LIMIT)) return Limit; + GdiFlush(); + GDI_BatchLimit = Limit; + return OldLimit; +} + + +/* + * @implemented + */ +DWORD +STDCALL +GdiGetBatchLimit() +{ + return GDI_BatchLimit; +} diff --git a/reactos/dll/win32/gdi32/misc/stubs.c b/reactos/dll/win32/gdi32/misc/stubs.c index 7a7a5efa08d..ee219ea2579 100644 --- a/reactos/dll/win32/gdi32/misc/stubs.c +++ b/reactos/dll/win32/gdi32/misc/stubs.c @@ -871,34 +871,6 @@ GdiFlush() } -/* - * @unimplemented - */ -DWORD -STDCALL -GdiSetBatchLimit( - DWORD a0 - ) -{ - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; -} - - -/* - * @unimplemented - */ -DWORD -STDCALL -GdiGetBatchLimit() -{ - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; -} - - /* * @unimplemented */