gdi32: Use gdi handle as realized font id
Nikolay Sivov
nsivov at codeweavers.com
Wed Sep 9 03:13:01 CDT 2015
To be used later by GetFontFile* functions
-------------- next part --------------
From 4dcd4fbcabe0c5ccd7312379b2014029d942f7b0 Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed, 9 Sep 2015 01:26:36 +0300
Subject: [PATCH] gdi32: Use gdi handle as realized font id
---
dlls/gdi32/freetype.c | 3 +++
dlls/gdi32/gdi_private.h | 2 ++
include/wingdi.h | 1 +
3 files changed, 6 insertions(+)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 60ffc45..a27406b 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -337,6 +337,7 @@ struct tagGdiFont {
VOID *GSUB_Table;
const VOID *vert_feature;
DWORD cache_num;
+ DWORD instance_id;
};
typedef struct {
@@ -4396,6 +4397,7 @@ static GdiFont *alloc_font(void)
ret->font_desc.matrix.eM11 = ret->font_desc.matrix.eM22 = 1.0;
ret->total_kern_pairs = (DWORD)-1;
ret->kern_pairs = NULL;
+ ret->instance_id = HandleToULong(alloc_gdi_handle(ret, OBJ_FONT_REALIZED, NULL));
list_init(&ret->child_fonts);
return ret;
}
@@ -4416,6 +4418,7 @@ static void free_font(GdiFont *font)
if (font->ft_face) pFT_Done_Face(font->ft_face);
if (font->mapping) unmap_font_file( font->mapping );
+ free_gdi_handle( ULongToHandle(font->instance_id) );
HeapFree(GetProcessHeap(), 0, font->kern_pairs);
HeapFree(GetProcessHeap(), 0, font->potm);
HeapFree(GetProcessHeap(), 0, font->name);
diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h
index 2e52e08..9a37090 100644
--- a/dlls/gdi32/gdi_private.h
+++ b/dlls/gdi32/gdi_private.h
@@ -294,6 +294,8 @@ extern BOOL WineEngInit(void) DECLSPEC_HIDDEN;
extern BOOL WineEngRemoveFontResourceEx(LPCWSTR, DWORD, PVOID) DECLSPEC_HIDDEN;
/* gdiobj.c */
+#define OBJ_FONT_REALIZED (GDI_OBJ_LAST+1)
+
extern HGDIOBJ alloc_gdi_handle( void *obj, WORD type, const struct gdi_obj_funcs *funcs ) DECLSPEC_HIDDEN;
extern void *free_gdi_handle( HGDIOBJ handle ) DECLSPEC_HIDDEN;
extern HGDIOBJ get_full_gdi_handle( HGDIOBJ handle ) DECLSPEC_HIDDEN;
diff --git a/include/wingdi.h b/include/wingdi.h
index e860f2c..6a0047e 100644
--- a/include/wingdi.h
+++ b/include/wingdi.h
@@ -697,6 +697,7 @@ typedef struct
#define OBJ_ENHMETADC 12
#define OBJ_ENHMETAFILE 13
#define OBJ_COLORSPACE 14
+#define GDI_OBJ_LAST OBJ_COLORSPACE
typedef struct tagXFORM
{
--
2.1.4
More information about the wine-patches
mailing list