diff --git a/gdi/gdi.c b/gdi/gdi.c index 2de6266739..00c582fc93 100644 --- a/gdi/gdi.c +++ b/gdi/gdi.c @@ -3476,19 +3476,12 @@ BOOL16 WINAPI GetRasterizerCaps16( LPRASTERIZER_STATUS lprs, UINT16 cbNumBytes ) INT16 WINAPI EnumFontFamilies16( HDC16 hDC, LPCSTR lpFamily, FONTENUMPROC16 efproc, LPARAM lpData ) { - LOGFONT16 lf, *plf; - - if (lpFamily) - { - if (!*lpFamily) return 1; - lstrcpynA( lf.lfFaceName, lpFamily, LF_FACESIZE ); - lf.lfCharSet = DEFAULT_CHARSET; - lf.lfPitchAndFamily = 0; - plf = &lf; - } - else plf = NULL; + struct callback16_info info; - return EnumFontFamiliesEx16( hDC, plf, efproc, lpData, 0 ); + info.proc = (FARPROC16)efproc; + info.param = lpData; + info.result = 1; + return EnumFontFamiliesA(HDC_32(hDC), lpFamily, enum_font_callback, (LPARAM)&info); } @@ -5296,3 +5289,10 @@ BOOL WINAPI DllEntryPoint(DWORD fdwReason, HINSTANCE hinstDLL, WORD ds, } return TRUE; } + +HFONT16 WINAPI GetSystemIconFont16() +{ + // only known to be used by Simplified Chinese progman + // uses SPI_GETICONTITLELOGFONT if this returns 0 + return 0; +} diff --git a/gdi/gdi.exe16.spec b/gdi/gdi.exe16.spec index 593d41deda..b03f8a489f 100644 --- a/gdi/gdi.exe16.spec +++ b/gdi/gdi.exe16.spec @@ -106,7 +106,8 @@ 106 pascal SetBitmapBits(word long ptr) SetBitmapBits16 # ??? (not even in W1.1) 117 pascal SetDCOrg(word s_word s_word) SetDCOrg16 -118 stub InternalCreateDC # W1.1, W2.0 +# 118 stub InternalCreateDC # W1.1, W2.0 +118 pascal -ret16 GetSystemIconFont() GetSystemIconFont16 119 pascal -ret16 AddFontResource(str) AddFontResource16 120 stub GetContinuingTextExtent # W1.1, W2.0 121 pascal -ret16 Death(word) Death16 diff --git a/krnl386/kernel.c b/krnl386/kernel.c index 6a93e04e88..1ab1be99eb 100644 --- a/krnl386/kernel.c +++ b/krnl386/kernel.c @@ -1173,6 +1173,7 @@ BOOL WINAPI TaskSwitch16(HTASK16 htask, SEGPTR dwNewCSIP) BOOL s = TaskSetCSIP16(htask, SELECTOROF(dwNewCSIP), OFFSETOF(dwNewCSIP)); if (s) { + PostThreadMessageA(HTASK_32(htask), 0, 0, 0); DirectedYield16(htask); } return s; diff --git a/user/window.c b/user/window.c index 5355d27d60..7d5c693bf0 100644 --- a/user/window.c +++ b/user/window.c @@ -21,9 +21,9 @@ #include "wine/winuser16.h" #include "wownt32.h" #include "user_private.h" -#include "wine/server.h" #include "wine/debug.h" #include "wine/exception.h" +#include "../krnl386/kernel16_private.h" WINE_DEFAULT_DEBUG_CHANNEL(win); @@ -2970,11 +2970,14 @@ HWND16 WINAPI FindWindowEx16( HWND16 parent, HWND16 child, LPCSTR className, LPC LRESULT def_frame_proc_callback(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp, LRESULT *result, void *arg) { DWORD count; - ReleaseThunkLock(&count); + HANDLE yevent = kernel_get_thread_data()->yield_event; + if (!yevent) + ReleaseThunkLock(&count); if (hwnd == (HWND)arg) arg = NULL; *result = DefFrameProcA(hwnd, (HWND)arg, msg, wp, lp); - RestoreThunkLock(count); + if (!yevent) + RestoreThunkLock(count); return *result; } /***********************************************************************