Don't load user32 too early on for 16-bit apps, so that app-specific
config can be available while loading it.
This commit is contained in:
parent
dc830b5415
commit
627c9073c7
|
@ -1183,11 +1183,22 @@ HANDLE WINAPI GetFastQueue16( void )
|
||||||
TEB *teb = NtCurrentTeb();
|
TEB *teb = NtCurrentTeb();
|
||||||
if (!teb) return 0;
|
if (!teb) return 0;
|
||||||
|
|
||||||
if (!teb->queue && Callout.InitThreadInput16)
|
if (!teb->queue)
|
||||||
|
{
|
||||||
|
if (!Callout.InitThreadInput16)
|
||||||
|
{
|
||||||
|
THUNK_InitCallout();
|
||||||
|
if (!Callout.InitThreadInput16)
|
||||||
|
{
|
||||||
|
FIXME("InitThreadInput16 callout not found, trouble ahead\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
Callout.InitThreadInput16( 0, THREAD_IsWin16(teb)? 4 : 5 );
|
Callout.InitThreadInput16( 0, THREAD_IsWin16(teb)? 4 : 5 );
|
||||||
|
|
||||||
if (!teb->queue)
|
if (!teb->queue)
|
||||||
FIXME("(): should initialize thread-local queue, expect failure!\n" );
|
FIXME("(): should initialize thread-local queue, expect failure!\n" );
|
||||||
|
}
|
||||||
|
|
||||||
return (HANDLE)teb->queue;
|
return (HANDLE)teb->queue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,16 +34,6 @@ int WINAPI wine_initial_task( HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, INT
|
||||||
HINSTANCE16 instance;
|
HINSTANCE16 instance;
|
||||||
HMODULE user32;
|
HMODULE user32;
|
||||||
|
|
||||||
if (!(user32 = LoadLibraryA( "user32.dll" )))
|
|
||||||
{
|
|
||||||
MESSAGE( "Cannot load user32.dll\n" );
|
|
||||||
ExitProcess( GetLastError() );
|
|
||||||
}
|
|
||||||
pGetMessageA = (void *)GetProcAddress( user32, "GetMessageA" );
|
|
||||||
pTranslateMessage = (void *)GetProcAddress( user32, "TranslateMessage" );
|
|
||||||
pDispatchMessageA = (void *)GetProcAddress( user32, "DispatchMessageA" );
|
|
||||||
THUNK_InitCallout();
|
|
||||||
|
|
||||||
if ((instance = NE_StartMain( main_exe_name, main_exe_file )) < 32)
|
if ((instance = NE_StartMain( main_exe_name, main_exe_file )) < 32)
|
||||||
{
|
{
|
||||||
if (instance == 11) /* try DOS format */
|
if (instance == 11) /* try DOS format */
|
||||||
|
@ -67,6 +57,15 @@ int WINAPI wine_initial_task( HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, INT
|
||||||
|
|
||||||
/* Start message loop for desktop window */
|
/* Start message loop for desktop window */
|
||||||
|
|
||||||
|
if (!(user32 = LoadLibraryA( "user32.dll" )))
|
||||||
|
{
|
||||||
|
MESSAGE( "Cannot load user32.dll\n" );
|
||||||
|
ExitProcess( GetLastError() );
|
||||||
|
}
|
||||||
|
pGetMessageA = (void *)GetProcAddress( user32, "GetMessageA" );
|
||||||
|
pTranslateMessage = (void *)GetProcAddress( user32, "TranslateMessage" );
|
||||||
|
pDispatchMessageA = (void *)GetProcAddress( user32, "DispatchMessageA" );
|
||||||
|
|
||||||
while ( GetNumTasks16() > 1 && pGetMessageA( &msg, 0, 0, 0 ) )
|
while ( GetNumTasks16() > 1 && pGetMessageA( &msg, 0, 0, 0 ) )
|
||||||
{
|
{
|
||||||
pTranslateMessage( &msg );
|
pTranslateMessage( &msg );
|
||||||
|
|
Loading…
Reference in New Issue