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:
Alexandre Julliard 2001-03-28 18:47:05 +00:00
parent dc830b5415
commit 627c9073c7
2 changed files with 23 additions and 13 deletions

View File

@ -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;
} }

View File

@ -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 );