Release 970928
Sat Sep 27 12:36:56 1997 Alexandre Julliard <julliard@lrc.epfl.ch>
* [if1632/relay.c]
Made Catch and Throw also save %si and %di (untested).
* [memory/selector.c]
Added check for %fs and %gs in SELECTOR_FreeBlock.
* [rc/winerc.c]
Generated files no longer depend on Wine includes.
Made .h generation optional.
* [tools/build.c] [loader/task.c]
Added CALL32_Init function.
Added possibility to pass arguments when using CALLTO16_regs_.
32-bit stack pointer is now saved on the 16-bit stack, instead of
using IF1632_Saved32_esp.
Removed CallTo32 callbacks.
* [tools/makedep.c] [*/Makefile.in]
Added support for directly generating dependencies for .y, .l and
.rc files. Modified the makefiles to use this feature.
* [windows/winproc.c] [if1632/thunk.c]
Use CALLTO16_regs to call window procedures.
Thu Sep 25 12:18:57 1997 Kristian Nielsen <kristian.nielsen@risoe.dk>
* [if1632/kernel.spec]
Changed entry for SwitchStackBack to remove arguments from stack
upon return (arguments left over from previous SwitchStackTo()).
Borland C++ 4.0 now compiles "Hello World" (but crashes after
outputting the .exe).
Wed Sep 24 13:54:44 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [files/directory.c]
SearchPath might get NULL buffer (empty LRU list in wordpad).
* [memory/selector.c]
Added SUnMapLS*.
* [loader/pe_image.c]
Be able to run executeables from non mmap()ble filesystems.
PE_LoadLibrary adds librarys loaded by another process to
its own modref list too.
* [windows/keyboard.c][include/accel.h][loader/resource.c]
Fixed accelerator leakage, use SDK defines/names.
* [graphics/env.c][misc/main.c]
Set/GetEnvironemnt have nothing to do with environment vars,
but with Printer Environment.
* [graphics/escape.c]
Escape32: map args back to segmented pointers.
* [windows/win.c]
WS_POPUP|WS_CHILD windows don't need a parent window (SDK).
Tue Sep 16 14:40:16 1997 Robert Wilhelm <robert@physiol.med.tu-muenchen.de>
* [if1632/crtdll.spec] [misc/crtdll.c]
Added signal().
diff --git a/graphics/escape.c b/graphics/escape.c
index b60b9a8..124f7e7 100644
--- a/graphics/escape.c
+++ b/graphics/escape.c
@@ -7,6 +7,8 @@
#include <stdio.h>
#include "windows.h"
#include "gdi.h"
+#include "heap.h"
+#include "ldt.h"
#include "dc.h"
INT16 WINAPI Escape16( HDC16 hdc, INT16 nEscape, INT16 cbInput,
@@ -20,13 +22,56 @@
INT32 WINAPI Escape32( HDC32 hdc, INT32 nEscape, INT32 cbInput,
LPVOID lpszInData, LPVOID lpvOutData )
{
- DC * dc = DC_GetDCPtr( hdc );
+ DC *dc = DC_GetDCPtr( hdc );
+ SEGPTR segin,segout;
+ INT32 ret;
+
if (!dc || !dc->funcs->pEscape) return 0;
+ segin = (SEGPTR)lpszInData;
+ segout = (SEGPTR)lpvOutData;
switch (nEscape) {
- case GETSCALINGFACTOR:
- return 1;
-
+ /* Escape(hdc,QUERYESCSUPPORT,LPINT32,NULL) */
+ case QUERYESCSUPPORT: {
+ LPINT16 x = (LPINT16)SEGPTR_NEW(INT16);
+ *x = *(INT32*)lpszInData;
+ segin = SEGPTR_GET(x);
+ break;
}
- return dc->funcs->pEscape( dc, nEscape, cbInput,
- (SEGPTR)lpszInData, (SEGPTR)lpvOutData );
+
+ /* Escape(hdc,GETSCALINGFACTOR,NULL,LPPOINT32) */
+ /* Escape(hdc,GETPHYSPAGESIZE,NULL,LPPOINT32) */
+ /* Escape(hdc,GETPRINTINGOFFSET,NULL,LPPOINT32) */
+
+ case GETSCALINGFACTOR:
+ case GETPHYSPAGESIZE:
+ case GETPRINTINGOFFSET:
+ segout = SEGPTR_GET(SEGPTR_NEW(POINT16));
+ break;
+ }
+ ret = dc->funcs->pEscape( dc, nEscape, cbInput, segin, segout );
+ switch(nEscape) {
+ case QUERYESCSUPPORT:
+ if (ret)
+ fprintf(stderr,"target DC implements Escape %d\n",nEscape);
+ SEGPTR_FREE(PTR_SEG_TO_LIN(segin));
+ break;
+ case GETSCALINGFACTOR:
+ case GETPRINTINGOFFSET:
+ case GETPHYSPAGESIZE: {
+ LPPOINT16 x = (LPPOINT16)PTR_SEG_TO_LIN(segout);
+ CONV_POINT16TO32(x,(LPPOINT32)lpvOutData);
+ SEGPTR_FREE(x);
+ break;
+ }
+ default:
+ break;
+ }
+ return ret;
+}
+
+INT32 WINAPI ExtEscape32(HDC32 hdc,INT32 nEscape,INT32 cbInput,LPCSTR x,INT32 cbOutput,LPSTR out) {
+ fprintf(stderr,"ExtEscape32(0x%04x,0x%x,%d,%s,%d,%p),stub!\n",
+ hdc,nEscape,cbInput,x,cbOutput,out
+ );
+ return 1;
}