Nikolay Sivov : dwrite: Remove unixlib callbacks.

Alexandre Julliard julliard at winehq.org
Tue Dec 7 15:58:44 CST 2021


Module: wine
Branch: master
Commit: 06742814ed08c65c6466f459bfd46d8fdfd0eb13
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=06742814ed08c65c6466f459bfd46d8fdfd0eb13

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Dec  7 15:59:47 2021 +0300

dwrite: Remove unixlib callbacks.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dwrite/dwrite_private.h |  8 ----
 dlls/dwrite/font.c           | 74 +----------------------------------
 dlls/dwrite/freetype.c       | 93 +-------------------------------------------
 3 files changed, 3 insertions(+), 172 deletions(-)

diff --git a/dlls/dwrite/dwrite_private.h b/dlls/dwrite/dwrite_private.h
index 1ac50747ec6..f83372acc9e 100644
--- a/dlls/dwrite/dwrite_private.h
+++ b/dlls/dwrite/dwrite_private.h
@@ -717,18 +717,10 @@ extern HRESULT shape_check_typographic_feature(struct scriptshaping_context *con
 struct font_data_context;
 extern HMODULE dwrite_module DECLSPEC_HIDDEN;
 
-struct font_callback_funcs
-{
-    int (CDECL *get_font_data)(void *key, const void **data_ptr, UINT64 *data_size, unsigned int *index,
-            struct font_data_context **context);
-    void (CDECL *release_font_data)(struct font_data_context *context);
-};
-
 struct font_backend_funcs
 {
     font_object_handle (CDECL *create_font_object)(const void *data_ptr, UINT64 data_size, unsigned int index);
     void (CDECL *release_font_object)(font_object_handle object);
-    void (CDECL *notify_release)(void *key);
     int (CDECL *get_glyph_outline)(font_object_handle object, float emsize, unsigned int simulations, UINT16 glyph,
             struct dwrite_outline *outline);
     UINT16 (CDECL *get_glyph_count)(font_object_handle object);
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index 05aea75d52d..cb4f856524c 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -837,7 +837,6 @@ static ULONG WINAPI dwritefontface_Release(IDWriteFontFace5 *iface)
         for (i = 0; i < ARRAY_SIZE(fontface->glyphs); i++)
             free(fontface->glyphs[i]);
 
-        font_funcs->notify_release(iface);
         font_funcs->release_font_object(fontface->font_object);
         if (fontface->stream)
         {
@@ -8142,81 +8141,12 @@ HRESULT create_fontset_builder(IDWriteFactory7 *factory, IDWriteFontSetBuilder2
     return S_OK;
 }
 
-struct font_data_context
-{
-    IDWriteFontFileStream *stream;
-    void *context;
-};
-
-static int CDECL get_font_data_cb(void *key, const void **data_ptr, UINT64 *data_size,
-        unsigned int *index, struct font_data_context **ret_context)
-{
-    IDWriteFontFace *fontface = key;
-    struct font_data_context *context;
-    IDWriteFontFileStream *stream;
-    IDWriteFontFile *file;
-    unsigned int count;
-    void *data_context;
-    HRESULT hr;
-
-    *ret_context = NULL;
-
-    count = 1;
-    if (FAILED(IDWriteFontFace_GetFiles(fontface, &count, &file))) return 1;
-
-    hr = get_filestream_from_file(file, &stream);
-    IDWriteFontFile_Release(file);
-    if (FAILED(hr)) return 1;
-
-    hr = IDWriteFontFileStream_GetFileSize(stream, data_size);
-    if (FAILED(hr))
-    {
-        IDWriteFontFileStream_Release(stream);
-        return 1;
-    }
-
-    hr = IDWriteFontFileStream_ReadFileFragment(stream, data_ptr, 0, *data_size, &data_context);
-    if (FAILED(hr))
-    {
-        IDWriteFontFileStream_Release(stream);
-        return 1;
-    }
-
-    if (!(context = malloc(sizeof(*context))))
-    {
-        IDWriteFontFileStream_Release(stream);
-        return 1;
-    }
-
-    context->stream = stream;
-    context->context = data_context;
-
-    *ret_context = context;
-    *index = IDWriteFontFace_GetIndex(fontface);
-
-    return 0;
-}
-
-static void CDECL release_font_data_cb(struct font_data_context *context)
-{
-    if (!context) return;
-    IDWriteFontFileStream_ReleaseFileFragment(context->stream, context->context);
-    IDWriteFontFileStream_Release(context->stream);
-    free(context);
-}
-
-struct font_callback_funcs callback_funcs =
-{
-    get_font_data_cb,
-    release_font_data_cb,
-};
-
 void init_font_backend(void)
 {
-    __wine_init_unix_lib(dwrite_module, DLL_PROCESS_ATTACH, &callback_funcs, &font_funcs);
+    __wine_init_unix_lib(dwrite_module, DLL_PROCESS_ATTACH, NULL, &font_funcs);
 }
 
 void release_font_backend(void)
 {
-    __wine_init_unix_lib(dwrite_module, DLL_PROCESS_DETACH, &callback_funcs, NULL);
+    __wine_init_unix_lib(dwrite_module, DLL_PROCESS_DETACH, NULL, NULL);
 }
diff --git a/dlls/dwrite/freetype.c b/dlls/dwrite/freetype.c
index 3b9676a1af1..daaff6a3f8c 100644
--- a/dlls/dwrite/freetype.c
+++ b/dlls/dwrite/freetype.c
@@ -29,7 +29,7 @@
 
 #ifdef HAVE_FT2BUILD_H
 #include <ft2build.h>
-#include FT_CACHE_H
+#include FT_GLYPH_H
 #include FT_FREETYPE_H
 #include FT_OUTLINE_H
 #include FT_TRUETYPE_TABLES_H
@@ -47,19 +47,8 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(dwrite);
 
-static RTL_CRITICAL_SECTION freetype_cs;
-static RTL_CRITICAL_SECTION_DEBUG critsect_debug =
-{
-    0, 0, &freetype_cs,
-    { &critsect_debug.ProcessLocksList, &critsect_debug.ProcessLocksList },
-      0, 0, { (DWORD_PTR)(__FILE__ ": freetype_cs") }
-};
-static RTL_CRITICAL_SECTION freetype_cs = { &critsect_debug, -1, 0, 0, 0, 0 };
-
 static void *ft_handle = NULL;
 static FT_Library library = 0;
-static FTC_Manager cache_manager = 0;
-static FTC_ImageCache image_cache = 0;
 typedef struct
 {
     FT_Int major;
@@ -67,8 +56,6 @@ typedef struct
     FT_Int patch;
 } FT_Version_t;
 
-static const struct font_callback_funcs *callback_funcs;
-
 #define MAKE_FUNCPTR(f) static typeof(f) * p##f = NULL
 MAKE_FUNCPTR(FT_Activate_Size);
 MAKE_FUNCPTR(FT_Done_Face);
@@ -98,53 +85,9 @@ MAKE_FUNCPTR(FT_Outline_New);
 MAKE_FUNCPTR(FT_Outline_Transform);
 MAKE_FUNCPTR(FT_Outline_Translate);
 MAKE_FUNCPTR(FT_Set_Pixel_Sizes);
-MAKE_FUNCPTR(FTC_ImageCache_Lookup);
-MAKE_FUNCPTR(FTC_ImageCache_New);
-MAKE_FUNCPTR(FTC_Manager_New);
-MAKE_FUNCPTR(FTC_Manager_Done);
-MAKE_FUNCPTR(FTC_Manager_LookupFace);
-MAKE_FUNCPTR(FTC_Manager_LookupSize);
-MAKE_FUNCPTR(FTC_Manager_RemoveFaceID);
 #undef MAKE_FUNCPTR
 static FT_Error (*pFT_Outline_EmboldenXY)(FT_Outline *, FT_Pos, FT_Pos);
 
-static void face_finalizer(void *object)
-{
-    FT_Face face = object;
-    callback_funcs->release_font_data((struct font_data_context *)face->generic.data);
-}
-
-static FT_Error face_requester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *face)
-{
-    struct font_data_context *context;
-    const void *data_ptr;
-    FT_Error fterror;
-    UINT64 data_size;
-    UINT32 index;
-
-    *face = NULL;
-
-    if (!face_id)
-    {
-        WARN("NULL fontface requested.\n");
-        return FT_Err_Ok;
-    }
-
-    if (callback_funcs->get_font_data(face_id, &data_ptr, &data_size, &index, &context))
-        return FT_Err_Ok;
-
-    fterror = pFT_New_Memory_Face(library, data_ptr, data_size, index, face);
-    if (fterror == FT_Err_Ok)
-    {
-        (*face)->generic.data = context;
-        (*face)->generic.finalizer = face_finalizer;
-    }
-    else
-        callback_funcs->release_font_data(context);
-
-    return fterror;
-}
-
 static FT_Size freetype_set_face_size(FT_Face face, FT_UInt emsize)
 {
     FT_Size size;
@@ -207,13 +150,6 @@ static BOOL init_freetype(void)
     LOAD_FUNCPTR(FT_Outline_Transform)
     LOAD_FUNCPTR(FT_Outline_Translate)
     LOAD_FUNCPTR(FT_Set_Pixel_Sizes)
-    LOAD_FUNCPTR(FTC_ImageCache_Lookup)
-    LOAD_FUNCPTR(FTC_ImageCache_New)
-    LOAD_FUNCPTR(FTC_Manager_New)
-    LOAD_FUNCPTR(FTC_Manager_Done)
-    LOAD_FUNCPTR(FTC_Manager_LookupFace)
-    LOAD_FUNCPTR(FTC_Manager_LookupSize)
-    LOAD_FUNCPTR(FTC_Manager_RemoveFaceID)
 #undef LOAD_FUNCPTR
     pFT_Outline_EmboldenXY = dlsym(ft_handle, "FT_Outline_EmboldenXY");
 
@@ -225,18 +161,6 @@ static BOOL init_freetype(void)
     }
     pFT_Library_Version(library, &FT_Version.major, &FT_Version.minor, &FT_Version.patch);
 
-    /* init cache manager */
-    if (pFTC_Manager_New(library, 0, 0, 0, &face_requester, NULL, &cache_manager) != 0 ||
-        pFTC_ImageCache_New(cache_manager, &image_cache) != 0) {
-
-        ERR("Failed to init FreeType cache\n");
-        pFTC_Manager_Done(cache_manager);
-        pFT_Done_FreeType(library);
-        dlclose(ft_handle);
-        ft_handle = NULL;
-        return FALSE;
-    }
-
     TRACE("FreeType version is %d.%d.%d\n", FT_Version.major, FT_Version.minor, FT_Version.patch);
     return TRUE;
 
@@ -264,13 +188,6 @@ static void CDECL freetype_release_font_object(font_object_handle object)
     pFT_Done_Face(object);
 }
 
-static void CDECL freetype_notify_release(void *key)
-{
-    RtlEnterCriticalSection(&freetype_cs);
-    pFTC_Manager_RemoveFaceID(cache_manager, key);
-    RtlLeaveCriticalSection(&freetype_cs);
-}
-
 static void CDECL freetype_get_design_glyph_metrics(font_object_handle object, UINT16 upem, UINT16 ascent,
         unsigned int simulations, UINT16 glyph, DWRITE_GLYPH_METRICS *ret)
 {
@@ -793,7 +710,6 @@ const static struct font_backend_funcs freetype_funcs =
 {
     freetype_create_font_object,
     freetype_release_font_object,
-    freetype_notify_release,
     freetype_get_glyph_outline,
     freetype_get_glyph_count,
     freetype_get_glyph_advance,
@@ -804,7 +720,6 @@ const static struct font_backend_funcs freetype_funcs =
 
 static NTSTATUS init_freetype_lib(HMODULE module, DWORD reason, const void *ptr_in, void *ptr_out)
 {
-    callback_funcs = ptr_in;
     if (!init_freetype()) return STATUS_DLL_NOT_FOUND;
     *(const struct font_backend_funcs **)ptr_out = &freetype_funcs;
     return STATUS_SUCCESS;
@@ -812,7 +727,6 @@ static NTSTATUS init_freetype_lib(HMODULE module, DWORD reason, const void *ptr_
 
 static NTSTATUS release_freetype_lib(void)
 {
-    pFTC_Manager_Done(cache_manager);
     pFT_Done_FreeType(library);
     return STATUS_SUCCESS;
 }
@@ -828,10 +742,6 @@ static void CDECL null_release_font_object(font_object_handle object)
 {
 }
 
-static void CDECL null_notify_release(void *key)
-{
-}
-
 static int CDECL null_get_glyph_outline(font_object_handle object, float emSize, unsigned int simulations,
         UINT16 glyph, struct dwrite_outline *outline)
 {
@@ -869,7 +779,6 @@ const static struct font_backend_funcs null_funcs =
 {
     null_create_font_object,
     null_release_font_object,
-    null_notify_release,
     null_get_glyph_outline,
     null_get_glyph_count,
     null_get_glyph_advance,




More information about the wine-cvs mailing list