diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-09-20 12:51:59 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-09-20 12:51:59 +0200 |
| commit | 88629f7aa697f23f868bc9a9e17a6420d23e8fa3 (patch) | |
| tree | 10cbd5a6d96b8d45bc966d0371b55bd109e300d1 /src/wrapped/wrappedlibxft.c | |
| parent | fb11af5859c4ec9699e2290cf2f4ca692eef8242 (diff) | |
| download | box64-88629f7aa697f23f868bc9a9e17a6420d23e8fa3.tar.gz box64-88629f7aa697f23f868bc9a9e17a6420d23e8fa3.zip | |
[WRAPPER] Reworked libXft with new wrapperhelper (should help #1841)
Diffstat (limited to 'src/wrapped/wrappedlibxft.c')
| -rw-r--r-- | src/wrapped/wrappedlibxft.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/wrapped/wrappedlibxft.c b/src/wrapped/wrappedlibxft.c index 633e4066..be339e18 100644 --- a/src/wrapped/wrappedlibxft.c +++ b/src/wrapped/wrappedlibxft.c @@ -6,10 +6,17 @@ #include "wrappedlibs.h" +#include "debug.h" #include "wrapper.h" #include "bridge.h" #include "librarian/library_private.h" #include "x64emu.h" +#include "emu/x64emu_private.h" +#include "callback.h" +#include "librarian.h" +#include "box64context.h" +#include "emu/x64emu_private.h" +#include "myalign.h" #ifdef ANDROID const char* libxftName = "libXft.so"; @@ -19,10 +26,41 @@ #define LIBNAME libxft +typedef void(*vFp_t)(void*); +typedef void*(*pFpp_t)(void*, void*); +typedef void*(*pFpipp_t)(void*, int, void*, void*); + +#define ADDED_FUNCTIONS() \ + GO(XftFontMatch, pFpipp_t) \ + GO(XftFontOpenPattern, pFpp_t) \ + GO(FcPatternDestroy, vFp_t) + +#include "generated/wrappedlibxfttypes.h" + +#include "wrappercallback.h" + +void* my_FcPatternBuild(x64emu_t* emu, void* pattern, uint64_t* b); // from fontconfig +EXPORT void* my_XftFontOpen(x64emu_t* emu, void* dpy, int screen, uintptr_t* b) +{ + int result; + void* pat = my_FcPatternBuild(emu, NULL, b); + void* match = my->XftFontMatch(dpy, screen, pat, &result); + my->FcPatternDestroy(pat); + if(!match) + return NULL; + void* ret = my->XftFontOpenPattern(dpy, match); + if(!ret) + my->FcPatternDestroy(match); + return ret; +} + + #ifdef ANDROID #define NEEDED_LIBS "libX11.so", "libfontconfig.so", "libXrender.so", "libfreetype.so" #else #define NEEDED_LIBS "libX11.so.6", "libfontconfig.so.1", "libXrender.so.1", "libfreetype.so.6" #endif + + #include "wrappedlib_init.h" |