reactos/win32ss/gdi/gdi32/include/precomp.h
Joachim Henze 72a4ecb7fc [0.4.10][WIN32SS] Fix regression CORE-15558 Font enumeration
Fixes CORE-15558 "AbiWord font listbox should display a specific font only once, but displays each of them many times instead"
which regressed by SVN r75491 == 0.4.7-dev-32-g d10c0ec112

by porting back the commits:
0.4.12-dev-320-g 6e4e5a004c
and
0.4.13-dev-107-g ae8417fd90 to prevent introducing another regression CORE_15785 with the initial fix.
and some more addendums to prevent introducing regression CORE_15755

I verified afterwards that all 3 issues: CORE-15558, CORE_15785 and CORE_15755 are in fixed state.

Actually I don't really like the resulting code due to the qsort() that it introduces into
win32ss/gdi/gdi32/objects/font.c
We did not need that at all before 0.4.7-dev-32-g d10c0ec112
In case that qsort() would ever reveal any new trouble like reduced performance or stack overflow,
we should structurally revert all that context to 0.4.7-dev-31 instead.
IntEnumFontFamilies() is called immediately upon process initialization for many applications and the qsorted-list is *huge*,
so this indeed could be relevant for performance.
2020-12-31 22:09:07 +01:00

64 lines
1.3 KiB
C

/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS System Libraries
* FILE: win32ss/gdi/gdi32/include/precomp.h
* PURPOSE: User-Mode Win32 GDI Library Header
* PROGRAMMER: Alex Ionescu (alex@relsoft.net)
*/
#ifndef _GDI32_PCH_
#define _GDI32_PCH_
/* INCLUDES ******************************************************************/
/* Definitions */
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
#define NTOS_MODE_USER
#include <stdarg.h>
/* SDK/DDK/NDK Headers. */
#include <windef.h>
/* Avoid type casting, by defining RECT to RECTL */
#define RECT RECTL
#define PRECT PRECTL
#define LPRECT LPRECTL
#define LPCRECT LPCRECTL
#define POINT POINTL
#define LPPOINT PPOINTL
#define PPOINT PPOINTL
#include <winbase.h>
#include <winnls.h>
#include <objbase.h>
#include <ndk/rtlfuncs.h>
#include <wingdi.h>
#define _ENGINE_EXPORT_
#include <winddi.h>
#include <prntfont.h>
#include <winddiui.h>
#include <winspool.h>
#include <ddrawi.h>
#include <ddrawgdi.h>
#include <d3dkmthk.h>
/* Public Win32K Headers */
#include <ntgdityp.h>
#include <ntgdi.h>
#include <ntgdihdl.h>
/* Private GDI32 Header */
#include "gdi32p.h"
/* Deprecated NTGDI calls which shouldn't exist */
#include <ntgdibad.h>
#include <undocgdi.h>
#include <ntintsafe.h>
#endif /* _GDI32_PCH_ */