From a2da86898a671591c6adc3b728338c36da87cd4c Mon Sep 17 00:00:00 2001 From: Andreas Mohr Date: Mon, 6 Dec 1999 01:20:00 +0000 Subject: [PATCH] Added .rc file support for Win16 NE modules. Moved display.c and mouse.c to separate dll directories. --- Makefile.in | 6 +- configure | 4 + configure.in | 2 + dlls/Makefile.in | 2 + dlls/display/.cvsignore | 3 + dlls/display/Makefile.in | 23 +++ dlls/display/disp.rc | 47 ++++++ {if1632 => dlls/display}/display.spec | 0 .../display.c => dlls/display/display_main.c | 9 +- dlls/mouse/.cvsignore | 3 + dlls/mouse/Makefile.in | 23 +++ {if1632 => dlls/mouse}/mouse.spec | 0 windows/mouse.c => dlls/mouse/mouse_main.c | 9 +- dlls/mouse/mouserc.rc | 20 +++ documentation/resources | 6 +- if1632/.cvsignore | 2 - if1632/Makefile.in | 2 - if1632/builtin.c | 156 ++++++++++++------ loader/ne/resource.c | 19 +++ windows/Makefile.in | 2 - 20 files changed, 267 insertions(+), 71 deletions(-) create mode 100644 dlls/display/.cvsignore create mode 100644 dlls/display/Makefile.in create mode 100644 dlls/display/disp.rc rename {if1632 => dlls/display}/display.spec (100%) rename windows/display.c => dlls/display/display_main.c (89%) create mode 100644 dlls/mouse/.cvsignore create mode 100644 dlls/mouse/Makefile.in rename {if1632 => dlls/mouse}/mouse.spec (100%) rename windows/mouse.c => dlls/mouse/mouse_main.c (96%) create mode 100644 dlls/mouse/mouserc.rc diff --git a/Makefile.in b/Makefile.in index 1d9ee9b109a..10c48630bc5 100644 --- a/Makefile.in +++ b/Makefile.in @@ -36,12 +36,14 @@ LIBSUBDIRS = \ dlls/commdlg \ dlls/crtdll \ dlls/dciman32 \ + dlls/display \ dlls/dplayx \ dlls/dsound \ dlls/icmp \ dlls/imagehlp \ dlls/imm32 \ dlls/lzexpand \ + dlls/mouse \ dlls/mpr \ dlls/msacm \ dlls/msacm32 \ @@ -147,12 +149,14 @@ LIBOBJS = \ dlls/commdlg/commdlg.o \ dlls/crtdll/crtdll.o \ dlls/dciman32/dciman32.o \ - dlls/icmp/icmp.o \ + dlls/display/display.o \ dlls/dplayx/dplayx.o \ dlls/dsound/dsound.o \ + dlls/icmp/icmp.o \ dlls/imagehlp/imagehlp.o \ dlls/imm32/imm32.o \ dlls/lzexpand/lzexpand.o \ + dlls/mouse/mouse.o \ dlls/mpr/mpr.o \ dlls/msacm/msacm.o \ dlls/msacm32/msacm32.o \ diff --git a/configure b/configure index ba30f9112eb..d6d8f1403a4 100755 --- a/configure +++ b/configure @@ -5844,12 +5844,14 @@ dlls/comctl32/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/dciman32/Makefile +dlls/display/Makefile dlls/dplayx/Makefile dlls/dsound/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/lzexpand/Makefile +dlls/mouse/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm32/Makefile @@ -6048,12 +6050,14 @@ dlls/comctl32/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/dciman32/Makefile +dlls/display/Makefile dlls/dplayx/Makefile dlls/dsound/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/lzexpand/Makefile +dlls/mouse/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm32/Makefile diff --git a/configure.in b/configure.in index 5e66a7aea55..8ae78ea704c 100644 --- a/configure.in +++ b/configure.in @@ -869,12 +869,14 @@ dlls/comctl32/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/dciman32/Makefile +dlls/display/Makefile dlls/dplayx/Makefile dlls/dsound/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/lzexpand/Makefile +dlls/mouse/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm32/Makefile diff --git a/dlls/Makefile.in b/dlls/Makefile.in index fe659bcd135..4a865a9757b 100644 --- a/dlls/Makefile.in +++ b/dlls/Makefile.in @@ -5,12 +5,14 @@ SUBDIRS = \ commdlg \ crtdll \ dciman32 \ + display \ dplayx \ dsound \ icmp \ imagehlp \ imm32 \ lzexpand \ + mouse \ mpr \ msacm \ msacm32 \ diff --git a/dlls/display/.cvsignore b/dlls/display/.cvsignore new file mode 100644 index 00000000000..2e334a97b03 --- /dev/null +++ b/dlls/display/.cvsignore @@ -0,0 +1,3 @@ +Makefile +disp.s +display.spec.c diff --git a/dlls/display/Makefile.in b/dlls/display/Makefile.in new file mode 100644 index 00000000000..48b355fa46d --- /dev/null +++ b/dlls/display/Makefile.in @@ -0,0 +1,23 @@ +DEFS = @DLLFLAGS@ -D__WINE__ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +MODULE = display +WRCEXTRA = -s -w16 -pdisplay +SPEC_SRCS = display.spec + +C_SRCS = \ + display_main.c + +RC_SRCS = \ + disp.rc + +all: $(MODULE).o + +@MAKE_RULES@ + +$(RC_SRCS:.rc=.s): $(WRC) + +### Dependencies: + diff --git a/dlls/display/disp.rc b/dlls/display/disp.rc new file mode 100644 index 00000000000..ea89eeaeee7 --- /dev/null +++ b/dlls/display/disp.rc @@ -0,0 +1,47 @@ +/* + * resource file for DISPLAY driver dll + * + */ + +1 "OEMBIN" +{ + 0x11, /* vertical thumb height (in pixels) */ + 0x11, /* horizontal thumb width (in pixels) */ + 0x02, /* icon width (in pixels) */ + 0x02, /* icon height (in pixels) */ + 0x01, /* cursor width (in pixels) */ + 0x01, /* cursor height (in pixels) */ + 0x00, /* reserved */ + 0x01, /* vertical-line width */ + 0x01, /* horizontal-line width */ + + /* default system color values */ + 0x00c0c0c0L, /* scrollbar */ + 0x00c0c0c0L, /* desktop */ + 0x00800000L, /* active caption */ + 0x00ffffffL, /* inactive caption */ + 0x00ffffffL, /* menu */ + 0x00ffffffL, /* window */ + 0x00000000L, /* window frame */ + 0x00000000L, /* menu text */ + 0x00000000L, /* window text */ + 0x00ffffffL, /* caption text */ + 0x00c0c0c0L, /* active border */ + 0x00c0c0c0L, /* inactive border */ + 0x00ffffffL, /* app workspace */ + 0x00800000L, /* hilite bk */ + 0x00ffffffL, /* hilite text */ + 0x00c0c0c0L, /* btn face */ + 0x00808080L, /* btn shadow */ + 0x00c0c0c0L, /* gray text */ + 0x00000000L, /* btn text */ + 0x00000000L /* inactive caption text */ +} + +/* this is an icon */ +DUMMY1 1 +{ + 0x0 +} + + diff --git a/if1632/display.spec b/dlls/display/display.spec similarity index 100% rename from if1632/display.spec rename to dlls/display/display.spec diff --git a/windows/display.c b/dlls/display/display_main.c similarity index 89% rename from windows/display.c rename to dlls/display/display_main.c index e66871b5bb2..4bc668ea4dd 100644 --- a/windows/display.c +++ b/dlls/display/display_main.c @@ -53,17 +53,14 @@ VOID WINAPI DISPLAY_CheckCursor( void ) * DISPLAY_GetDriverResourceID (DISPLAY.450) * * Used by USER to check if driver contains better version of a builtin - * resource than USER. + * resource than USER (yes, our DISPLAY does !). * wQueriedResID is the ID USER asks about. - * lpsResName might often contain "OEMBIN". - * For now we just let USER use its own resource. + * lpsResName does often contain "OEMBIN". */ DWORD WINAPI DISPLAY_GetDriverResourceID( WORD wQueriedResID, LPSTR lpsResName ) { - FIXME("Return the display resource ID\n" ); - if (wQueriedResID == 3) - return (DWORD)wQueriedResID/*FIXME resourceID*/; + return (DWORD)1; return (DWORD)wQueriedResID; } diff --git a/dlls/mouse/.cvsignore b/dlls/mouse/.cvsignore new file mode 100644 index 00000000000..7f188e4f99e --- /dev/null +++ b/dlls/mouse/.cvsignore @@ -0,0 +1,3 @@ +Makefile +mouse.spec.c +mouserc.s diff --git a/dlls/mouse/Makefile.in b/dlls/mouse/Makefile.in new file mode 100644 index 00000000000..e71586b7556 --- /dev/null +++ b/dlls/mouse/Makefile.in @@ -0,0 +1,23 @@ +DEFS = @DLLFLAGS@ -D__WINE__ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +MODULE = mouse +WRCEXTRA = -s -w16 -pmouse +SPEC_SRCS = mouse.spec + +C_SRCS = \ + mouse_main.c + +RC_SRCS = \ + mouserc.rc + +all: $(MODULE).o + +@MAKE_RULES@ + +$(RC_SRCS:.rc=.s): $(WRC) + +### Dependencies: + diff --git a/if1632/mouse.spec b/dlls/mouse/mouse.spec similarity index 100% rename from if1632/mouse.spec rename to dlls/mouse/mouse.spec diff --git a/windows/mouse.c b/dlls/mouse/mouse_main.c similarity index 96% rename from windows/mouse.c rename to dlls/mouse/mouse_main.c index 1625a33a0eb..71edd1fa522 100644 --- a/windows/mouse.c +++ b/dlls/mouse/mouse_main.c @@ -10,10 +10,12 @@ #include "debugtools.h" #include "callback.h" #include "builtin16.h" +#include "module.h" #include "mouse.h" #include "monitor.h" #include "winuser.h" #include "win.h" +#include "wine/winbase16.h" DEFAULT_DEBUG_CHANNEL(event) @@ -52,8 +54,11 @@ VOID WINAPI MOUSE_Enable(LPMOUSE_EVENT_PROC lpMouseEventProc) DefMouseEventProc = lpMouseEventProc; /* Now initialize the mouse driver */ - if (initDone == FALSE) MOUSE_Driver->pInit(); - initDone = TRUE; + if (initDone == FALSE) + { + MOUSE_Driver->pInit(); + initDone = TRUE; + } } static VOID WINAPI MOUSE_CallMouseEventProc( FARPROC16 proc, diff --git a/dlls/mouse/mouserc.rc b/dlls/mouse/mouserc.rc new file mode 100644 index 00000000000..cd75cdf7ee0 --- /dev/null +++ b/dlls/mouse/mouserc.rc @@ -0,0 +1,20 @@ +/* + * Top level resource file for MOUSE driver dll + * + */ + +/* this ought to be VERSION_INFO */ +DUMMY1 1 +{ + 0x1, + 0x2, + 0x3, + 0x4, + 0x5 +} + +/* what's that ? */ +DUMMY2 3 +{ + 0x0 +} diff --git a/documentation/resources b/documentation/resources index d516d676369..674ddbc8db2 100644 --- a/documentation/resources +++ b/documentation/resources @@ -2,14 +2,14 @@ This document desribes tools for handling resources within wine ### bin2res ### - This tool allows the editing of embeded binary resources within + This tool allows the editing of embedded binary resources within *.rc files. These resources are stored as hex dump so they can be - stored within the cvs. This makes the editing of the embeded + stored within the cvs. This makes the editing of the embedded bitmaps and icons harder. ### Create binary files from.rc ### - the resources in the.rc file has to be marked by a header: + the resources in the .rc file have to be marked by a header: /* BINRES idb_std_small.bmp */ IDB_STD_SMALL BITMAP LOADONCALL DISCARDABLE diff --git a/if1632/.cvsignore b/if1632/.cvsignore index c9ba827e9df..0a9c7fbcdf6 100644 --- a/if1632/.cvsignore +++ b/if1632/.cvsignore @@ -3,11 +3,9 @@ call16.s comm.spec.c ddeml.spec.c dispdib.spec.c -display.spec.c gdi.spec.c kernel.spec.c keyboard.spec.c -mouse.spec.c ole2conv.spec.c ole2nls.spec.c ole2prox.spec.c diff --git a/if1632/Makefile.in b/if1632/Makefile.in index 005b58033f5..4e7defd2617 100644 --- a/if1632/Makefile.in +++ b/if1632/Makefile.in @@ -9,11 +9,9 @@ SPEC_SRCS = \ comm.spec \ ddeml.spec \ dispdib.spec \ - display.spec \ gdi.spec \ kernel.spec \ keyboard.spec \ - mouse.spec \ ole2conv.spec \ ole2nls.spec \ ole2prox.spec \ diff --git a/if1632/builtin.c b/if1632/builtin.c index e6766fc68a3..6836d2820d9 100644 --- a/if1632/builtin.c +++ b/if1632/builtin.c @@ -26,10 +26,18 @@ DEFAULT_DEBUG_CHANNEL(module) +typedef struct +{ + LPVOID res_start; /* address of resource data */ + DWORD nr_res; + DWORD res_size; /* size of resource data */ +} BUILTIN16_RESOURCE; + typedef struct { const WIN16_DESCRIPTOR *descr; /* DLL descriptor */ int flags; /* flags (see below) */ + const BUILTIN16_RESOURCE *res; /* resource descriptor */ } BUILTIN16_DLL; /* DLL flags */ @@ -81,54 +89,57 @@ extern const WIN16_DESCRIPTOR WING_Descriptor; extern const WIN16_DESCRIPTOR WINSOCK_Descriptor; extern const WIN16_DESCRIPTOR WPROCS_Descriptor; +extern const BUILTIN16_RESOURCE display_ResourceDescriptor; +extern const BUILTIN16_RESOURCE mouse_ResourceDescriptor; + /* Table of all built-in DLLs */ static BUILTIN16_DLL BuiltinDLLs[] = { - { &KERNEL_Descriptor, 0 }, - { &USER_Descriptor, 0 }, - { &GDI_Descriptor, 0 }, - { &SYSTEM_Descriptor, DLL_FLAG_ALWAYS_USED }, - { &DISPLAY_Descriptor, DLL_FLAG_ALWAYS_USED }, - { &WPROCS_Descriptor, DLL_FLAG_ALWAYS_USED }, - { &WINDEBUG_Descriptor, DLL_FLAG_NOT_USED }, - { &AVIFILE_Descriptor, DLL_FLAG_NOT_USED }, - { &COMMDLG_Descriptor, DLL_FLAG_NOT_USED }, - { &COMPOBJ_Descriptor, DLL_FLAG_NOT_USED }, - { &DDEML_Descriptor, DLL_FLAG_NOT_USED }, - { &DISPDIB_Descriptor, 0 }, - { &KEYBOARD_Descriptor, 0 }, - { &COMM_Descriptor, 0 }, - { &LZEXPAND_Descriptor, 0 }, - { &MMSYSTEM_Descriptor, 0 }, - { &MOUSE_Descriptor, 0 }, - { &MSACM_Descriptor, 0 }, - { &MSVIDEO_Descriptor, 0 }, - { &OLE2CONV_Descriptor, DLL_FLAG_NOT_USED }, - { &OLE2DISP_Descriptor, DLL_FLAG_NOT_USED }, - { &OLE2NLS_Descriptor, DLL_FLAG_NOT_USED }, - { &OLE2PROX_Descriptor, DLL_FLAG_NOT_USED }, - { &OLE2THK_Descriptor, DLL_FLAG_NOT_USED }, - { &OLE2_Descriptor, DLL_FLAG_NOT_USED }, - { &OLECLI_Descriptor, DLL_FLAG_NOT_USED }, - { &OLESVR_Descriptor, DLL_FLAG_NOT_USED }, - { &RASAPI16_Descriptor, 0 }, - { &SHELL_Descriptor, 0 }, - { &SOUND_Descriptor, 0 }, - { &STORAGE_Descriptor, DLL_FLAG_NOT_USED }, - { &STRESS_Descriptor, 0 }, - { &TOOLHELP_Descriptor, 0 }, - { &TYPELIB_Descriptor, DLL_FLAG_NOT_USED }, - { &VER_Descriptor, 0 }, - { &W32SYS_Descriptor, DLL_FLAG_NOT_USED }, - { &WIN32S16_Descriptor, DLL_FLAG_NOT_USED }, - { &WIN87EM_Descriptor, DLL_FLAG_NOT_USED }, - { &WINASPI_Descriptor, 0 }, - { &WINEPS_Descriptor, DLL_FLAG_ALWAYS_USED }, - { &WING_Descriptor, 0 }, - { &WINSOCK_Descriptor, 0 }, + { &KERNEL_Descriptor, 0, NULL }, + { &USER_Descriptor, 0, NULL }, + { &GDI_Descriptor, 0, NULL }, + { &SYSTEM_Descriptor, DLL_FLAG_ALWAYS_USED, NULL }, + { &DISPLAY_Descriptor, DLL_FLAG_ALWAYS_USED, &display_ResourceDescriptor }, + { &WPROCS_Descriptor, DLL_FLAG_ALWAYS_USED, NULL }, + { &WINDEBUG_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &AVIFILE_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &COMMDLG_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &COMPOBJ_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &DDEML_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &DISPDIB_Descriptor, 0, NULL }, + { &KEYBOARD_Descriptor, 0, NULL }, + { &COMM_Descriptor, 0, NULL }, + { &LZEXPAND_Descriptor, 0, NULL }, + { &MMSYSTEM_Descriptor, 0, NULL }, + { &MOUSE_Descriptor, 0, &mouse_ResourceDescriptor }, + { &MSACM_Descriptor, 0, NULL }, + { &MSVIDEO_Descriptor, 0, NULL }, + { &OLE2CONV_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &OLE2DISP_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &OLE2NLS_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &OLE2PROX_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &OLE2THK_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &OLE2_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &OLECLI_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &OLESVR_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &RASAPI16_Descriptor, 0, NULL }, + { &SHELL_Descriptor, 0, NULL }, + { &SOUND_Descriptor, 0, NULL }, + { &STORAGE_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &STRESS_Descriptor, 0, NULL }, + { &TOOLHELP_Descriptor, 0, NULL }, + { &TYPELIB_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &VER_Descriptor, 0, NULL }, + { &W32SYS_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &WIN32S16_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &WIN87EM_Descriptor, DLL_FLAG_NOT_USED, NULL }, + { &WINASPI_Descriptor, 0, NULL }, + { &WINEPS_Descriptor, DLL_FLAG_ALWAYS_USED, NULL }, + { &WING_Descriptor, 0, NULL }, + { &WINSOCK_Descriptor, 0, NULL }, /* Last entry */ - { NULL, 0 } + { NULL, 0, NULL } }; /* Ordinal number for interrupt 0 handler in WPROCS.DLL */ @@ -141,27 +152,63 @@ static BUILTIN16_DLL BuiltinDLLs[] = * Load a built-in Win16 module. Helper function for BUILTIN_LoadModule * and BUILTIN_Init. */ -static HMODULE16 BUILTIN_DoLoadModule16( const WIN16_DESCRIPTOR *descr ) +static HMODULE16 BUILTIN_DoLoadModule16( const BUILTIN16_DLL *dll ) { NE_MODULE *pModule; - int minsize; + int minsize, res_off; SEGTABLEENTRY *pSegTable; + HMODULE16 hModule; - HMODULE16 hModule = GLOBAL_CreateBlock( GMEM_MOVEABLE, descr->module_start, - descr->module_size, 0, + if ( !dll->res ) + { + hModule = GLOBAL_CreateBlock( GMEM_MOVEABLE, dll->descr->module_start, + dll->descr->module_size, 0, FALSE, FALSE, FALSE, NULL ); if (!hModule) return 0; FarSetOwner16( hModule, hModule ); - TRACE("Built-in %s: hmodule=%04x\n", - descr->name, hModule ); pModule = (NE_MODULE *)GlobalLock16( hModule ); + } + else + { + ET_BUNDLE *bundle; + + hModule = GLOBAL_Alloc( GMEM_MOVEABLE, + dll->descr->module_size + dll->res->res_size, + 0, FALSE, FALSE, FALSE ); + if (!hModule) return 0; + FarSetOwner16( hModule, hModule ); + + pModule = (NE_MODULE *)GlobalLock16( hModule ); + res_off = ((NE_MODULE *)dll->descr->module_start)->res_table; + + memcpy( (LPBYTE)pModule, dll->descr->module_start, res_off ); + memcpy( (LPBYTE)pModule + res_off, dll->res->res_start, dll->res->res_size ); + memcpy( (LPBYTE)pModule + res_off + dll->res->res_size, + dll->descr->module_start + res_off, dll->descr->module_size - res_off ); + + /* Have to fix up various pModule-based near pointers. Ugh! */ + pModule->name_table += dll->res->res_size; + pModule->modref_table += dll->res->res_size; + pModule->import_table += dll->res->res_size; + pModule->entry_table += dll->res->res_size; + + for ( bundle = (ET_BUNDLE *)((LPBYTE)pModule + pModule->entry_table); + bundle->next; + bundle = (ET_BUNDLE *)((LPBYTE)pModule + bundle->next) ) + bundle->next += dll->res->res_size; + + /* NOTE: (Ab)use the hRsrcMap parameter for resource data pointer */ + pModule->hRsrcMap = dll->res->res_start; + } pModule->self = hModule; + TRACE( "Built-in %s: hmodule=%04x\n", dll->descr->name, hModule ); + /* Allocate the code segment */ pSegTable = NE_SEG_TABLE( pModule ); - pSegTable->hSeg = GLOBAL_CreateBlock( GMEM_FIXED, descr->code_start, + pSegTable->hSeg = GLOBAL_CreateBlock( GMEM_FIXED, dll->descr->code_start, pSegTable->minsize, hModule, TRUE, TRUE, FALSE, NULL ); if (!pSegTable->hSeg) return 0; @@ -176,11 +223,14 @@ static HMODULE16 BUILTIN_DoLoadModule16( const WIN16_DESCRIPTOR *descr ) hModule, FALSE, FALSE, FALSE ); if (!pSegTable->hSeg) return 0; if (pSegTable->minsize) memcpy( GlobalLock16( pSegTable->hSeg ), - descr->data_start, pSegTable->minsize); + dll->descr->data_start, pSegTable->minsize); if (pModule->heap_size) LocalInit16( GlobalHandleToSel16(pSegTable->hSeg), pSegTable->minsize, minsize ); + if (dll->res) + NE_InitResourceHandler(hModule); + NE_RegisterModule( pModule ); return hModule; } @@ -200,7 +250,7 @@ BOOL BUILTIN_Init(void) for (dll = BuiltinDLLs; dll->descr; dll++) { if (dll->flags & DLL_FLAG_ALWAYS_USED) - if (!BUILTIN_DoLoadModule16( dll->descr )) return FALSE; + if (!BUILTIN_DoLoadModule16( dll )) return FALSE; } /* Set interrupt vectors from entry points in WPROCS.DLL */ @@ -248,7 +298,7 @@ HMODULE16 BUILTIN_LoadModule( LPCSTR name, BOOL force ) if ((table->flags & DLL_FLAG_NOT_USED) && !force) return (HMODULE16)2; - return BUILTIN_DoLoadModule16( table->descr ); + return BUILTIN_DoLoadModule16( table ); } diff --git a/loader/ne/resource.c b/loader/ne/resource.c index 4c1fd447dee..763040cef33 100644 --- a/loader/ne/resource.c +++ b/loader/ne/resource.c @@ -189,6 +189,25 @@ HGLOBAL16 WINAPI NE_DefResourceHandler( HGLOBAL16 hMemObj, HMODULE16 hModule, { HANDLE fd; NE_MODULE* pModule = NE_GetPtr( hModule ); + if (pModule && (pModule->flags & NE_FFLAGS_BUILTIN)) + { + HGLOBAL16 handle; + WORD sizeShift = *(WORD *)((char *)pModule + pModule->res_table); + NE_NAMEINFO* pNameInfo = (NE_NAMEINFO*)((char*)pModule + hRsrc); + + if ( hMemObj ) + handle = GlobalReAlloc16( hMemObj, pNameInfo->length << sizeShift, 0 ); + else + handle = AllocResource16( hModule, hRsrc, 0 ); + + if ( handle ) + { + /* NOTE: hRsrcMap points to start of built-in resource data */ + memcpy( GlobalLock16( handle ), + pModule->hRsrcMap + (pNameInfo->offset << sizeShift), + pNameInfo->length << sizeShift ); + } + } if (pModule && (fd = NE_OpenFile( pModule )) >= 0) { HGLOBAL16 handle; diff --git a/windows/Makefile.in b/windows/Makefile.in index 83a61a040fe..a35785ddfce 100644 --- a/windows/Makefile.in +++ b/windows/Makefile.in @@ -14,7 +14,6 @@ C_SRCS = \ defwnd.c \ dialog.c \ dinput.c \ - display.c \ driver.c \ event.c \ focus.c \ @@ -23,7 +22,6 @@ C_SRCS = \ keyboard.c \ mdi.c \ message.c \ - mouse.c \ msgbox.c \ multimon.c \ nonclient.c \