mirror of
https://github.com/reactos/wine.git
synced 2025-01-19 02:02:18 +00:00
a2f2e01962
Tue Jun 6 12:11:41 1995 Alexandre Julliard (julliard@sunsite.unc.edu) * [controls/menu.c] Fixed bug with drawing multi-column menus with vertical separator. * [debugger/debug.l] Fixed NULL-pointer reference after readline(). * [if1632/winprocs.spec] [miscemu/int21.c] [miscemu/interrupts.c] Added interrupt vector emulation. Allows to retrieve an interrupt vector and jump to it without crashing. * [loader/ldt.c] Moved ldt.c to memory directory. * [loader/task.c] Implemented LockCurrentTask() and GetInstanceData(). * [objects/bitblt.c] Fixed a bug that caused StretchBlt() to use wrong colors when stretching a monochrome bitmap to a color display. * [objects/bitmap.c] Fixed a segmented pointer bug in CreateBitmapIndirect(). * [tools/build.c] Added possibility to have arguments for register functions; used by interrupt vectors to remove the flags from the stack. Generate a new function CallTo32_LargeStack(), that allows calling a 32-bit function using the original 32-bit stack, for functions that need more that 64k of stack. Tue May 30 10:29:56 1995 Martin von Loewis <martin@informatik.hu-berlin.de> * [if1632/shell.spec] [misc/shell.c] DoEnvironmentSubst: fixed prototype * [if1632/gdi.spec] [objects/palette.c] SetSystemPaletteUse: new function * [if1632/kernel.spec] [loader/resource.c] DirectResAlloc: new function * [if1632/user.spec] [windows/keyboard.c] SetKeyboardState: new function Mon May 29 12:58:28 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de> * [tools/build.c] Prevent interrupts from destroying the args for a 32 bit function by loading the correct value into %esp directly after %ss. * [loader/ne_image.c] [loader/module.c] The new instance must be created earlier in LoadModule(), so that fixups referencing it will be handled correctly. Initialize the local heap for a DGROUP in NE_LoadSegment(). * [objects/dib.c] Like RLE8 bitmaps, RLE4 bitmaps don't always end with a proper code. This used to crash Wine. Fixed. * [objects/text.c] Fix possible null pointer dereference in debugging output. * [misc/commdlg.c] Handle user input in the edit control better. Some bugs fixed. * [memory/local.c] Started implementing moveable blocks. This is unfinished (!), but at least it does not seem to break things. Wed May 24 13:26:36 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de> * [loader/module.c] LoadModule(): DLLs occasionally have a data segment, and they work much better if it is loaded :-) LoadLibrary(): pass HMODULE instead of HINSTANCE to NE_InitializeDLLs. FindModule(): also strip off the last backslash of the pathnames (Winhelp tried to load C:\WINDOWS\SYSTEM\COMMDLG.DLL). GetModuleHandle(): just call MODULE_FindModule, it does the same job, only better. * [loader/ne_image.c] LocalInit() the heap of a DLL in NE_InitDLL. (This is probably not really correct, it seems that all programs and DLLs try to do this themselves. But they pass weird parameters.) NE_InitializeDLLs should also call NE_InitDLL for the passed hModule. * [loader/task.c] [misc/user.c] Finish global initializations in InitTask instead of InitApp, or all the DLLs will be initialized in InitTask without any available window classes!
126 lines
2.6 KiB
C
126 lines
2.6 KiB
C
/*
|
|
static char RCSId[] = "$Id: wine.c,v 1.2 1993/07/04 04:04:21 root Exp root $";
|
|
static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
|
|
*/
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <fcntl.h>
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
#include "windows.h"
|
|
#include "dos_fs.h"
|
|
#include "dlls.h"
|
|
#include "miscemu.h"
|
|
#include "neexe.h"
|
|
#include "wineopts.h"
|
|
#include "task.h"
|
|
#include "options.h"
|
|
#include "pe_image.h"
|
|
#include "stddebug.h"
|
|
#include "debug.h"
|
|
|
|
|
|
/***********************************************************************
|
|
* Main initialisation routine
|
|
*/
|
|
int MAIN_Init(void)
|
|
{
|
|
extern BOOL RELAY_Init(void);
|
|
|
|
int queueSize;
|
|
|
|
SpyInit();
|
|
|
|
/* Initialize relay code */
|
|
if (!RELAY_Init()) return 0;
|
|
|
|
/* Initialize Win32 relay code */
|
|
if (!RELAY32_Init()) return 0;
|
|
|
|
/* Create built-in modules */
|
|
if (!MODULE_Init()) return 0;
|
|
|
|
/* Initialize tasks */
|
|
if (!TASK_Init()) return 0;
|
|
|
|
/* Initialize interrupt vectors */
|
|
if (!INT_Init()) return 0;
|
|
|
|
/* Initialize the DOS file system */
|
|
DOS_InitFS();
|
|
|
|
/* Create DOS environment */
|
|
CreateSelectors();
|
|
|
|
/* Initialize signal handling */
|
|
init_wine_signals();
|
|
|
|
/* Initialize communications */
|
|
COMM_Init();
|
|
|
|
#ifndef WINELIB
|
|
/* Initialize the DOS memory */
|
|
INT21_Init();
|
|
|
|
/* Create USER heap */
|
|
if (!USER_HeapInit()) return 0;
|
|
#endif
|
|
|
|
/* Global atom table initialisation */
|
|
if (!ATOM_Init()) return 0;
|
|
|
|
/* GDI initialisation */
|
|
if (!GDI_Init()) return 0;
|
|
|
|
/* Initialize system colors and metrics*/
|
|
SYSMETRICS_Init();
|
|
SYSCOLOR_Init();
|
|
|
|
/* Create the DCEs */
|
|
DCE_Init();
|
|
|
|
/* Initialize dialog manager */
|
|
if (!DIALOG_Init()) return 0;
|
|
|
|
/* Initialize menus */
|
|
if (!MENU_Init()) return 0;
|
|
|
|
/* Create system message queue */
|
|
queueSize = GetProfileInt( "windows", "TypeAhead", 120 );
|
|
if (!MSG_CreateSysMsgQueue( queueSize )) return 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
#ifndef WINELIB
|
|
/**********************************************************************
|
|
* main
|
|
*/
|
|
int _WinMain(int argc, char **argv)
|
|
{
|
|
int i;
|
|
|
|
if (!MAIN_Init()) return 0;
|
|
|
|
for (i = 1; i < argc; i++)
|
|
{
|
|
if (WinExec( argv[i], SW_SHOWNORMAL ) < 32)
|
|
{
|
|
fprintf(stderr, "wine: can't exec '%s'.\n", argv[i]);
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
if (Options.debug) wine_debug(0, NULL);
|
|
|
|
Yield(); /* Start the first task */
|
|
fprintf( stderr, "WinMain: Should never happen: returned from Yield()\n" );
|
|
return 0;
|
|
}
|
|
|
|
#endif /* #ifndef WINELIB */
|