Release 950109
Thu Jan 5 13:37:42 1995 Cameron Heide (heide@ee.ualberta.ca)
* [memory/global.c]
GlobalCompact should now return the correct value when the
largest run of free blocks includes the last block.
* [windows/mdi.c]
Tiling and cascading windows without any MDI children should
no longer crash (assuming no-op is the correct thing to do).
Sun Jan 1 23:30:25 1995 Fons Botman <botman@rabo.nl>
* [objects/font.c]
GetTextExtentPoint: fixed debug output, str is counted string, not
zero terminated.
* [if1632/relay.c]
DLLRelay: when debugging_stack got segv, added upper bound for
stack dump.
diff --git a/ANNOUNCE b/ANNOUNCE
index 7212bee..b2255e5 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,12 +1,13 @@
-This is release 941227 of Wine the MS Windows emulator. This is still a
+This is release 950109 of Wine the MS Windows emulator. This is still a
developer's only release. There are many bugs and many unimplemented API
features. Most applications still do not work.
Patches should be submitted to "wine-new@amscons.com". Please don't forget
to include a ChangeLog entry. I'll try to make a new release every Sunday.
-WHAT'S NEW with Wine-941227: (see ChangeLog for details)
- - Better BitBlt()
+WHAT'S NEW with Wine-950109: (see ChangeLog for details)
+ - Compiling with -Wall. Don't panic if you get many warnings...
+ - Better StretchBlt()
- Lots of bug fixes
See the README file in the distribution for installation instructions.
@@ -15,11 +16,11 @@
the release is available at the ftp sites. The sources will be available
from the following locations:
- sunsite.unc.edu:/pub/Linux/ALPHA/wine/Wine-941227.tar.gz
- aris.com:/pub/linux/ALPHA/Wine/development/Wine-941227.tar.gz
- tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-941227.tar.gz
- ftp.funet.fi:/pub/OS/Linux/ALPHA/Wine/Wine-941227.tar.gz
- ftp.wonderland.org:/Wine/Wine-941227.tar.gz
+ sunsite.unc.edu:/pub/Linux/ALPHA/wine/Wine-950109.tar.gz
+ aris.com:/pub/linux/ALPHA/Wine/development/Wine-950109.tar.gz
+ tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-950109.tar.gz
+ ftp.funet.fi:/pub/OS/Linux/ALPHA/Wine/Wine-950109.tar.gz
+ ftp.wonderland.org:/Wine/Wine-950109.tar.gz
If you submitted a patch, please check to make sure it has been
included in the new release.
diff --git a/ChangeLog b/ChangeLog
index a2a0da4..2ebc86d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+Thu Jan 5 13:37:42 1995 Cameron Heide (heide@ee.ualberta.ca)
+
+ * [memory/global.c]
+ GlobalCompact should now return the correct value when the
+ largest run of free blocks includes the last block.
+
+ * [windows/mdi.c]
+ Tiling and cascading windows without any MDI children should
+ no longer crash (assuming no-op is the correct thing to do).
+
+Sun Jan 1 23:30:25 1995 Fons Botman <botman@rabo.nl>
+
+ * objects/font.c (GetTextExtentPoint):
+ Fixed debug output, str is counted string, not zero terminated.
+
+ * if1632/relay.c (DLLRelay):
+ When debugging_stack got segv, added upper bound for stack dump.
+
+----------------------------------------------------------------------
Tue Dec 27 13:35:16 1994 Alexandre Julliard (julliard@lamisun.epfl.ch)
* [*/Imakefile]
diff --git a/Imakefile b/Imakefile
index ea60138..f5e2fad 100644
--- a/Imakefile
+++ b/Imakefile
@@ -7,6 +7,7 @@
#endif
DEFINES = AutoDefines -DUSE_READLINE -DWINESTAT
+CDEBUGFLAGS = -O2 -Wall
/*
* This is the second try at using Imakefiles. There are probably many
diff --git a/controls/button.c b/controls/button.c
index 54c5df0..32b8fed 100644
--- a/controls/button.c
+++ b/controls/button.c
@@ -367,7 +367,7 @@
((wndPtr->dwStyle & 0x0f) == BS_AUTORADIOBUTTON)) y += checkBoxHeight;
else if (infoPtr->state & BUTTON_3STATE) y += 2 * checkBoxHeight;
GRAPH_DrawBitmap( hDC, hbitmapCheckBoxes, rc.left, rc.top + delta,
- x, y, checkBoxWidth, checkBoxHeight, SRCCOPY );
+ x, y, checkBoxWidth, checkBoxHeight );
rc.left += checkBoxWidth + tm.tmAveCharWidth / 2;
if (action == ODA_DRAWENTIRE)
diff --git a/controls/combo.c b/controls/combo.c
index b5c9186..34cece2 100644
--- a/controls/combo.c
+++ b/controls/combo.c
@@ -16,7 +16,6 @@
#include "user.h"
#include "heap.h"
#include "win.h"
-#include "prototypes.h"
#include "stddebug.h"
/* #define DEBUG_COMBO */
#include "debug.h"
@@ -271,8 +270,7 @@
GetObject(hComboBit, sizeof(BITMAP), (LPSTR)&bm);
GRAPH_DrawBitmap( hDC, hComboBit,
rect.right - bm.bmWidth, 0,
- 0, 0, bm.bmWidth, bm.bmHeight,
- SRCCOPY );
+ 0, 0, bm.bmWidth, bm.bmHeight );
}
EndPaint(hwnd, &paintstruct);
lphc = ComboGetStorageHeader(hwnd);
diff --git a/controls/desktop.c b/controls/desktop.c
index e075bee..7a7d545 100644
--- a/controls/desktop.c
+++ b/controls/desktop.c
@@ -95,7 +95,7 @@
GRAPH_DrawBitmap( hdc, infoPtr->hbitmapWallPaper,
x, y, 0, 0,
infoPtr->bitmapSize.cx,
- infoPtr->bitmapSize.cy, SRCCOPY );
+ infoPtr->bitmapSize.cy );
}
else
{
@@ -104,8 +104,7 @@
if (x < 0) x = 0;
if (y < 0) y = 0;
GRAPH_DrawBitmap( hdc, infoPtr->hbitmapWallPaper, x, y, 0, 0,
- infoPtr->bitmapSize.cx, infoPtr->bitmapSize.cy,
- SRCCOPY );
+ infoPtr->bitmapSize.cx, infoPtr->bitmapSize.cy );
}
}
diff --git a/controls/listbox.c b/controls/listbox.c
index 86c3940..96a194f 100644
--- a/controls/listbox.c
+++ b/controls/listbox.c
@@ -1091,7 +1091,7 @@
int ListBoxDirectory(HWND hwnd, UINT attrib, LPSTR filespec)
{
struct dosdirent *dp;
- int x, wRet;
+ int x, wRet = LB_OKAY;
BOOL OldFlag;
char temp[256];
LPHEADLIST lphl;
diff --git a/controls/menu.c b/controls/menu.c
index 3ac8946..0647eaf 100644
--- a/controls/menu.c
+++ b/controls/menu.c
@@ -1,9 +1,9 @@
/*
- * Menus functions
-static char RCSId[] = "$Id$";
-static char Copyright[] = "Copyright Martin Ayotte, 1993";
-static char Copyright2[] = "Copyright Alexandre Julliard, 1994";
-*/
+ * Menu functions
+ *
+ * Copyright 1993 Martin Ayotte
+ * Copyright 1994 Alexandre Julliard
+ */
/*
* Note: the style MF_MOUSESELECT is used to mark popup items that
@@ -18,7 +18,6 @@
#include "windows.h"
#include "syscolor.h"
#include "sysmetrics.h"
-#include "prototypes.h"
#include "menu.h"
#include "user.h"
#include "win.h"
@@ -482,15 +481,13 @@
GRAPH_DrawBitmap(hdc, lpitem->hCheckBit ? lpitem->hCheckBit :
hStdCheck, rect.left,
(rect.top+rect.bottom-check_bitmap_height) / 2,
- 0, 0, check_bitmap_width, check_bitmap_height,
- SRCCOPY);
+ 0, 0, check_bitmap_width, check_bitmap_height );
}
else if (lpitem->hUnCheckBit != 0) /* Not checked */
{
GRAPH_DrawBitmap(hdc, lpitem->hUnCheckBit, rect.left,
(rect.top+rect.bottom-check_bitmap_height) / 2,
- 0, 0, check_bitmap_width, check_bitmap_height,
- SRCCOPY);
+ 0, 0, check_bitmap_width, check_bitmap_height );
}
/* Draw the popup-menu arrow */
@@ -500,8 +497,7 @@
GRAPH_DrawBitmap( hdc, hStdMnArrow,
rect.right-arrow_bitmap_width-1,
(rect.top+rect.bottom-arrow_bitmap_height) / 2,
- 0, 0, arrow_bitmap_width, arrow_bitmap_height,
- SRCCOPY );
+ 0, 0, arrow_bitmap_width, arrow_bitmap_height );
}
rect.left += check_bitmap_width;
@@ -513,8 +509,7 @@
if (lpitem->item_flags & MF_BITMAP)
{
GRAPH_DrawBitmap( hdc, (HBITMAP)lpitem->hText, rect.left, rect.top,
- 0, 0, rect.right-rect.left, rect.bottom-rect.top,
- SRCCOPY );
+ 0, 0, rect.right-rect.left, rect.bottom-rect.top );
return;
}
/* No bitmap - process text if present */
@@ -1018,7 +1013,7 @@
{
POPUPMENU *menu;
MENUITEM *item;
- HMENU hsubmenu;
+ HMENU hsubmenu = 0;
WORD id;
if (!hmenu) return FALSE; /* Outside all menus */
diff --git a/controls/scroll.c b/controls/scroll.c
index e28347a..03de3c8 100644
--- a/controls/scroll.c
+++ b/controls/scroll.c
@@ -163,6 +163,9 @@
GetClientRect( hwnd, lprect );
vertical = ((wndPtr->dwStyle & SBS_VERT) != 0);
break;
+
+ default:
+ return FALSE;
}
if (vertical) pixels = lprect->bottom - lprect->top;
@@ -267,6 +270,7 @@
HBITMAP hbmpPrev = SelectObject( hdcMem, vertical ?
TOP_ARROW(infoPtr->flags, top_pressed)
: LEFT_ARROW(infoPtr->flags, top_pressed));
+ SetStretchBltMode( hdc, STRETCH_DELETESCANS );
StretchBlt( hdc, rect->left, rect->top,
vertical ? rect->right-rect->left : arrowSize+1,
vertical ? arrowSize+1 : rect->bottom-rect->top,
@@ -385,7 +389,7 @@
if (!thumbPos) /* No thumb to draw */
{
PatBlt( hdc, r.left+1, r.top+1, r.right - r.left - 2,
- r.bottom - r.top - 2, SRCCOPY );
+ r.bottom - r.top - 2, PATCOPY );
return;
}
@@ -394,12 +398,12 @@
PatBlt( hdc, r.left + 1, r.top + 1,
r.right - r.left - 2,
thumbPos - arrowSize,
- top_selected ? NOTSRCCOPY : SRCCOPY );
+ top_selected ? 0x0f0000 : PATCOPY );
r.top += thumbPos - arrowSize;
PatBlt( hdc, r.left + 1, r.top + SYSMETRICS_CYHSCROLL + 1,
r.right - r.left - 2,
r.bottom - r.top - SYSMETRICS_CYHSCROLL - 2,
- bottom_selected ? NOTSRCCOPY : SRCCOPY );
+ bottom_selected ? 0x0f0000 : PATCOPY );
r.bottom = r.top + SYSMETRICS_CYHSCROLL + 1;
}
else /* horizontal */
@@ -407,12 +411,12 @@
PatBlt( hdc, r.left + 1, r.top + 1,
thumbPos - arrowSize,
r.bottom - r.top - 2,
- top_selected ? NOTSRCCOPY : SRCCOPY );
+ top_selected ? 0x0f0000 : PATCOPY );
r.left += thumbPos - arrowSize;
PatBlt( hdc, r.left + SYSMETRICS_CYHSCROLL + 1, r.top + 1,
r.right - r.left - SYSMETRICS_CYHSCROLL - 2,
r.bottom - r.top - 2,
- bottom_selected ? NOTSRCCOPY : SRCCOPY );
+ bottom_selected ? 0x0f0000 : PATCOPY );
r.right = r.left + SYSMETRICS_CXVSCROLL + 1;
}
diff --git a/controls/static.c b/controls/static.c
index 9089095..85345d8 100644
--- a/controls/static.c
+++ b/controls/static.c
@@ -211,6 +211,9 @@
case SS_LEFTNOWORDWRAP:
wFormat = DT_LEFT | DT_SINGLELINE | DT_EXPANDTABS | DT_VCENTER;
break;
+
+ default:
+ return;
}
if (style & SS_NOPREFIX)
@@ -247,6 +250,9 @@
case SS_WHITERECT:
hBrush = CreateSolidBrush(color_window);
break;
+
+ default:
+ return;
}
FillRect( hdc, &rc, hBrush );
}
@@ -274,6 +280,9 @@
case SS_WHITEFRAME:
hPen = CreatePen(PS_SOLID, 1, color_window);
break;
+
+ default:
+ return;
}
hBrush = CreateSolidBrush(color_window);
diff --git a/debugger/hash.c b/debugger/hash.c
index 600cf34..cba6ce2 100644
--- a/debugger/hash.c
+++ b/debugger/hash.c
@@ -11,7 +11,6 @@
#include <sys/types.h>
#include <neexe.h>
#include <segmem.h>
-#include <prototypes.h>
#include "selectors.h"
#include <wine.h>
#include <dlls.h>
diff --git a/debugger/readline/editline.c b/debugger/readline/editline.c
index 31a846e..cd20bbb 100644
--- a/debugger/readline/editline.c
+++ b/debugger/readline/editline.c
@@ -555,7 +555,7 @@
if ((c = *pat) == '\0')
return *text == '\0';
for ( ; *text; text++)
- if (*text == c && strncmp(text, pat, len) == 0)
+ if ((CHAR)*text == c && strncmp(text, pat, len) == 0)
return 0;
return 1;
}
diff --git a/if1632/callback.c b/if1632/callback.c
index aef1d53..a38d13b 100644
--- a/if1632/callback.c
+++ b/if1632/callback.c
@@ -195,7 +195,7 @@
}
else if (IS_16_BIT_ADDRESS(func))
{
- dprintf_callback(stddeb, "CallWindowProc // 16bit func=%p !\n",
+ dprintf_callback(stddeb, "CallWindowProc // 16bit func=%08x !\n",
(unsigned int) func);
PushOn16( CALLBACK_SIZE_WORD, hwnd );
PushOn16( CALLBACK_SIZE_WORD, message );
diff --git a/if1632/relay.c b/if1632/relay.c
index 5a5b6cb..e286bb8 100644
--- a/if1632/relay.c
+++ b/if1632/relay.c
@@ -23,8 +23,8 @@
#include "dlls.h"
#include "options.h"
#include "stddebug.h"
-/* #define DEBUG_RELAY /* */
-/* #define DEBUG_STACK /* */
+/* #define DEBUG_RELAY */
+/* #define DEBUG_STACK */
#include "debug.h"
#if 0
@@ -129,7 +129,9 @@
if(debugging_stack)
{
unsigned short *stack_p = (unsigned short *) seg_off;
- for (i = 0; i < 24; i++, stack_p++)
+ /* FIXME: Is there an end-of-stack-pointer somewhere ? */
+ int n = min(24, (0x10000 - (seg_off & 0xffff)) / sizeof(*stack_p));
+ for (i = 0; i < n; i++, stack_p++)
{
printf("%04x ", *stack_p);
if ((i & 7) == 7)
diff --git a/include/bitmap.h b/include/bitmap.h
index 7d730b7..9bac249 100644
--- a/include/bitmap.h
+++ b/include/bitmap.h
@@ -4,19 +4,19 @@
* Copyright 1993, 1994 Alexandre Julliard
*/
-#ifndef BITMAP_H
-#define BITMAP_H
+#ifndef __WINE_BITMAP_H
+#define __WINE_BITMAP_H
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include "windows.h"
+#include "gdi.h"
- /* objects/bitmap.c */
-extern BOOL BITMAP_Init(void);
-
- /* objects/dib.c */
-extern int DIB_GetImageWidthBytes( int width, int depth );
-extern int DIB_BitmapInfoSize( BITMAPINFO * info, WORD coloruse );
+ /* GDI logical bitmap object */
+typedef struct
+{
+ GDIOBJHDR header;
+ BITMAP bitmap;
+ Pixmap pixmap;
+ SIZE size; /* For SetBitmapDimension() */
+} BITMAPOBJ;
/* GCs used for B&W and color bitmap operations */
extern GC BITMAP_monoGC, BITMAP_colorGC;
@@ -32,4 +32,15 @@
(width), (height), 32, width_bytes ); \
}
-#endif /* BITMAP_H */
+ /* objects/bitmap.c */
+extern BOOL BITMAP_Init(void);
+extern int BITMAP_GetObject( BITMAPOBJ * bmp, int count, LPSTR buffer );
+extern BOOL BITMAP_DeleteObject( HBITMAP hbitmap, BITMAPOBJ * bitmap );
+extern HBITMAP BITMAP_SelectObject( HDC hdc, DC * dc, HBITMAP hbitmap,
+ BITMAPOBJ * bmp );
+
+ /* objects/dib.c */
+extern int DIB_GetImageWidthBytes( int width, int depth );
+extern int DIB_BitmapInfoSize( BITMAPINFO * info, WORD coloruse );
+
+#endif /* __WINE_BITMAP_H */
diff --git a/include/brush.h b/include/brush.h
new file mode 100644
index 0000000..3f41e59
--- /dev/null
+++ b/include/brush.h
@@ -0,0 +1,29 @@
+/*
+ * GDI brush definitions
+ *
+ * Copyright 1994 Alexandre Julliard
+ */
+
+#ifndef __WINE_BRUSH_H
+#define __WINE_BRUSH_H
+
+#include "gdi.h"
+
+#pragma pack(1)
+
+ /* GDI logical brush object */
+typedef struct
+{
+ GDIOBJHDR header;
+ LOGBRUSH logbrush WINE_PACKED;
+} BRUSHOBJ;
+
+#pragma pack(4)
+
+extern BOOL BRUSH_Init(void);
+extern int BRUSH_GetObject( BRUSHOBJ * brush, int count, LPSTR buffer );
+extern BOOL BRUSH_DeleteObject( HBRUSH hbrush, BRUSHOBJ * brush );
+extern HBRUSH BRUSH_SelectObject( HDC hdc, DC * dc, HBRUSH hbrush,
+ BRUSHOBJ * brush );
+
+#endif /* __WINE_BRUSH_H */
diff --git a/include/dc.h b/include/dc.h
index 5723fa8..7e3874a 100644
--- a/include/dc.h
+++ b/include/dc.h
@@ -1,12 +1,20 @@
+/*
+ * GDI Device Context function prototypes
+ *
+ * Copyright 1994 Alexandre Julliard
+ *
+ */
+
#ifndef __WINE_DC_H
#define __WINE_DC_H
#include "gdi.h"
extern void DC_InitDC( HDC hdc );
-extern int DC_SetupGCForBrush( DC * dc );
-extern int DC_SetupGCForPen( DC * dc );
-extern int DC_SetupGCForText( DC * dc );
+extern BOOL DC_SetupGCForPatBlt( DC * dc, GC gc, BOOL fMapColors );
+extern BOOL DC_SetupGCForBrush( DC * dc );
+extern BOOL DC_SetupGCForPen( DC * dc );
+extern BOOL DC_SetupGCForText( DC * dc );
extern const int DC_XROPfunction[];
diff --git a/include/debug.h b/include/debug.h
index 61713ce..03bf4a2 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -7,6 +7,7 @@
#ifdef DEBUG_NONE_EXT
#undef DEBUG_ACCEL
+#undef DEBUG_BITBLT
#undef DEBUG_BITMAP
#undef DEBUG_CALLBACK
#undef DEBUG_CARET
@@ -76,6 +77,7 @@
#ifdef DEBUG_ALL_EXT
#define DEBUG_ACCEL
+#define DEBUG_BITBLT
#define DEBUG_BITMAP
#define DEBUG_CALLBACK
#define DEBUG_CARET
@@ -151,6 +153,11 @@
#else
0,
#endif
+#ifdef DEBUG_BITBLT
+ 1,
+#else
+ 0,
+#endif
#ifdef DEBUG_BITMAP
1,
#else
@@ -497,8 +504,21 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_bitmap if(debug_msg_enabled[1]) fprintf
-#define debugging_bitmap debug_msg_enabled[1]
+#define dprintf_bitblt if(debug_msg_enabled[1]) fprintf
+#define debugging_bitblt debug_msg_enabled[1]
+#else
+#ifdef DEBUG_BITBLT
+#define dprintf_bitblt fprintf
+#define debugging_bitblt 1
+#else
+#define dprintf_bitblt
+#define debugging_bitblt 0
+#endif
+#endif
+
+#ifdef DEBUG_RUNTIME
+#define dprintf_bitmap if(debug_msg_enabled[2]) fprintf
+#define debugging_bitmap debug_msg_enabled[2]
#else
#ifdef DEBUG_BITMAP
#define dprintf_bitmap fprintf
@@ -510,8 +530,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_callback if(debug_msg_enabled[2]) fprintf
-#define debugging_callback debug_msg_enabled[2]
+#define dprintf_callback if(debug_msg_enabled[3]) fprintf
+#define debugging_callback debug_msg_enabled[3]
#else
#ifdef DEBUG_CALLBACK
#define dprintf_callback fprintf
@@ -523,8 +543,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_caret if(debug_msg_enabled[3]) fprintf
-#define debugging_caret debug_msg_enabled[3]
+#define dprintf_caret if(debug_msg_enabled[4]) fprintf
+#define debugging_caret debug_msg_enabled[4]
#else
#ifdef DEBUG_CARET
#define dprintf_caret fprintf
@@ -536,8 +556,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_catch if(debug_msg_enabled[4]) fprintf
-#define debugging_catch debug_msg_enabled[4]
+#define dprintf_catch if(debug_msg_enabled[5]) fprintf
+#define debugging_catch debug_msg_enabled[5]
#else
#ifdef DEBUG_CATCH
#define dprintf_catch fprintf
@@ -549,8 +569,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_cdaudio if(debug_msg_enabled[5]) fprintf
-#define debugging_cdaudio debug_msg_enabled[5]
+#define dprintf_cdaudio if(debug_msg_enabled[6]) fprintf
+#define debugging_cdaudio debug_msg_enabled[6]
#else
#ifdef DEBUG_CDAUDIO
#define dprintf_cdaudio fprintf
@@ -562,8 +582,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_class if(debug_msg_enabled[6]) fprintf
-#define debugging_class debug_msg_enabled[6]
+#define dprintf_class if(debug_msg_enabled[7]) fprintf
+#define debugging_class debug_msg_enabled[7]
#else
#ifdef DEBUG_CLASS
#define dprintf_class fprintf
@@ -575,8 +595,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_clipboard if(debug_msg_enabled[7]) fprintf
-#define debugging_clipboard debug_msg_enabled[7]
+#define dprintf_clipboard if(debug_msg_enabled[8]) fprintf
+#define debugging_clipboard debug_msg_enabled[8]
#else
#ifdef DEBUG_CLIPBOARD
#define dprintf_clipboard fprintf
@@ -588,8 +608,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_clipping if(debug_msg_enabled[8]) fprintf
-#define debugging_clipping debug_msg_enabled[8]
+#define dprintf_clipping if(debug_msg_enabled[9]) fprintf
+#define debugging_clipping debug_msg_enabled[9]
#else
#ifdef DEBUG_CLIPPING
#define dprintf_clipping fprintf
@@ -601,8 +621,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_combo if(debug_msg_enabled[9]) fprintf
-#define debugging_combo debug_msg_enabled[9]
+#define dprintf_combo if(debug_msg_enabled[10]) fprintf
+#define debugging_combo debug_msg_enabled[10]
#else
#ifdef DEBUG_COMBO
#define dprintf_combo fprintf
@@ -614,8 +634,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_comm if(debug_msg_enabled[10]) fprintf
-#define debugging_comm debug_msg_enabled[10]
+#define dprintf_comm if(debug_msg_enabled[11]) fprintf
+#define debugging_comm debug_msg_enabled[11]
#else
#ifdef DEBUG_COMM
#define dprintf_comm fprintf
@@ -627,8 +647,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_cursor if(debug_msg_enabled[11]) fprintf
-#define debugging_cursor debug_msg_enabled[11]
+#define dprintf_cursor if(debug_msg_enabled[12]) fprintf
+#define debugging_cursor debug_msg_enabled[12]
#else
#ifdef DEBUG_CURSOR
#define dprintf_cursor fprintf
@@ -640,8 +660,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_dc if(debug_msg_enabled[12]) fprintf
-#define debugging_dc debug_msg_enabled[12]
+#define dprintf_dc if(debug_msg_enabled[13]) fprintf
+#define debugging_dc debug_msg_enabled[13]
#else
#ifdef DEBUG_DC
#define dprintf_dc fprintf
@@ -653,8 +673,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_dialog if(debug_msg_enabled[13]) fprintf
-#define debugging_dialog debug_msg_enabled[13]
+#define dprintf_dialog if(debug_msg_enabled[14]) fprintf
+#define debugging_dialog debug_msg_enabled[14]
#else
#ifdef DEBUG_DIALOG
#define dprintf_dialog fprintf
@@ -666,8 +686,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_dll if(debug_msg_enabled[14]) fprintf
-#define debugging_dll debug_msg_enabled[14]
+#define dprintf_dll if(debug_msg_enabled[15]) fprintf
+#define debugging_dll debug_msg_enabled[15]
#else
#ifdef DEBUG_DLL
#define dprintf_dll fprintf
@@ -679,8 +699,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_dosfs if(debug_msg_enabled[15]) fprintf
-#define debugging_dosfs debug_msg_enabled[15]
+#define dprintf_dosfs if(debug_msg_enabled[16]) fprintf
+#define debugging_dosfs debug_msg_enabled[16]
#else
#ifdef DEBUG_DOSFS
#define dprintf_dosfs fprintf
@@ -692,8 +712,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_driver if(debug_msg_enabled[16]) fprintf
-#define debugging_driver debug_msg_enabled[16]
+#define dprintf_driver if(debug_msg_enabled[17]) fprintf
+#define debugging_driver debug_msg_enabled[17]
#else
#ifdef DEBUG_DRIVER
#define dprintf_driver fprintf
@@ -705,8 +725,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_edit if(debug_msg_enabled[17]) fprintf
-#define debugging_edit debug_msg_enabled[17]
+#define dprintf_edit if(debug_msg_enabled[18]) fprintf
+#define debugging_edit debug_msg_enabled[18]
#else
#ifdef DEBUG_EDIT
#define dprintf_edit fprintf
@@ -718,8 +738,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_enum if(debug_msg_enabled[18]) fprintf
-#define debugging_enum debug_msg_enabled[18]
+#define dprintf_enum if(debug_msg_enabled[19]) fprintf
+#define debugging_enum debug_msg_enabled[19]
#else
#ifdef DEBUG_ENUM
#define dprintf_enum fprintf
@@ -731,8 +751,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_event if(debug_msg_enabled[19]) fprintf
-#define debugging_event debug_msg_enabled[19]
+#define dprintf_event if(debug_msg_enabled[20]) fprintf
+#define debugging_event debug_msg_enabled[20]
#else
#ifdef DEBUG_EVENT
#define dprintf_event fprintf
@@ -744,8 +764,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_exec if(debug_msg_enabled[20]) fprintf
-#define debugging_exec debug_msg_enabled[20]
+#define dprintf_exec if(debug_msg_enabled[21]) fprintf
+#define debugging_exec debug_msg_enabled[21]
#else
#ifdef DEBUG_EXEC
#define dprintf_exec fprintf
@@ -757,8 +777,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_file if(debug_msg_enabled[21]) fprintf
-#define debugging_file debug_msg_enabled[21]
+#define dprintf_file if(debug_msg_enabled[22]) fprintf
+#define debugging_file debug_msg_enabled[22]
#else
#ifdef DEBUG_FILE
#define dprintf_file fprintf
@@ -770,8 +790,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_fixup if(debug_msg_enabled[22]) fprintf
-#define debugging_fixup debug_msg_enabled[22]
+#define dprintf_fixup if(debug_msg_enabled[23]) fprintf
+#define debugging_fixup debug_msg_enabled[23]
#else
#ifdef DEBUG_FIXUP
#define dprintf_fixup fprintf
@@ -783,8 +803,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_font if(debug_msg_enabled[23]) fprintf
-#define debugging_font debug_msg_enabled[23]
+#define dprintf_font if(debug_msg_enabled[24]) fprintf
+#define debugging_font debug_msg_enabled[24]
#else
#ifdef DEBUG_FONT
#define dprintf_font fprintf
@@ -796,8 +816,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_gdi if(debug_msg_enabled[24]) fprintf
-#define debugging_gdi debug_msg_enabled[24]
+#define dprintf_gdi if(debug_msg_enabled[25]) fprintf
+#define debugging_gdi debug_msg_enabled[25]
#else
#ifdef DEBUG_GDI
#define dprintf_gdi fprintf
@@ -809,8 +829,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_graphics if(debug_msg_enabled[25]) fprintf
-#define debugging_graphics debug_msg_enabled[25]
+#define dprintf_graphics if(debug_msg_enabled[26]) fprintf
+#define debugging_graphics debug_msg_enabled[26]
#else
#ifdef DEBUG_GRAPHICS
#define dprintf_graphics fprintf
@@ -822,8 +842,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_heap if(debug_msg_enabled[26]) fprintf
-#define debugging_heap debug_msg_enabled[26]
+#define dprintf_heap if(debug_msg_enabled[27]) fprintf
+#define debugging_heap debug_msg_enabled[27]
#else
#ifdef DEBUG_HEAP
#define dprintf_heap fprintf
@@ -835,8 +855,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_icon if(debug_msg_enabled[27]) fprintf
-#define debugging_icon debug_msg_enabled[27]
+#define dprintf_icon if(debug_msg_enabled[28]) fprintf
+#define debugging_icon debug_msg_enabled[28]
#else
#ifdef DEBUG_ICON
#define dprintf_icon fprintf
@@ -848,8 +868,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_int if(debug_msg_enabled[28]) fprintf
-#define debugging_int debug_msg_enabled[28]
+#define dprintf_int if(debug_msg_enabled[29]) fprintf
+#define debugging_int debug_msg_enabled[29]
#else
#ifdef DEBUG_INT
#define dprintf_int fprintf
@@ -861,8 +881,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_key if(debug_msg_enabled[29]) fprintf
-#define debugging_key debug_msg_enabled[29]
+#define dprintf_key if(debug_msg_enabled[30]) fprintf
+#define debugging_key debug_msg_enabled[30]
#else
#ifdef DEBUG_KEY
#define dprintf_key fprintf
@@ -874,8 +894,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_keyboard if(debug_msg_enabled[30]) fprintf
-#define debugging_keyboard debug_msg_enabled[30]
+#define dprintf_keyboard if(debug_msg_enabled[31]) fprintf
+#define debugging_keyboard debug_msg_enabled[31]
#else
#ifdef DEBUG_KEYBOARD
#define dprintf_keyboard fprintf
@@ -887,8 +907,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_ldt if(debug_msg_enabled[31]) fprintf
-#define debugging_ldt debug_msg_enabled[31]
+#define dprintf_ldt if(debug_msg_enabled[32]) fprintf
+#define debugging_ldt debug_msg_enabled[32]
#else
#ifdef DEBUG_LDT
#define dprintf_ldt fprintf
@@ -900,8 +920,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_listbox if(debug_msg_enabled[32]) fprintf
-#define debugging_listbox debug_msg_enabled[32]
+#define dprintf_listbox if(debug_msg_enabled[33]) fprintf
+#define debugging_listbox debug_msg_enabled[33]
#else
#ifdef DEBUG_LISTBOX
#define dprintf_listbox fprintf
@@ -913,8 +933,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mci if(debug_msg_enabled[33]) fprintf
-#define debugging_mci debug_msg_enabled[33]
+#define dprintf_mci if(debug_msg_enabled[34]) fprintf
+#define debugging_mci debug_msg_enabled[34]
#else
#ifdef DEBUG_MCI
#define dprintf_mci fprintf
@@ -926,8 +946,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mcianim if(debug_msg_enabled[34]) fprintf
-#define debugging_mcianim debug_msg_enabled[34]
+#define dprintf_mcianim if(debug_msg_enabled[35]) fprintf
+#define debugging_mcianim debug_msg_enabled[35]
#else
#ifdef DEBUG_MCIANIM
#define dprintf_mcianim fprintf
@@ -939,8 +959,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mciwave if(debug_msg_enabled[35]) fprintf
-#define debugging_mciwave debug_msg_enabled[35]
+#define dprintf_mciwave if(debug_msg_enabled[36]) fprintf
+#define debugging_mciwave debug_msg_enabled[36]
#else
#ifdef DEBUG_MCIWAVE
#define dprintf_mciwave fprintf
@@ -952,8 +972,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mdi if(debug_msg_enabled[36]) fprintf
-#define debugging_mdi debug_msg_enabled[36]
+#define dprintf_mdi if(debug_msg_enabled[37]) fprintf
+#define debugging_mdi debug_msg_enabled[37]
#else
#ifdef DEBUG_MDI
#define dprintf_mdi fprintf
@@ -965,8 +985,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_menu if(debug_msg_enabled[37]) fprintf
-#define debugging_menu debug_msg_enabled[37]
+#define dprintf_menu if(debug_msg_enabled[38]) fprintf
+#define debugging_menu debug_msg_enabled[38]
#else
#ifdef DEBUG_MENU
#define dprintf_menu fprintf
@@ -978,8 +998,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_menucalc if(debug_msg_enabled[38]) fprintf
-#define debugging_menucalc debug_msg_enabled[38]
+#define dprintf_menucalc if(debug_msg_enabled[39]) fprintf
+#define debugging_menucalc debug_msg_enabled[39]
#else
#ifdef DEBUG_MENUCALC
#define dprintf_menucalc fprintf
@@ -991,8 +1011,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_message if(debug_msg_enabled[39]) fprintf
-#define debugging_message debug_msg_enabled[39]
+#define dprintf_message if(debug_msg_enabled[40]) fprintf
+#define debugging_message debug_msg_enabled[40]
#else
#ifdef DEBUG_MESSAGE
#define dprintf_message fprintf
@@ -1004,8 +1024,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_metafile if(debug_msg_enabled[40]) fprintf
-#define debugging_metafile debug_msg_enabled[40]
+#define dprintf_metafile if(debug_msg_enabled[41]) fprintf
+#define debugging_metafile debug_msg_enabled[41]
#else
#ifdef DEBUG_METAFILE
#define dprintf_metafile fprintf
@@ -1017,8 +1037,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_midi if(debug_msg_enabled[41]) fprintf
-#define debugging_midi debug_msg_enabled[41]
+#define dprintf_midi if(debug_msg_enabled[42]) fprintf
+#define debugging_midi debug_msg_enabled[42]
#else
#ifdef DEBUG_MIDI
#define dprintf_midi fprintf
@@ -1030,8 +1050,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mmio if(debug_msg_enabled[42]) fprintf
-#define debugging_mmio debug_msg_enabled[42]
+#define dprintf_mmio if(debug_msg_enabled[43]) fprintf
+#define debugging_mmio debug_msg_enabled[43]
#else
#ifdef DEBUG_MMIO
#define dprintf_mmio fprintf
@@ -1043,8 +1063,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mmtime if(debug_msg_enabled[43]) fprintf
-#define debugging_mmtime debug_msg_enabled[43]
+#define dprintf_mmtime if(debug_msg_enabled[44]) fprintf
+#define debugging_mmtime debug_msg_enabled[44]
#else
#ifdef DEBUG_MMTIME
#define dprintf_mmtime fprintf
@@ -1056,8 +1076,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_module if(debug_msg_enabled[44]) fprintf
-#define debugging_module debug_msg_enabled[44]
+#define dprintf_module if(debug_msg_enabled[45]) fprintf
+#define debugging_module debug_msg_enabled[45]
#else
#ifdef DEBUG_MODULE
#define dprintf_module fprintf
@@ -1069,8 +1089,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_msg if(debug_msg_enabled[45]) fprintf
-#define debugging_msg debug_msg_enabled[45]
+#define dprintf_msg if(debug_msg_enabled[46]) fprintf
+#define debugging_msg debug_msg_enabled[46]
#else
#ifdef DEBUG_MSG
#define dprintf_msg fprintf
@@ -1082,8 +1102,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_msgbox if(debug_msg_enabled[46]) fprintf
-#define debugging_msgbox debug_msg_enabled[46]
+#define dprintf_msgbox if(debug_msg_enabled[47]) fprintf
+#define debugging_msgbox debug_msg_enabled[47]
#else
#ifdef DEBUG_MSGBOX
#define dprintf_msgbox fprintf
@@ -1095,8 +1115,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_nonclient if(debug_msg_enabled[47]) fprintf
-#define debugging_nonclient debug_msg_enabled[47]
+#define dprintf_nonclient if(debug_msg_enabled[48]) fprintf
+#define debugging_nonclient debug_msg_enabled[48]
#else
#ifdef DEBUG_NONCLIENT
#define dprintf_nonclient fprintf
@@ -1108,8 +1128,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_palette if(debug_msg_enabled[48]) fprintf
-#define debugging_palette debug_msg_enabled[48]
+#define dprintf_palette if(debug_msg_enabled[49]) fprintf
+#define debugging_palette debug_msg_enabled[49]
#else
#ifdef DEBUG_PALETTE
#define dprintf_palette fprintf
@@ -1121,8 +1141,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_profile if(debug_msg_enabled[49]) fprintf
-#define debugging_profile debug_msg_enabled[49]
+#define dprintf_profile if(debug_msg_enabled[50]) fprintf
+#define debugging_profile debug_msg_enabled[50]
#else
#ifdef DEBUG_PROFILE
#define dprintf_profile fprintf
@@ -1134,8 +1154,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_prop if(debug_msg_enabled[50]) fprintf
-#define debugging_prop debug_msg_enabled[50]
+#define dprintf_prop if(debug_msg_enabled[51]) fprintf
+#define debugging_prop debug_msg_enabled[51]
#else
#ifdef DEBUG_PROP
#define dprintf_prop fprintf
@@ -1147,8 +1167,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_reg if(debug_msg_enabled[51]) fprintf
-#define debugging_reg debug_msg_enabled[51]
+#define dprintf_reg if(debug_msg_enabled[52]) fprintf
+#define debugging_reg debug_msg_enabled[52]
#else
#ifdef DEBUG_REG
#define dprintf_reg fprintf
@@ -1160,8 +1180,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_region if(debug_msg_enabled[52]) fprintf
-#define debugging_region debug_msg_enabled[52]
+#define dprintf_region if(debug_msg_enabled[53]) fprintf
+#define debugging_region debug_msg_enabled[53]
#else
#ifdef DEBUG_REGION
#define dprintf_region fprintf
@@ -1173,8 +1193,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_relay if(debug_msg_enabled[53]) fprintf
-#define debugging_relay debug_msg_enabled[53]
+#define dprintf_relay if(debug_msg_enabled[54]) fprintf
+#define debugging_relay debug_msg_enabled[54]
#else
#ifdef DEBUG_RELAY
#define dprintf_relay fprintf
@@ -1186,8 +1206,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_resource if(debug_msg_enabled[54]) fprintf
-#define debugging_resource debug_msg_enabled[54]
+#define dprintf_resource if(debug_msg_enabled[55]) fprintf
+#define debugging_resource debug_msg_enabled[55]
#else
#ifdef DEBUG_RESOURCE
#define dprintf_resource fprintf
@@ -1199,8 +1219,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_scroll if(debug_msg_enabled[55]) fprintf
-#define debugging_scroll debug_msg_enabled[55]
+#define dprintf_scroll if(debug_msg_enabled[56]) fprintf
+#define debugging_scroll debug_msg_enabled[56]
#else
#ifdef DEBUG_SCROLL
#define dprintf_scroll fprintf
@@ -1212,8 +1232,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_selectors if(debug_msg_enabled[56]) fprintf
-#define debugging_selectors debug_msg_enabled[56]
+#define dprintf_selectors if(debug_msg_enabled[57]) fprintf
+#define debugging_selectors debug_msg_enabled[57]
#else
#ifdef DEBUG_SELECTORS
#define dprintf_selectors fprintf
@@ -1225,8 +1245,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_stack if(debug_msg_enabled[57]) fprintf
-#define debugging_stack debug_msg_enabled[57]
+#define dprintf_stack if(debug_msg_enabled[58]) fprintf
+#define debugging_stack debug_msg_enabled[58]
#else
#ifdef DEBUG_STACK
#define dprintf_stack fprintf
@@ -1238,8 +1258,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_stress if(debug_msg_enabled[58]) fprintf
-#define debugging_stress debug_msg_enabled[58]
+#define dprintf_stress if(debug_msg_enabled[59]) fprintf
+#define debugging_stress debug_msg_enabled[59]
#else
#ifdef DEBUG_STRESS
#define dprintf_stress fprintf
@@ -1251,8 +1271,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_syscolor if(debug_msg_enabled[59]) fprintf
-#define debugging_syscolor debug_msg_enabled[59]
+#define dprintf_syscolor if(debug_msg_enabled[60]) fprintf
+#define debugging_syscolor debug_msg_enabled[60]
#else
#ifdef DEBUG_SYSCOLOR
#define dprintf_syscolor fprintf
@@ -1264,8 +1284,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_task if(debug_msg_enabled[60]) fprintf
-#define debugging_task debug_msg_enabled[60]
+#define dprintf_task if(debug_msg_enabled[61]) fprintf
+#define debugging_task debug_msg_enabled[61]
#else
#ifdef DEBUG_TASK
#define dprintf_task fprintf
@@ -1277,8 +1297,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_text if(debug_msg_enabled[61]) fprintf
-#define debugging_text debug_msg_enabled[61]
+#define dprintf_text if(debug_msg_enabled[62]) fprintf
+#define debugging_text debug_msg_enabled[62]
#else
#ifdef DEBUG_TEXT
#define dprintf_text fprintf
@@ -1290,8 +1310,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_timer if(debug_msg_enabled[62]) fprintf
-#define debugging_timer debug_msg_enabled[62]
+#define dprintf_timer if(debug_msg_enabled[63]) fprintf
+#define debugging_timer debug_msg_enabled[63]
#else
#ifdef DEBUG_TIMER
#define dprintf_timer fprintf
@@ -1303,8 +1323,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_utility if(debug_msg_enabled[63]) fprintf
-#define debugging_utility debug_msg_enabled[63]
+#define dprintf_utility if(debug_msg_enabled[64]) fprintf
+#define debugging_utility debug_msg_enabled[64]
#else
#ifdef DEBUG_UTILITY
#define dprintf_utility fprintf
@@ -1316,8 +1336,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_win if(debug_msg_enabled[64]) fprintf
-#define debugging_win debug_msg_enabled[64]
+#define dprintf_win if(debug_msg_enabled[65]) fprintf
+#define debugging_win debug_msg_enabled[65]
#else
#ifdef DEBUG_WIN
#define dprintf_win fprintf
@@ -1329,8 +1349,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_winsock if(debug_msg_enabled[65]) fprintf
-#define debugging_winsock debug_msg_enabled[65]
+#define dprintf_winsock if(debug_msg_enabled[66]) fprintf
+#define debugging_winsock debug_msg_enabled[66]
#else
#ifdef DEBUG_WINSOCK
#define dprintf_winsock fprintf
@@ -1346,6 +1366,7 @@
#ifdef DEBUG_DEFINE_VARIABLES
static char *debug_msg_name[] = {
"accel",
+ "bitblt",
"bitmap",
"callback",
"caret",
diff --git a/include/font.h b/include/font.h
index 40c24d6..b26a260 100644
--- a/include/font.h
+++ b/include/font.h
@@ -1,7 +1,26 @@
+/*
+ * GDI font definitions
+ *
+ * Copyright 1994 Alexandre Julliard
+ */
+
#ifndef __WINE_FONT_H
#define __WINE_FONT_H
-extern void Font_Init( void );
+#include "gdi.h"
+
+#pragma pack(1)
+
+ /* GDI logical font object */
+typedef struct
+{
+ GDIOBJHDR header;
+ LOGFONT logfont WINE_PACKED;
+} FONTOBJ;
+
+#pragma pack(4)
+
+extern BOOL FONT_Init( void );
extern int FONT_GetObject( FONTOBJ * font, int count, LPSTR buffer );
extern HFONT FONT_SelectObject( DC * dc, HFONT hfont, FONTOBJ * font );
diff --git a/include/gdi.h b/include/gdi.h
index b176d42..07bde36 100644
--- a/include/gdi.h
+++ b/include/gdi.h
@@ -29,14 +29,6 @@
#pragma pack(1)
-typedef struct tagREGION
-{
- WORD type;
- RECT box;
- Pixmap pixmap;
- Region xrgn;
-} REGION;
-
typedef struct tagGDIOBJHDR
{
HANDLE hNext;
@@ -45,45 +37,6 @@
WORD wMetaList;
} GDIOBJHDR;
-typedef struct tagBRUSHOBJ
-{
- GDIOBJHDR header;
- LOGBRUSH logbrush WINE_PACKED;
-} BRUSHOBJ;
-
-typedef struct tagPENOBJ
-{
- GDIOBJHDR header;
- LOGPEN logpen WINE_PACKED;
-} PENOBJ;
-
-typedef struct tagPALETTEOBJ
-{
- GDIOBJHDR header;
- LOGPALETTE logpalette WINE_PACKED;
-} PALETTEOBJ;
-
-typedef struct tagFONTOBJ
-{
- GDIOBJHDR header;
- LOGFONT logfont WINE_PACKED;
-} FONTOBJ;
-
-typedef struct tagBITMAPOBJ
-{
- GDIOBJHDR header;
- BITMAP bitmap;
- Pixmap pixmap;
- SIZE size; /* For SetBitmapDimension() */
-} BITMAPOBJ;
-
-typedef struct tagRGNOBJ
-{
- GDIOBJHDR header;
- REGION region;
-} RGNOBJ;
-
-#pragma pack(4)
typedef struct
{
@@ -119,6 +72,8 @@
WORD colorRes; /* 108: color resolution */
} DeviceCaps;
+#pragma pack(4)
+
/* Device independent DC information */
typedef struct
@@ -134,6 +89,7 @@
HBRUSH hBrush;
HFONT hFont;
HBITMAP hBitmap;
+ HBITMAP hFirstBitmap; /* Bitmap selected at creation of the DC */
HANDLE hDevice;
HPALETTE hPalette;
diff --git a/include/graphics.h b/include/graphics.h
index a9580f5..2fba422 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -1,9 +1,16 @@
+/*
+ * Internal graphics functions prototypes
+ *
+ * Copyright 1994 Alexandre Julliard
+ *
+ */
+
#ifndef __WINE_GRAPHICS_H
#define __WINE_GRAPHICS_H
extern void GRAPH_DrawReliefRect( HDC hdc, RECT *rect, int highlight_size,
int shadow_size, BOOL pressed );
extern BOOL GRAPH_DrawBitmap( HDC hdc, HBITMAP hbitmap, int xdest, int ydest,
- int xsrc, int ysrc, int width, int height, int rop );
+ int xsrc, int ysrc, int width, int height );
-#endif /* __WINE_GRAPHICS */
+#endif /* __WINE_GRAPHICS_H */
diff --git a/include/message.h b/include/message.h
index 66d7926..b634227 100644
--- a/include/message.h
+++ b/include/message.h
@@ -49,6 +49,7 @@
extern void MSG_IncTimerCount( HANDLE hQueue );
extern void MSG_DecTimerCount( HANDLE hQueue );
extern void MSG_Synchronize();
+extern BOOL MSG_WaitXEvent( LONG maxWait );
extern BOOL MSG_CreateSysMsgQueue( int size );
extern void hardware_event( WORD message, WORD wParam, LONG lParam,
int xPos, int yPos, DWORD time, DWORD extraInfo );
diff --git a/include/miscemu.h b/include/miscemu.h
index a24bfae..1cc6fcc 100644
--- a/include/miscemu.h
+++ b/include/miscemu.h
@@ -17,6 +17,10 @@
extern void inport(struct sigcontext_struct *context);
extern void outportb(struct sigcontext_struct *context);
extern void outport(struct sigcontext_struct *context);
+extern void inportb_abs(struct sigcontext_struct *context);
+extern void inport_abs(struct sigcontext_struct *context);
+extern void outportb_abs(struct sigcontext_struct *context);
+extern void outport_abs(struct sigcontext_struct *context);
extern void IntBarf(int i, struct sigcontext_struct *context);
diff --git a/include/palette.h b/include/palette.h
new file mode 100644
index 0000000..ddb76e0
--- /dev/null
+++ b/include/palette.h
@@ -0,0 +1,25 @@
+/*
+ * GDI palette definitions
+ *
+ * Copyright 1994 Alexandre Julliard
+ */
+
+#ifndef __WINE_PALETTE_H
+#define __WINE_PALETTE_H
+
+#include "gdi.h"
+
+#pragma pack(1)
+
+ /* GDI logical palette object */
+typedef struct
+{
+ GDIOBJHDR header;
+ LOGPALETTE logpalette WINE_PACKED;
+} PALETTEOBJ;
+
+#pragma pack(4)
+
+extern int PALETTE_GetObject( PALETTEOBJ * palette, int count, LPSTR buffer );
+
+#endif /* __WINE_FONT_H */
diff --git a/include/pen.h b/include/pen.h
new file mode 100644
index 0000000..2e2b512
--- /dev/null
+++ b/include/pen.h
@@ -0,0 +1,26 @@
+/*
+ * GDI pen definitions
+ *
+ * Copyright 1994 Alexandre Julliard
+ */
+
+#ifndef __WINE_PEN_H
+#define __WINE_PEN_H
+
+#include "gdi.h"
+
+#pragma pack(1)
+
+ /* GDI logical pen object */
+typedef struct
+{
+ GDIOBJHDR header;
+ LOGPEN logpen WINE_PACKED;
+} PENOBJ;
+
+#pragma pack(4)
+
+extern int PEN_GetObject( PENOBJ * pen, int count, LPSTR buffer );
+extern HPEN PEN_SelectObject( DC * dc, HPEN hpen, PENOBJ * pen );
+
+#endif /* __WINE_PEN_H */
diff --git a/include/prototypes.h b/include/prototypes.h
index 5ba1e4f..d50a2db 100644
--- a/include/prototypes.h
+++ b/include/prototypes.h
@@ -32,7 +32,7 @@
/* loader/signal.c */
-extern int init_wine_signals(void);
+extern void init_wine_signals(void);
extern void wine_debug(int signal, int * regs);
/* loader/wine.c */
@@ -57,18 +57,6 @@
extern BOOL WIDGETS_Init(void);
-/* objects/palette.c */
-
-extern BOOL PALETTE_Init(void);
-
-/* objects/region.c */
-
-extern BOOL REGION_Init(void);
-
-/* windows/graphic.c */
-
-extern void DrawReliefRect(HDC hdc, RECT rect, int thickness, BOOL pressed);
-
/* windows/dce.c */
extern void DCE_Init(void);
diff --git a/include/region.h b/include/region.h
new file mode 100644
index 0000000..a6fef59
--- /dev/null
+++ b/include/region.h
@@ -0,0 +1,31 @@
+/*
+ * GDI region definitions
+ *
+ * Copyright 1994 Alexandre Julliard
+ */
+
+#ifndef __WINE_REGION_H
+#define __WINE_REGION_H
+
+#include "gdi.h"
+
+typedef struct
+{
+ WORD type;
+ RECT box;
+ Pixmap pixmap;
+ Region xrgn;
+} REGION;
+
+ /* GDI logical region object */
+typedef struct
+{
+ GDIOBJHDR header;
+ REGION region;
+} RGNOBJ;
+
+
+extern BOOL REGION_Init(void);
+extern BOOL REGION_DeleteObject( HRGN hrgn, RGNOBJ * obj );
+
+#endif /* __WINE_REGION_H */
diff --git a/include/selectors.h b/include/selectors.h
index aac6fa9..921e65b 100644
--- a/include/selectors.h
+++ b/include/selectors.h
@@ -2,6 +2,8 @@
#define __WINE_SELECTORS_H
#include "dlls.h"
+#include "segmem.h"
+#include "windows.h"
extern int FindUnusedSelectors(int n_selectors);
extern int IPCCopySelector(int i_old, unsigned long new, int swap_type);
diff --git a/include/stddebug.h b/include/stddebug.h
index 48348c4..087790e 100644
--- a/include/stddebug.h
+++ b/include/stddebug.h
@@ -77,6 +77,7 @@
#ifdef DEBUG_NONE
#undef DEBUG_ACCEL
+#undef DEBUG_BITBLT
#undef DEBUG_BITMAP
#undef DEBUG_CALLBACK
#undef DEBUG_CARET
@@ -146,6 +147,7 @@
#ifdef DEBUG_ALL
#define DEBUG_ACCEL
+#define DEBUG_BITBLT
#define DEBUG_BITMAP
#define DEBUG_CALLBACK
#define DEBUG_CARET
diff --git a/include/syscolor.h b/include/syscolor.h
index 0144953..e5441ce 100644
--- a/include/syscolor.h
+++ b/include/syscolor.h
@@ -7,7 +7,7 @@
#ifndef SYSCOLOR_H
#define SYSCOLOR_H
-#include "gdi.h"
+#include "windows.h"
struct SysColorObjects
{
diff --git a/include/win.h b/include/win.h
index d47cb2c..9bb1087 100644
--- a/include/win.h
+++ b/include/win.h
@@ -67,14 +67,13 @@
#define WIN_CLASS_STYLE(wndPtr) (WIN_CLASS_INFO(wndPtr).style)
/* Window functions */
-WND *WIN_FindWndPtr( HWND hwnd );
-Window WIN_GetXWindow( HWND hwnd );
-BOOL WIN_UnlinkWindow( HWND hwnd );
-BOOL WIN_LinkWindow( HWND hwnd, HWND hwndInsertAfter );
-HWND WIN_FindWinToRepaint( HWND hwnd );
-BOOL WIN_CreateDesktopWindow(void);
-BOOL WINPOS_IsAnActiveWindow( HWND hwnd );
-void WINPOS_ActivateChild( HWND hwnd );
+extern WND *WIN_FindWndPtr( HWND hwnd );
+extern Window WIN_GetXWindow( HWND hwnd );
+extern BOOL WIN_UnlinkWindow( HWND hwnd );
+extern BOOL WIN_LinkWindow( HWND hwnd, HWND hwndInsertAfter );
+extern HWND WIN_FindWinToRepaint( HWND hwnd );
+extern void WIN_SendParentNotify( HWND hwnd, WORD event, LONG lParam );
+extern BOOL WIN_CreateDesktopWindow(void);
extern Display * display;
extern Screen * screen;
diff --git a/include/winpos.h b/include/winpos.h
index 0d58c53..1df7d57 100644
--- a/include/winpos.h
+++ b/include/winpos.h
@@ -9,15 +9,6 @@
#define DWP_MAGIC 0x5057 /* 'WP' */
-extern HWND WINPOS_ChangeActiveWindow( HWND hwnd, BOOL mouseMsg ); /*winpos.c*/
-extern void WINPOS_GetMinMaxInfo( HWND hwnd, POINT *maxSize, POINT *maxPos,
- POINT *minTrack, POINT *maxTrack ); /* winpos.c */
-extern LONG WINPOS_SendNCCalcSize( HWND hwnd, BOOL calcValidRect,
- RECT *newWindowRect, RECT *oldWindowRect,
- RECT *oldClientRect, WINDOWPOS *winpos,
- RECT *newClientRect ); /* winpos.c */
-extern LONG WINPOS_HandleWindowPosChanging( WINDOWPOS *winpos ); /* winpos.c */
-
typedef struct
{
WORD actualCount;
@@ -28,4 +19,15 @@
WINDOWPOS winPos[1];
} DWP;
+
+extern HWND WINPOS_NextWindowFromPoint( HWND hwnd, POINT pt );
+extern HWND WINPOS_ChangeActiveWindow( HWND hwnd, BOOL mouseMsg );
+extern void WINPOS_GetMinMaxInfo( HWND hwnd, POINT *maxSize, POINT *maxPos,
+ POINT *minTrack, POINT *maxTrack );
+extern LONG WINPOS_SendNCCalcSize( HWND hwnd, BOOL calcValidRect,
+ RECT *newWindowRect, RECT *oldWindowRect,
+ RECT *oldClientRect, WINDOWPOS *winpos,
+ RECT *newClientRect );
+extern LONG WINPOS_HandleWindowPosChanging( WINDOWPOS *winpos );
+
#endif /* WINPOS_H */
diff --git a/loader/resource.c b/loader/resource.c
index adee0cf..e09927b 100644
--- a/loader/resource.c
+++ b/loader/resource.c
@@ -12,6 +12,7 @@
#include "arch.h"
#include "windows.h"
#include "gdi.h"
+#include "bitmap.h"
#include "neexe.h"
#include "icon.h"
#include "menu.h"
@@ -742,7 +743,7 @@
}
if(!it->value)return 0;
dprintf_resource(stddeb,"Found %s\n",it->name);
- lp=it->value;
+ lp=(long *)it->value;
rsc_mem=(HANDLE)NULL;
} else { /* Load from file - indent this code properly later */
diff --git a/loader/signal.c b/loader/signal.c
index 3cc7461..51fa430 100644
--- a/loader/signal.c
+++ b/loader/signal.c
@@ -214,7 +214,7 @@
XFlush(display);
fprintf(stderr,"In win_fault %x:%lx\n", scp->sc_cs, scp->sc_eip);
#if defined(linux) || defined(__NetBSD__) || defined(__FreeBSD__)
- wine_debug(signal, scp); /* Enter our debugger */
+ wine_debug(signal, (int *)scp); /* Enter our debugger */
#else
fprintf(stderr,"Stack: %x:%x\n", scp->sc_ss, scp->sc_esp);
dump = (int*) scp;
@@ -229,7 +229,7 @@
#endif
}
-int init_wine_signals(void)
+void init_wine_signals(void)
{
#ifdef linux
segv_act.sa_handler = (__sighandler_t) win_fault;
diff --git a/memory/global.c b/memory/global.c
index e6b0f00..7d5d469 100644
--- a/memory/global.c
+++ b/memory/global.c
@@ -167,15 +167,6 @@
}
/**********************************************************************
- * WIN16_GlobalAlloc
- */
-HANDLE
-WIN16_GlobalAlloc(unsigned int flags, unsigned long size)
-{
- return GlobalAlloc(flags & ~GLOBAL_FLAGS_MOVEABLE, size);
-}
-
-/**********************************************************************
* GlobalAlloc
*/
HANDLE
@@ -289,6 +280,15 @@
return g->handle;
}
}
+
+/**********************************************************************
+ * WIN16_GlobalAlloc
+ */
+HANDLE
+WIN16_GlobalAlloc(unsigned int flags, unsigned long size)
+{
+ return GlobalAlloc(flags & ~GLOBAL_FLAGS_MOVEABLE, size);
+}
/**********************************************************************
* GlobalFree
@@ -549,6 +549,13 @@
current_free = 0;
}
}
+
+ /* One final check just in case the last block was also marked free, in
+ * which case the above test against max_free doesn't occur for the
+ * last run of free blocks.
+ */
+ if (current_free > max_free)
+ max_free = current_free;
return max_free << 16;
}
diff --git a/memory/heap.c b/memory/heap.c
index 56474e7..939eb83 100644
--- a/memory/heap.c
+++ b/memory/heap.c
@@ -26,11 +26,11 @@
for (m = *free_list; m != NULL; m = m->next)
{
if (((int) m & 0xffff0000) != ((int) *free_list & 0xffff0000))
- { dprintf_heap(stddeb,"Invalid block %08x\n",m);
+ { dprintf_heap(stddeb,"Invalid block %p\n",m);
*(char *)0 = 0;
}
if (m->prev && (((int) m->prev & 0xffff0000) != ((int) *free_list & 0xffff0000)))
- { dprintf_heap(stddeb,"Invalid prev %08x from %08x\n", m->prev, m);
+ { dprintf_heap(stddeb,"Invalid prev %p from %p\n", m->prev, m);
*(char *)0 = 0;
}
}
@@ -164,7 +164,7 @@
if (m->prev != m || m->next != m ||
((int) m & 0xffff0000) != ((int) *free_list & 0xffff0000))
{
- fprintf(stderr,"Attempt to resize bad pointer, m = %08x, *free_list = %08x\n",
+ fprintf(stderr,"Attempt to resize bad pointer, m = %p, *free_list = %p\n",
m, free_list);
HEAP_CheckHeap(free_list);
return NULL;
@@ -235,7 +235,7 @@
MDESC *m;
MDESC *m_prev;
- dprintf_heap(stddeb,"HeapFree: free_list %08x, block %08x\n",
+ dprintf_heap(stddeb,"HeapFree: free_list %p, block %p\n",
free_list, block);
if(debugging_heap)HEAP_CheckHeap(free_list);
@@ -246,7 +246,7 @@
if (m_free->prev != m_free || m_free->next != m_free)
{
fprintf(stderr,"Attempt to free bad pointer,"
- "m_free = %08x, *free_list = %08x\n",
+ "m_free = %p, *free_list = %p\n",
m_free, free_list);
return -1;
}
@@ -261,7 +261,7 @@
else if (((int) m_free & 0xffff0000) != ((int) *free_list & 0xffff0000))
{
fprintf(stderr,"Attempt to free bad pointer,"
- "m_free = %08x, *free_list = %08x\n",
+ "m_free = %p, *free_list = %p\n",
m_free, free_list);
return -1;
}
@@ -276,7 +276,7 @@
if (m_prev != NULL && (int) m_prev + m_prev->length > (int) m_free)
{
fprintf(stderr,"Attempt to free bad pointer,"
- "m_free = %08x, m_prev = %08x (length %x)\n",
+ "m_free = %p, m_prev = %p (length %x)\n",
m_free, m_prev, m_prev->length);
return -1;
}
@@ -285,7 +285,7 @@
(int) m_free + m_free->length > ((int) m_free | 0xffff))
{
fprintf(stderr,"Attempt to free bad pointer,"
- "m_free = %08x (length %x), m = %08x\n",
+ "m_free = %p (length %x), m = %p\n",
m_free, m_free->length, m);
return -1;
}
@@ -347,7 +347,7 @@
LHEAP *lh;
dprintf_heap(stddeb,"CheckLocalHeaps called from %s %d\n",file,line);
for(lh=LocalHeaps; lh!=NULL; lh = lh->next)
- { dprintf_heap(stddeb,"Checking heap %08x, free_list %08x\n",
+ { dprintf_heap(stddeb,"Checking heap %p, free_list %p\n",
lh,lh->free_list);
HEAP_CheckHeap(&lh->free_list);
}
@@ -361,7 +361,6 @@
HEAP_LocalFindHeap(unsigned short owner)
{
LHEAP *lh;
- extern struct w_files *current_exe;
dprintf_heap(stddeb,"HEAP_LocalFindHeap: owner %04x\n", owner);
@@ -383,7 +382,7 @@
{
LHEAP *lh;
- dprintf_heap(stddeb,"HEAP_LocalInit: owner %04x, start %08x, length %04x\n"
+ dprintf_heap(stddeb,"HEAP_LocalInit: owner %04x, start %p, length %04x\n"
,owner, start, length);
if (length < 2 * sizeof(MDESC))
@@ -398,7 +397,7 @@
lh->local_table = NULL;
lh->delta = 0x20;
HEAP_Init(&lh->free_list, start, length);
- dprintf_heap(stddeb,"HEAP_LocalInit: free_list %08x, length %04x, prev %08x, next %08x\n",&lh->free_list,lh->free_list->length, lh->free_list->prev,lh->free_list->next);
+ dprintf_heap(stddeb,"HEAP_LocalInit: free_list %p, length %04x, prev %p, next %p\n",&lh->free_list,lh->free_list->length, lh->free_list->prev,lh->free_list->next);
LocalHeaps = lh;
}
@@ -553,9 +552,9 @@
void *m;
dprintf_heap(stddeb,"WIN16_LocalReAlloc(%04X, %d, %04X); !\n",
handle, bytes, flags);
- dprintf_heap(stddeb,"WIN16_LocalReAlloc // LOCALHEAP()=%08X !\n",
+ dprintf_heap(stddeb,"WIN16_LocalReAlloc // LOCALHEAP()=%p !\n",
LOCALHEAP());
- dprintf_heap(stddeb,"WIN16_LocalReAlloc // *LOCALHEAP()=%08X !\n",
+ dprintf_heap(stddeb,"WIN16_LocalReAlloc // *LOCALHEAP()=%p !\n",
*LOCALHEAP());
m = HEAP_ReAlloc(LOCALHEAP(), (void *)
(((int) *LOCALHEAP() & 0xffff0000) | (handle & 0xffff)),
diff --git a/misc/clipboard.c b/misc/clipboard.c
index e8a0cf9..51fefde 100644
--- a/misc/clipboard.c
+++ b/misc/clipboard.c
@@ -14,9 +14,9 @@
#include <unistd.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
-#include "prototypes.h"
#include "heap.h"
#include "win.h"
+#include "message.h"
#include "clipboard.h"
#include "stddebug.h"
#include "debug.h"
diff --git a/misc/commdlg.c b/misc/commdlg.c
index f9a6298..abf119f 100644
--- a/misc/commdlg.c
+++ b/misc/commdlg.c
@@ -61,14 +61,14 @@
HINSTANCE hInst;
WND *wndPtr;
BOOL bRet;
- printf("GetOpenFileName(%08X); !\n", lpofn);
+ printf("GetOpenFileName(%p); !\n", lpofn);
if (lpofn == NULL) return FALSE;
- printf("GetOpenFileName // Flags=%08X !\n", lpofn->Flags);
- printf("GetOpenFileName // nMaxFile=%d lpstrFile='%s' !\n",
+ printf("GetOpenFileName // Flags=%08lX !\n", lpofn->Flags);
+ printf("GetOpenFileName // nMaxFile=%ld lpstrFile='%s' !\n",
lpofn->nMaxFile, lpofn->lpstrFile);
printf("GetOpenFileName // lpstrInitialDir='%s' !\n", lpofn->lpstrInitialDir);
- printf("GetOpenFileName // lpstrFilter=%08X !\n", lpofn->lpstrFilter);
- printf("GetOpenFileName // nFilterIndex=%d !\n", lpofn->nFilterIndex);
+ printf("GetOpenFileName // lpstrFilter=%p !\n", lpofn->lpstrFilter);
+ printf("GetOpenFileName // nFilterIndex=%ld !\n", lpofn->nFilterIndex);
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE) {
hDlgTmpl = lpofn->hInstance;
}
@@ -123,13 +123,13 @@
HINSTANCE hInst;
WND *wndPtr;
BOOL bRet;
- printf("GetSaveFileName(%08X); !\n", lpofn);
+ printf("GetSaveFileName(%p); !\n", lpofn);
if (lpofn == NULL) return FALSE;
- printf("GetSaveFileName // Flags=%08X !\n", lpofn->Flags);
- printf("GetSaveFileName // nMaxFile=%d lpstrFile='%s' !\n",
+ printf("GetSaveFileName // Flags=%08lX !\n", lpofn->Flags);
+ printf("GetSaveFileName // nMaxFile=%ld lpstrFile='%s' !\n",
lpofn->nMaxFile, lpofn->lpstrFile);
printf("GetSaveFileName // lpstrInitialDir='%s' !\n", lpofn->lpstrInitialDir);
- printf("GetSaveFileName // lpstrFilter=%08X !\n", lpofn->lpstrFilter);
+ printf("GetSaveFileName // lpstrFilter=%p !\n", lpofn->lpstrFilter);
if (lpofn->Flags & OFN_ENABLETEMPLATEHANDLE) {
hDlgTmpl = lpofn->hInstance;
}
@@ -197,7 +197,6 @@
HDC hMemDC;
HBITMAP hBitmap;
BITMAP bm;
- WND *wndPtr;
LPMEASUREITEMSTRUCT lpmeasure;
LPDRAWITEMSTRUCT lpdis;
static int nDrive;
@@ -209,7 +208,7 @@
#ifdef DEBUG_OPENDLG
printf("FileOpenDlgProc // WM_INITDIALOG lParam=%08X\n", lParam);
#endif
- printf("FileOpenDlgProc // WM_INITDIALOG lParam=%08X\n", lParam);
+ printf("FileOpenDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam);
if (!FileDlg_Init(hWnd, lParam)) return TRUE;
SendDlgItemMessage(hWnd, cmb1, CB_RESETCONTENT, 0, 0L);
lpofn = (LPOPENFILENAME)lParam;
@@ -632,8 +631,6 @@
LPMEASUREITEMSTRUCT lpmeasure;
LPDRAWITEMSTRUCT lpdis;
static int nDrive;
- static int OldDrive;
- static char OldPath[512];
static char CurPath[512];
static LPOPENFILENAME lpofn;
@@ -874,7 +871,7 @@
{
switch (wMsg) {
case WM_INITDIALOG:
- printf("ColorDlgProc // WM_INITDIALOG lParam=%08X\n", lParam);
+ printf("ColorDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam);
ShowWindow(hWnd, SW_SHOWNORMAL);
return (TRUE);
@@ -952,7 +949,7 @@
{
switch (wMsg) {
case WM_INITDIALOG:
- printf("FindTextDlgProc // WM_INITDIALOG lParam=%08X\n", lParam);
+ printf("FindTextDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam);
ShowWindow(hWnd, SW_SHOWNORMAL);
return (TRUE);
@@ -978,7 +975,7 @@
{
switch (wMsg) {
case WM_INITDIALOG:
- printf("ReplaceTextDlgProc // WM_INITDIALOG lParam=%08X\n", lParam);
+ printf("ReplaceTextDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam);
ShowWindow(hWnd, SW_SHOWNORMAL);
return (TRUE);
@@ -1006,7 +1003,7 @@
HANDLE hResInfo;
WND *wndPtr;
BOOL bRet;
- printf("PrintDlg(%08X) // Flags=%08X\n", lpPrint->Flags);
+ printf("PrintDlg(%p) // Flags=%08lX\n", lpPrint, lpPrint->Flags);
if (lpPrint->Flags & PD_PRINTSETUP)
hResInfo = FindResource(hSysRes, MAKEINTRESOURCE(PRINTSETUPDLG), RT_DIALOG);
else
@@ -1038,7 +1035,7 @@
{
switch (wMsg) {
case WM_INITDIALOG:
- printf("PrintDlgProc // WM_INITDIALOG lParam=%08X\n", lParam);
+ printf("PrintDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam);
ShowWindow(hWnd, SW_SHOWNORMAL);
return (TRUE);
@@ -1064,7 +1061,7 @@
{
switch (wMsg) {
case WM_INITDIALOG:
- printf("PrintSetupDlgProc // WM_INITDIALOG lParam=%08X\n", lParam);
+ printf("PrintSetupDlgProc // WM_INITDIALOG lParam=%08lX\n", lParam);
ShowWindow(hWnd, SW_SHOWNORMAL);
return (TRUE);
@@ -1098,7 +1095,7 @@
int GetFileTitle(LPCSTR lpFile, LPSTR lpTitle, UINT cbBuf)
{
int i, len;
- printf("GetFileTitle(%08X %08X %d); \n", lpFile, lpTitle, cbBuf);
+ printf("GetFileTitle(%p %p %d); \n", lpFile, lpTitle, cbBuf);
if (lpFile == NULL || lpTitle == NULL) return -1;
len = strlen(lpFile);
if (len == 0) return -1;
diff --git a/misc/dos_fs.c b/misc/dos_fs.c
index 54bf564..235205d 100644
--- a/misc/dos_fs.c
+++ b/misc/dos_fs.c
@@ -89,6 +89,43 @@
path[strlen(path)-1] = '\0';
}
+void ToUnix(char *s)
+{
+ /* \WINDOWS\\SYSTEM => /windows/system */
+
+ char *p;
+
+ for (p = s; *p; p++)
+ {
+ if (*p != '\\')
+ *s++ = tolower(*p);
+ else {
+ *s++ = '/';
+ if (*(p+1) == '/' || *(p+1) == '\\')
+ p++;
+ }
+ }
+ *s = '\0';
+}
+
+void ToDos(char *s)
+{
+ /* /windows//system => \WINDOWS\SYSTEM */
+
+ char *p;
+ for (p = s; *p; p++)
+ {
+ if (*p != '/')
+ *s++ = toupper(*p);
+ else {
+ *s++ = '\\';
+ if (*(p+1) == '/' || *(p+1) == '\\')
+ p++;
+ }
+ }
+ *s = '\0';
+}
+
void DOS_InitFS(void)
{
int x;
@@ -279,43 +316,6 @@
CurrentDrive = drive;
}
-void ToUnix(char *s)
-{
- /* \WINDOWS\\SYSTEM => /windows/system */
-
- char *p;
-
- for (p = s; *p; p++)
- {
- if (*p != '\\')
- *s++ = tolower(*p);
- else {
- *s++ = '/';
- if (*(p+1) == '/' || *(p+1) == '\\')
- p++;
- }
- }
- *s = '\0';
-}
-
-void ToDos(char *s)
-{
- /* /windows//system => \WINDOWS\SYSTEM */
-
- char *p;
- for (p = s; *p; p++)
- {
- if (*p != '/')
- *s++ = toupper(*p);
- else {
- *s++ = '\\';
- if (*(p+1) == '/' || *(p+1) == '\\')
- p++;
- }
- }
- *s = '\0';
-}
-
int DOS_DisableDrive(int drive)
{
if (drive >= MAX_DOS_DRIVES)
diff --git a/misc/driver.c b/misc/driver.c
index c39c3e7..e9f5f40 100644
--- a/misc/driver.c
+++ b/misc/driver.c
@@ -46,6 +46,7 @@
{
dprintf_driver(stdnimp,"SendDriverMessage(%04X, %04X, %08lX, %08lX);\n",
hDriver, msg, lParam1, lParam2);
+ return 0;
}
/**************************************************************************
diff --git a/misc/keyboard.c b/misc/keyboard.c
index 9a07198..ce2c0ec 100644
--- a/misc/keyboard.c
+++ b/misc/keyboard.c
@@ -6,7 +6,6 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include "prototypes.h"
#include "windows.h"
#include "keyboard.h"
#include "stddebug.h"
diff --git a/misc/lstr.c b/misc/lstr.c
index aaf47f3..f188dad 100644
--- a/misc/lstr.c
+++ b/misc/lstr.c
@@ -9,7 +9,6 @@
#include <fcntl.h>
#include <unistd.h>
-#include "prototypes.h"
#include "regfunc.h"
#include "windows.h"
diff --git a/misc/main.c b/misc/main.c
index 9aa9111..03c7584 100644
--- a/misc/main.c
+++ b/misc/main.c
@@ -491,7 +491,6 @@
MAIN_SaveSetup();
DOS_InitFS();
Comm_Init();
- Font_Init();
#ifndef WINELIB
INT21_Init();
#endif
@@ -553,7 +552,7 @@
}
free(lpEnv->Value);
lpEnv->Value = malloc(nCount);
- if (lpNewEnv->Value == NULL) {
+ if (lpEnv->Value == NULL) {
printf("SetEnvironment() // Error allocating entry value !\n");
return 0;
}
diff --git a/misc/message.c b/misc/message.c
index 2134464..0b02f24 100644
--- a/misc/message.c
+++ b/misc/message.c
@@ -15,7 +15,6 @@
#include <ctype.h>
#include <fcntl.h>
#include <unistd.h>
-#include "prototypes.h"
#include "heap.h"
#include "library.h"
#include "win.h"
diff --git a/misc/network.c b/misc/network.c
index 779d6aa..7ccc901 100644
--- a/misc/network.c
+++ b/misc/network.c
@@ -37,7 +37,7 @@
int WNetGetConnection(LPSTR lpLocalName,
LPSTR lpRemoteName, UINT FAR *cbRemoteName)
{
- printf("EMPTY STUB !!! WNetGetConnection('%s', %08X, %08X);\n",
+ printf("EMPTY STUB !!! WNetGetConnection('%s', %p, %p);\n",
lpLocalName, lpRemoteName, cbRemoteName);
return WN_NET_ERROR;
}
@@ -55,7 +55,7 @@
*/
UINT WNetGetUser(LPSTR lpLocalName, LPSTR lpUserName, DWORD *lpSize)
{
- printf("EMPTY STUB !!! WNetGetUser('%s', %08X, %08X);\n",
+ printf("EMPTY STUB !!! WNetGetUser('%s', %p, %p);\n",
lpLocalName, lpUserName, lpSize);
return WN_NET_ERROR;
}
@@ -65,7 +65,7 @@
*/
UINT WNetAddConnection(LPSTR lpNetPath, LPSTR lpPassWord, LPSTR lpLocalName)
{
- printf("EMPTY STUB !!! WNetAddConnection('%s', %08X, '%s');\n",
+ printf("EMPTY STUB !!! WNetAddConnection('%s', %p, '%s');\n",
lpNetPath, lpPassWord, lpLocalName);
return WN_NET_ERROR;
}
@@ -87,7 +87,7 @@
UINT WNetAddConnection2(LPSTR lpNetPath, LPSTR lpPassWord,
LPSTR lpLocalName, LPSTR lpUserName)
{
- printf("EMPTY STUB !!! WNetAddConnection2('%s', %08X, '%s', '%s');\n",
+ printf("EMPTY STUB !!! WNetAddConnection2('%s', %p, '%s', '%s');\n",
lpNetPath, lpPassWord, lpLocalName, lpUserName);
return WN_NET_ERROR;
}
@@ -107,7 +107,7 @@
UINT WNetEnumResource(HANDLE hEnum, DWORD cRequ,
DWORD *lpCount, LPVOID lpBuf)
{
- printf("EMPTY STUB !!! WNetEnumResource(%04X, %08X, %08X, %08X);\n",
+ printf("EMPTY STUB !!! WNetEnumResource(%04X, %08lX, %p, %p);\n",
hEnum, cRequ, lpCount, lpBuf);
return WN_NET_ERROR;
}
@@ -118,7 +118,7 @@
UINT WNetOpenEnum(DWORD dwScope, DWORD dwType,
LPNETRESOURCE lpNet, HANDLE FAR *lphEnum)
{
- printf("EMPTY STUB !!! WNetOpenEnum(%08X, %08X, %08X, %08X);\n",
+ printf("EMPTY STUB !!! WNetOpenEnum(%08lX, %08lX, %p, %p);\n",
dwScope, dwType, lpNet, lphEnum);
return WN_NET_ERROR;
}
diff --git a/misc/profile.c b/misc/profile.c
index d30774f..7fd305d 100644
--- a/misc/profile.c
+++ b/misc/profile.c
@@ -24,7 +24,6 @@
#include "wine.h"
#include "windows.h"
#include "dos_fs.h"
-#include "prototypes.h"
#include "stddebug.h"
/* #define DEBUG_PROFILE */
#include "debug.h"
diff --git a/misc/shell.c b/misc/shell.c
index 0c6091e..97a9653 100644
--- a/misc/shell.c
+++ b/misc/shell.c
@@ -5,10 +5,10 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h>
-#include "prototypes.h"
#include "windows.h"
#include "library.h"
#include "shell.h"
+#include "neexe.h"
#include "../rc/sysres.h"
#include "stddebug.h"
/* #define DEBUG_REG */
@@ -25,13 +25,13 @@
LPSTR ptr;
char str[128];
- dprintf_reg(stddeb, "RegOpenKey(%04X, %08X='%s', %08X)\n",
+ dprintf_reg(stddeb, "RegOpenKey(%08lX, %p='%s', %p)\n",
hKey, lpSubKey, lpSubKey, lphKey);
if (lpKey == NULL) return ERROR_BADKEY;
if (lpSubKey == NULL) return ERROR_INVALID_PARAMETER;
if (lphKey == NULL) return ERROR_INVALID_PARAMETER;
if (hKey != HKEY_CLASSES_ROOT) {
- dprintf_reg(stddeb,"RegOpenKey // specific key = %04X !\n", hKey);
+ dprintf_reg(stddeb,"RegOpenKey // specific key = %08lX !\n", hKey);
lpKey = (LPKEYSTRUCT)GlobalLock(hKey);
}
while ( (ptr = strchr(lpSubKey, '\\')) != NULL ) {
@@ -67,7 +67,7 @@
lpKey = lpKey->lpNextKey;
}
*lphKey = lpKey->hKey;
- dprintf_reg(stddeb,"RegOpenKey // return hKey=%04X !\n", lpKey->hKey);
+ dprintf_reg(stddeb,"RegOpenKey // return hKey=%08lX !\n", lpKey->hKey);
return ERROR_SUCCESS;
}
@@ -84,11 +84,11 @@
LONG dwRet;
LPSTR ptr;
char str[128];
- dprintf_reg(stddeb, "RegCreateKey(%04X, '%s', %08X)\n", hKey, lpSubKey, lphKey);
+ dprintf_reg(stddeb, "RegCreateKey(%08lX, '%s', %p)\n", hKey, lpSubKey, lphKey);
if (lpSubKey == NULL) return ERROR_INVALID_PARAMETER;
if (lphKey == NULL) return ERROR_INVALID_PARAMETER;
if (hKey != HKEY_CLASSES_ROOT) {
- dprintf_reg(stddeb,"RegCreateKey // specific key = %04X !\n", hKey);
+ dprintf_reg(stddeb,"RegCreateKey // specific key = %08lX !\n", hKey);
lpKey = (LPKEYSTRUCT)GlobalLock(hKey);
}
while ( (ptr = strchr(lpSubKey, '\\')) != NULL ) {
@@ -158,7 +158,7 @@
lpNewKey->lpNextKey = NULL;
lpNewKey->lpSubLvl = NULL;
*lphKey = hNewKey;
- dprintf_reg(stddeb,"RegCreateKey // successful '%s' key=%04X !\n", lpSubKey, hNewKey);
+ dprintf_reg(stddeb,"RegCreateKey // successful '%s' key=%08lX !\n", lpSubKey, hNewKey);
return ERROR_SUCCESS;
}
@@ -168,7 +168,7 @@
*/
LONG RegCloseKey(HKEY hKey)
{
- dprintf_reg(stdnimp, "EMPTY STUB !!! RegCloseKey(%04X);\n", hKey);
+ dprintf_reg(stdnimp, "EMPTY STUB !!! RegCloseKey(%08lX);\n", hKey);
return ERROR_INVALID_PARAMETER;
}
@@ -178,7 +178,7 @@
*/
LONG RegDeleteKey(HKEY hKey, LPCSTR lpSubKey)
{
- dprintf_reg(stdnimp, "EMPTY STUB !!! RegDeleteKey(%04X, '%s');\n",
+ dprintf_reg(stdnimp, "EMPTY STUB !!! RegDeleteKey(%08lX, '%s');\n",
hKey, lpSubKey);
return ERROR_INVALID_PARAMETER;
}
@@ -193,14 +193,14 @@
HKEY hRetKey;
LPKEYSTRUCT lpKey;
LONG dwRet;
- dprintf_reg(stddeb, "RegSetValue(%04X, '%s', %08X, '%s', %08X);\n",
+ dprintf_reg(stddeb, "RegSetValue(%08lX, '%s', %08lX, '%s', %08lX);\n",
hKey, lpSubKey, dwType, lpVal, dwIgnored);
if (lpSubKey == NULL) return ERROR_INVALID_PARAMETER;
if (lpVal == NULL) return ERROR_INVALID_PARAMETER;
if ((dwRet = RegOpenKey(hKey, lpSubKey, &hRetKey)) != ERROR_SUCCESS) {
dprintf_reg(stddeb, "RegSetValue // key not found ... so create it !\n");
if ((dwRet = RegCreateKey(hKey, lpSubKey, &hRetKey)) != ERROR_SUCCESS) {
- fprintf(stderr, "RegSetValue // key creation error %04X !\n", dwRet);
+ fprintf(stderr, "RegSetValue // key creation error %08lX !\n", dwRet);
return dwRet;
}
}
@@ -223,7 +223,7 @@
LPKEYSTRUCT lpKey;
LONG dwRet;
int size;
- dprintf_reg(stddeb, "RegQueryValue(%04X, '%s', %08X, %08X);\n",
+ dprintf_reg(stddeb, "RegQueryValue(%08lX, '%s', %p, %p);\n",
hKey, lpSubKey, lpVal, lpcb);
if (lpSubKey == NULL) return ERROR_INVALID_PARAMETER;
if (lpVal == NULL) return ERROR_INVALID_PARAMETER;
@@ -317,7 +317,7 @@
HINSTANCE FindExecutable(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult)
{
dprintf_reg(stdnimp, "FindExecutable : Empty Stub !!!\n");
-
+ return 0;
}
char AppName[256], AppMisc[256];
@@ -399,6 +399,7 @@
HICON ExtractAssociatedIcon(HINSTANCE hInst,LPSTR lpIconPath, LPWORD lpiIcon)
{
dprintf_reg(stdnimp, "ExtractAssociatedIcon : Empty Stub !!!\n");
+ return 0;
}
/*************************************************************************
@@ -417,4 +418,5 @@
int ShellHookProc(void)
{
dprintf_reg(stdnimp, "ShellHookProc : Empty Stub !!!\n");
+ return 0;
}
diff --git a/misc/sound.c b/misc/sound.c
index 6d1b321..8b8696d 100644
--- a/misc/sound.c
+++ b/misc/sound.c
@@ -5,7 +5,7 @@
#include <stdlib.h>
#include <stdio.h>
-#include "prototypes.h"
+#include "windows.h"
int OpenSound(void)
{
@@ -51,7 +51,7 @@
int SetVoiceSound(int nVoice, long lFrequency, int nDuration)
{
- printf("SetVoiceSound(%d, %d, %d)\n",nVoice,lFrequency, nDuration);
+ printf("SetVoiceSound(%d, %ld, %d)\n",nVoice,lFrequency, nDuration);
return 0;
}
@@ -68,31 +68,37 @@
int WaitSoundState(int x)
{
fprintf(stderr, "WaitSoundState(%d)\n", x);
+ return 0;
}
int SyncAllVoices(void)
{
fprintf(stderr, "SyncAllVoices()\n");
+ return 0;
}
int CountVoiceNotes(int x)
{
fprintf(stderr, "CountVoiceNotes(%d)\n", x);
+ return 0;
}
LPINT GetThresholdEvent(void)
{
fprintf(stderr, "GetThresholdEvent()\n");
+ return NULL;
}
int GetThresholdStatus(void)
{
fprintf(stderr, "GetThresholdStatus()\n");
+ return 0;
}
int SetVoiceThreshold(int a, int b)
{
fprintf(stderr, "SetVoiceThreshold(%d,%d)\n", a, b);
+ return 0;
}
void DoBeep(void)
diff --git a/miscemu/emulate.c b/miscemu/emulate.c
index c014887..31c9634 100644
--- a/miscemu/emulate.c
+++ b/miscemu/emulate.c
@@ -1,6 +1,5 @@
#include <stdlib.h>
#include <stdio.h>
-#include "prototypes.h"
#include "regfunc.h"
#include "stddebug.h"
/* #define DEBUG_INT */
@@ -18,8 +17,8 @@
int
WIN87_fpmath()
{
- dprintf_int(stddeb, "_fpmath: (%x:%lx %lx %x)\n",_CONTEXT->sc_cs,
- _CONTEXT->sc_eip, _CONTEXT->sc_es, _BX & 0xffff);
+ dprintf_int(stddeb, "_fpmath: (%x:%lx %x %x)\n",_CONTEXT->sc_cs,
+ _CONTEXT->sc_eip, _CONTEXT->sc_es, (unsigned int)_BX & 0xffff);
switch(_BX & 0xffff)
{
diff --git a/miscemu/int1a.c b/miscemu/int1a.c
index a8739f0..9cb0db0 100644
--- a/miscemu/int1a.c
+++ b/miscemu/int1a.c
@@ -9,17 +9,12 @@
/* #define DEBUG_INT */
#include "debug.h"
-#ifdef linux
-#define inline __inline__ /* So we can compile with -ansi */
-#include <linux/sched.h> /* needed for HZ */
-#undef inline
-#endif
-
#define BCD_TO_BIN(x) ((x&15) + (x>>4)*10)
#define BIN_TO_BCD(x) ((x%10) + ((x/10)<<4))
int do_int1a(struct sigcontext_struct * context){
- time_t ltime, ticks;
+ time_t ltime;
+ DWORD ticks;
struct tm *bdtime;
if (debugging_relay) {
@@ -30,8 +25,7 @@
switch(AH) {
case 0:
- ltime = time(NULL);
- ticks = (int) (ltime * HZ);
+ ticks = GetTickCount();
CX = ticks >> 16;
DX = ticks & 0x0000FFFF;
AX = 0; /* No midnight rollover */
diff --git a/miscemu/int21.c b/miscemu/int21.c
index 5ab5c11..62330ff 100644
--- a/miscemu/int21.c
+++ b/miscemu/int21.c
@@ -22,7 +22,6 @@
#include "msdos.h"
#include "registers.h"
#include "options.h"
-#include "prototypes.h"
#include "miscemu.h"
#include "stddebug.h"
/* #define DEBUG_INT */
@@ -485,7 +484,7 @@
case 0x30: /* DENYREAD */
dprintf_int(stdnimp,
"OpenExistingFile (%s): DENYREAD changed to DENYALL\n",
- SAFEMAKEPTR(DS,DX));
+ (char *)SAFEMAKEPTR(DS,DX));
case 0x10: /* DENYALL */
lock = LOCK_EX;
break;
@@ -549,7 +548,7 @@
char *newname, *oldname;
dprintf_int(stddeb,"int21: renaming %s to %s\n",
- SAFEMAKEPTR(DS,DX), SAFEMAKEPTR(ES,DI) );
+ (char *)SAFEMAKEPTR(DS,DX), (char *)SAFEMAKEPTR(ES,DI) );
oldname = DOS_GetUnixFileName( SAFEMAKEPTR(DS,DX) );
newname = DOS_GetUnixFileName( SAFEMAKEPTR(ES,DI) );
@@ -563,7 +562,7 @@
{
char *dirname;
- dprintf_int(stddeb,"int21: makedir %s\n", SAFEMAKEPTR(DS,DX) );
+ dprintf_int(stddeb,"int21: makedir %s\n", (char *)SAFEMAKEPTR(DS,DX) );
if ((dirname = DOS_GetUnixFileName( SAFEMAKEPTR(DS,DX) ))== NULL) {
AL = CanNotMakeDir;
@@ -600,7 +599,7 @@
{
char *dirname;
- dprintf_int(stddeb,"int21: removedir %s\n", SAFEMAKEPTR(DS,DX) );
+ dprintf_int(stddeb,"int21: removedir %s\n", (char *)SAFEMAKEPTR(DS,DX) );
if ((dirname = DOS_GetUnixFileName( SAFEMAKEPTR(DS,DX) ))== NULL) {
AL = CanNotMakeDir;
@@ -1601,7 +1600,10 @@
MDESC *DosHeapDesc;
if ((handle = GlobalAlloc(GMEM_FIXED,sizeof(struct DosHeap))) == 0)
- myerror("out of memory");
+ {
+ fprintf( stderr, "INT21_Init: Out of memory\n");
+ exit(1);
+ }
heap = (struct DosHeap *) GlobalLock(handle);
HEAP_Init(&DosHeapDesc, heap, sizeof(struct DosHeap));
diff --git a/miscemu/int25.c b/miscemu/int25.c
index 54cdbc6..38c306d 100644
--- a/miscemu/int25.c
+++ b/miscemu/int25.c
@@ -25,7 +25,7 @@
length = CX;
}
dprintf_int(stdnimp, "int25: abs diskread, drive %d, sector %ld, "
- "count %ld, buffer %d\n", EAX & 0xff, begin, length, (int) dataptr);
+ "count %ld, buffer %d\n", (int)EAX & 0xff, begin, length, (int) dataptr);
memset(dataptr, 0, length * 512);
diff --git a/miscemu/int26.c b/miscemu/int26.c
index e6a7da8..c642f4c 100644
--- a/miscemu/int26.c
+++ b/miscemu/int26.c
@@ -25,7 +25,7 @@
}
dprintf_int(stdnimp,"int26: abs diskwrite, drive %d, sector %ld, "
- "count %ld, buffer %d\n", EAX & 0xff, begin, length, (int) dataptr);
+ "count %ld, buffer %d\n", (int)EAX & 0xff, begin, length, (int) dataptr);
ResetCflag;
diff --git a/multimedia/audio.c b/multimedia/audio.c
index e005b86..e595c11 100644
--- a/multimedia/audio.c
+++ b/multimedia/audio.c
@@ -115,6 +115,7 @@
fprintf(stderr,"WAVE_NotifyClient // can't notify client !\n");
return MMSYSERR_NOERROR;
}
+ return 0;
#else
return MMSYSERR_NOTENABLED;
#endif
@@ -194,7 +195,7 @@
DWORD dwRet;
char str[128];
- dprintf_mciwave(stddeb,"WAVE_mciOpen(%08X, %08X)\n", dwFlags, lpParms);
+ dprintf_mciwave(stddeb,"WAVE_mciOpen(%08lX, %p)\n", dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
wDevID = lpParms->wDeviceID;
if (MCIWavDev[wDevID].nUseCount > 0) {
@@ -274,7 +275,7 @@
(LPSTR)&mmckInfo.ckid, (LPSTR)&mmckInfo.fccType,
mmckInfo.cksize);
dprintf_mciwave(stddeb,
- "WAVE_mciOpen // nChannels=%d nSamplesPerSec=%d\n",
+ "WAVE_mciOpen // nChannels=%d nSamplesPerSec=%ld\n",
lpWaveFormat->wf.nChannels, lpWaveFormat->wf.nSamplesPerSec);
lpWaveFormat->wBitsPerSample = 0;
}
@@ -296,7 +297,7 @@
#ifdef linux
DWORD dwRet;
dprintf_mciwave(stddeb,
- "WAVE_mciClose(%u, %08X, %08X);\n", wDevID, dwParam, lpParms);
+ "WAVE_mciClose(%u, %08lX, %p);\n", wDevID, dwParam, lpParms);
MCIWavDev[wDevID].nUseCount--;
if (MCIWavDev[wDevID].nUseCount == 0) {
if (MCIWavDev[wDevID].hFile != 0) {
@@ -326,7 +327,7 @@
LPWAVEHDR lpWaveHdr;
DWORD dwRet;
dprintf_mciwave(stddeb,
- "WAVE_mciPlay(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ "WAVE_mciPlay(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (MCIWavDev[wDevID].hFile == 0) {
fprintf(stderr,"WAVE_mciPlay // can't find file='%s' !\n",
MCIWavDev[wDevID].openParms.lpstrElementName);
@@ -345,7 +346,7 @@
/**/
if (dwFlags & MCI_NOTIFY) {
dprintf_mciwave(stddeb,
- "WAVE_mciPlay // MCI_NOTIFY %08X !\n", lpParms->dwCallback);
+ "WAVE_mciPlay // MCI_NOTIFY %08lX !\n", lpParms->dwCallback);
switch(fork()) {
case -1:
fprintf(stderr,
@@ -371,7 +372,7 @@
count = mmioRead(MCIWavDev[wDevID].hFile, lpWaveHdr->lpData, lpWaveHdr->dwBufferLength);
if (count < 1) break;
lpWaveHdr->dwBytesRecorded = count;
- dprintf_mciwave(stddeb,"WAVE_mciPlay // before WODM_WRITE lpWaveHdr=%08X dwBytesRecorded=%u\n",
+ dprintf_mciwave(stddeb,"WAVE_mciPlay // before WODM_WRITE lpWaveHdr=%p dwBytesRecorded=%lu\n",
lpWaveHdr, lpWaveHdr->dwBytesRecorded);
dwRet = wodMessage(0, WODM_WRITE, 0, (DWORD)lpWaveHdr, sizeof(WAVEHDR));
}
@@ -381,7 +382,7 @@
lpWaveHdr->lpData = NULL;
}
if (dwFlags & MCI_NOTIFY) {
- dprintf_mciwave(stddeb,"WAVE_mciPlay // MCI_NOTIFY_SUCCESSFUL %08X !\n", lpParms->dwCallback);
+ dprintf_mciwave(stddeb,"WAVE_mciPlay // MCI_NOTIFY_SUCCESSFUL %08lX !\n", lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
MCIWavDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
exit(0);
@@ -399,13 +400,12 @@
DWORD WAVE_mciRecord(UINT wDevID, DWORD dwFlags, LPMCI_RECORD_PARMS lpParms)
{
#ifdef linux
- int count;
int start, end;
LPWAVEHDR lpWaveHdr;
DWORD dwRet;
dprintf_mciwave(stddeb,
- "WAVE_mciRecord(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ "WAVE_mciRecord(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (MCIWavDev[wDevID].hFile == 0) {
fprintf(stderr,"WAVE_mciRecord // can't find file='%s' !\n",
MCIWavDev[wDevID].openParms.lpstrElementName);
@@ -433,7 +433,7 @@
lpWaveHdr->dwBytesRecorded = 0;
dwRet = widMessage(0, WIDM_START, 0, 0L, 0L);
dprintf_mciwave(stddeb,
- "WAVE_mciRecord // after WIDM_START lpWaveHdr=%08X dwBytesRecorded=%u\n",
+ "WAVE_mciRecord // after WIDM_START lpWaveHdr=%p dwBytesRecorded=%lu\n",
lpWaveHdr, lpWaveHdr->dwBytesRecorded);
if (lpWaveHdr->dwBytesRecorded == 0) break;
}
@@ -445,7 +445,7 @@
lpWaveHdr->lpData = NULL;
}
if (dwFlags & MCI_NOTIFY) {
- dprintf_mciwave(stddeb,"WAVE_mciRecord // MCI_NOTIFY_SUCCESSFUL %08X !\n", lpParms->dwCallback);
+ dprintf_mciwave(stddeb,"WAVE_mciRecord // MCI_NOTIFY_SUCCESSFUL %08lX !\n", lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
MCIWavDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
}
@@ -463,7 +463,7 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "WAVE_mciStop(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ "WAVE_mciStop(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
return 0;
#else
@@ -479,7 +479,7 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "WAVE_mciPause(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ "WAVE_mciPause(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
return 0;
#else
@@ -495,7 +495,7 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "WAVE_mciResume(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ "WAVE_mciResume(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
return 0;
#else
@@ -511,12 +511,12 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "WAVE_mciSet(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ "WAVE_mciSet(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
dprintf_mciwave(stddeb,
- "WAVE_mciSet // dwTimeFormat=%08X\n", lpParms->dwTimeFormat);
+ "WAVE_mciSet // dwTimeFormat=%08lX\n", lpParms->dwTimeFormat);
dprintf_mciwave(stddeb,
- "WAVE_mciSet // dwAudio=%08X\n", lpParms->dwAudio);
+ "WAVE_mciSet // dwAudio=%08lX\n", lpParms->dwAudio);
if (dwFlags & MCI_SET_TIME_FORMAT) {
switch (lpParms->dwTimeFormat) {
case MCI_FORMAT_MILLISECONDS:
@@ -588,7 +588,7 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "WAVE_mciStatus(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ "WAVE_mciStatus(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (dwFlags & MCI_STATUS_ITEM) {
switch(lpParms->dwItem) {
@@ -667,12 +667,12 @@
lpParms->dwReturn = 22050;
break;
default:
- fprintf(stderr,"WAVE_mciStatus // unknown command %04X !\n", lpParms->dwItem);
+ fprintf(stderr,"WAVE_mciStatus // unknown command %08lX !\n", lpParms->dwItem);
return MCIERR_UNRECOGNIZED_COMMAND;
}
}
if (dwFlags & MCI_NOTIFY) {
- dprintf_mciwave(stddeb,"WAVE_mciStatus // MCI_NOTIFY_SUCCESSFUL %08X !\n", lpParms->dwCallback);
+ dprintf_mciwave(stddeb,"WAVE_mciStatus // MCI_NOTIFY_SUCCESSFUL %08lX !\n", lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
MCIWavDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
}
@@ -690,7 +690,7 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "WAVE_mciGetDevCaps(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ "WAVE_mciGetDevCaps(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (dwFlags & MCI_GETDEVCAPS_ITEM) {
switch(lpParms->dwItem) {
@@ -744,7 +744,7 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "WAVE_mciInfo(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ "WAVE_mciInfo(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
lpParms->lpstrReturn = NULL;
switch(dwFlags) {
@@ -790,7 +790,7 @@
int dsp_stereo = 1;
int bytespersmpl;
dprintf_mciwave(stddeb,
- "wodGetDevCaps(%u, %08X, %u);\n", wDevID, lpCaps, dwSize);
+ "wodGetDevCaps(%u, %p, %lu);\n", wDevID, lpCaps, dwSize);
if (lpCaps == NULL) return MMSYSERR_NOTENABLED;
audio = open (SOUND_DEV, O_WRONLY, 0);
if (audio == -1) return MMSYSERR_NOTENABLED;
@@ -837,7 +837,7 @@
}
close(audio);
dprintf_mciwave(stddeb,
- "wodGetDevCaps // dwFormats = %08X\n", lpCaps->dwFormats);
+ "wodGetDevCaps // dwFormats = %08lX\n", lpCaps->dwFormats);
return MMSYSERR_NOERROR;
#else
return MMSYSERR_NOTENABLED;
@@ -857,7 +857,7 @@
int samplesize;
int dsp_stereo;
dprintf_mciwave(stddeb,
- "wodOpen(%u, %08X, %08X);\n", wDevID, lpDesc, dwFlags);
+ "wodOpen(%u, %p, %08lX);\n", wDevID, lpDesc, dwFlags);
if (lpDesc == NULL) {
fprintf(stderr,"Linux 'wodOpen' // Invalid Parameter !\n");
return MMSYSERR_INVALPARAM;
@@ -925,7 +925,7 @@
IOCTL(audio, SNDCTL_DSP_STEREO, dsp_stereo);
dprintf_mciwave(stddeb,"Linux 'wodOpen' // wBitsPerSample=%u !\n",
WOutDev[wDevID].Format.wBitsPerSample);
- dprintf_mciwave(stddeb,"Linux 'wodOpen' // nSamplesPerSec=%u !\n",
+ dprintf_mciwave(stddeb,"Linux 'wodOpen' // nSamplesPerSec=%lu !\n",
WOutDev[wDevID].Format.wf.nSamplesPerSec);
dprintf_mciwave(stddeb,"Linux 'wodOpen' // nChannels=%u !\n",
WOutDev[wDevID].Format.wf.nChannels);
@@ -969,7 +969,7 @@
DWORD wodWrite(WORD wDevID, LPWAVEHDR lpWaveHdr, DWORD dwSize)
{
#ifdef linux
- dprintf_mciwave(stddeb,"wodWrite(%u, %08X, %08X);\n", wDevID, lpWaveHdr, dwSize);
+ dprintf_mciwave(stddeb,"wodWrite(%u, %p, %08lX);\n", wDevID, lpWaveHdr, dwSize);
if (WOutDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'wodWrite' // can't play !\n");
return MMSYSERR_NOTENABLED;
@@ -980,7 +980,7 @@
lpWaveHdr->dwFlags &= ~WHDR_DONE;
lpWaveHdr->dwFlags |= WHDR_INQUEUE;
dprintf_mciwave(stddeb,
- "wodWrite() // dwBytesRecorded %u !\n", lpWaveHdr->dwBytesRecorded);
+ "wodWrite() // dwBytesRecorded %lu !\n", lpWaveHdr->dwBytesRecorded);
if (write (WOutDev[wDevID].unixdev, lpWaveHdr->lpData,
lpWaveHdr->dwBytesRecorded) != lpWaveHdr->dwBytesRecorded) {
return MMSYSERR_NOTENABLED;
@@ -1004,7 +1004,7 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "wodPrepare(%u, %08X, %08X);\n", wDevID, lpWaveHdr, dwSize);
+ "wodPrepare(%u, %p, %08lX);\n", wDevID, lpWaveHdr, dwSize);
if (WOutDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'wodPrepare' // can't prepare !\n");
return MMSYSERR_NOTENABLED;
@@ -1031,7 +1031,7 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "wodUnprepare(%u, %08X, %08X);\n", wDevID, lpWaveHdr, dwSize);
+ "wodUnprepare(%u, %p, %08lX);\n", wDevID, lpWaveHdr, dwSize);
if (WOutDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'wodUnprepare' // can't unprepare !\n");
return MMSYSERR_NOTENABLED;
@@ -1084,7 +1084,7 @@
{
#ifdef linux
int time;
- dprintf_mciwave(stddeb,"wodGetPosition(%u, %08X, %u);\n", wDevID, lpTime, uSize);
+ dprintf_mciwave(stddeb,"wodGetPosition(%u, %p, %lu);\n", wDevID, lpTime, uSize);
if (WOutDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'wodGetPosition' // can't get pos !\n");
return MMSYSERR_NOTENABLED;
@@ -1094,17 +1094,17 @@
switch(lpTime->wType) {
case TIME_BYTES:
lpTime->u.cb = WOutDev[wDevID].dwTotalPlayed;
- dprintf_mciwave(stddeb,"wodGetPosition // TIME_BYTES=%u\n", lpTime->u.cb);
+ dprintf_mciwave(stddeb,"wodGetPosition // TIME_BYTES=%lu\n", lpTime->u.cb);
break;
case TIME_SAMPLES:
lpTime->u.sample = WOutDev[wDevID].dwTotalPlayed * 8 /
WOutDev[wDevID].Format.wBitsPerSample;
- dprintf_mciwave(stddeb,"wodGetPosition // TIME_SAMPLES=%u\n", lpTime->u.sample);
+ dprintf_mciwave(stddeb,"wodGetPosition // TIME_SAMPLES=%lu\n", lpTime->u.sample);
break;
case TIME_MS:
lpTime->u.ms = WOutDev[wDevID].dwTotalPlayed /
(WOutDev[wDevID].Format.wf.nAvgBytesPerSec / 1000);
- dprintf_mciwave(stddeb,"wodGetPosition // TIME_MS=%u\n", lpTime->u.ms);
+ dprintf_mciwave(stddeb,"wodGetPosition // TIME_MS=%lu\n", lpTime->u.ms);
break;
case TIME_SMPTE:
time = WOutDev[wDevID].dwTotalPlayed /
@@ -1141,7 +1141,7 @@
#ifdef linux
int mixer;
int volume;
- dprintf_mciwave(stddeb,"wodGetVolume(%u, %08X);\n", wDevID, lpdwVol);
+ dprintf_mciwave(stddeb,"wodGetVolume(%u, %p);\n", wDevID, lpdwVol);
if (lpdwVol == NULL) return MMSYSERR_NOTENABLED;
if (WOutDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'wodGetVolume' // can't read volume !\n");
@@ -1172,7 +1172,7 @@
#ifdef linux
int mixer;
int volume;
- dprintf_mciwave(stddeb,"wodSetVolume(%u, %08X);\n", wDevID, dwParam);
+ dprintf_mciwave(stddeb,"wodSetVolume(%u, %08lX);\n", wDevID, dwParam);
volume = LOWORD(dwParam);
if (WOutDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'wodSetVolume' // can't set volume !\n");
@@ -1200,7 +1200,7 @@
DWORD wodMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
DWORD dwParam1, DWORD dwParam2)
{
- dprintf_mciwave(stddeb,"wodMessage(%u, %04X, %08X, %08X, %08X);\n",
+ dprintf_mciwave(stddeb,"wodMessage(%u, %04X, %08lX, %08lX, %08lX);\n",
wDevID, wMsg, dwUser, dwParam1, dwParam2);
switch(wMsg) {
case WODM_OPEN:
@@ -1258,7 +1258,7 @@
int dsp_stereo = 1;
int bytespersmpl;
dprintf_mciwave(stddeb,
- "widGetDevCaps(%u, %08X, %u);\n", wDevID, lpCaps, dwSize);
+ "widGetDevCaps(%u, %p, %lu);\n", wDevID, lpCaps, dwSize);
if (lpCaps == NULL) return MMSYSERR_NOTENABLED;
audio = open (SOUND_DEV, O_RDONLY, 0);
if (audio == -1) return MMSYSERR_NOTENABLED;
@@ -1303,7 +1303,7 @@
}
close(audio);
dprintf_mciwave(stddeb,
- "widGetDevCaps // dwFormats = %08X\n", lpCaps->dwFormats);
+ "widGetDevCaps // dwFormats = %08lX\n", lpCaps->dwFormats);
return MMSYSERR_NOERROR;
#else
return MMSYSERR_NOTENABLED;
@@ -1323,7 +1323,7 @@
int samplesize;
int dsp_stereo;
dprintf_mciwave(stddeb,
- "widOpen(%u, %08X, %08X);\n", wDevID, lpDesc, dwFlags);
+ "widOpen(%u, %p, %08lX);\n", wDevID, lpDesc, dwFlags);
if (lpDesc == NULL) {
fprintf(stderr,"Linux 'widOpen' // Invalid Parameter !\n");
return MMSYSERR_INVALPARAM;
@@ -1393,11 +1393,11 @@
IOCTL(audio, SNDCTL_DSP_STEREO, dsp_stereo);
dprintf_mciwave(stddeb,"Linux 'widOpen' // wBitsPerSample=%u !\n",
WInDev[wDevID].Format.wBitsPerSample);
- dprintf_mciwave(stddeb,"Linux 'widOpen' // nSamplesPerSec=%u !\n",
+ dprintf_mciwave(stddeb,"Linux 'widOpen' // nSamplesPerSec=%lu !\n",
WInDev[wDevID].Format.wf.nSamplesPerSec);
dprintf_mciwave(stddeb,"Linux 'widOpen' // nChannels=%u !\n",
WInDev[wDevID].Format.wf.nChannels);
- dprintf_mciwave(stddeb,"Linux 'widOpen' // nAvgBytesPerSec=%u\n",
+ dprintf_mciwave(stddeb,"Linux 'widOpen' // nAvgBytesPerSec=%lu\n",
WInDev[wDevID].Format.wf.nAvgBytesPerSec);
if (WAVE_NotifyClient(wDevID, WIM_OPEN, 0L, 0L) != MMSYSERR_NOERROR) {
fprintf(stderr,"Linux 'widOpen' // can't notify client !\n");
@@ -1442,7 +1442,7 @@
int count = 1;
LPWAVEHDR lpWIHdr;
dprintf_mciwave(stddeb,
- "widAddBuffer(%u, %08X, %08X);\n", wDevID, lpWaveHdr, dwSize);
+ "widAddBuffer(%u, %p, %08lX);\n", wDevID, lpWaveHdr, dwSize);
if (WInDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'widAddBuffer' // can't do it !\n");
return MMSYSERR_NOTENABLED;
@@ -1489,7 +1489,7 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "widPrepare(%u, %08X, %08X);\n", wDevID, lpWaveHdr, dwSize);
+ "widPrepare(%u, %p, %08lX);\n", wDevID, lpWaveHdr, dwSize);
if (WInDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'widPrepare' // can't prepare !\n");
return MMSYSERR_NOTENABLED;
@@ -1519,7 +1519,7 @@
{
#ifdef linux
dprintf_mciwave(stddeb,
- "widUnprepare(%u, %08X, %08X);\n", wDevID, lpWaveHdr, dwSize);
+ "widUnprepare(%u, %p, %08lX);\n", wDevID, lpWaveHdr, dwSize);
if (WInDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'widUnprepare' // can't unprepare !\n");
return MMSYSERR_NOTENABLED;
@@ -1559,7 +1559,7 @@
while(lpWIHdr != NULL) {
lpWIHdr->dwBufferLength &= 0xFFFF;
dprintf_mciwave(stddeb,
- "widStart // recording buf#%u=%08X size=%u \n",
+ "widStart // recording buf#%u=%p size=%lu \n",
count, lpWIHdr->lpData, lpWIHdr->dwBufferLength);
fflush(stddeb);
read (WInDev[wDevID].unixdev, lpWIHdr->lpData,
@@ -1627,7 +1627,7 @@
#ifdef linux
int time;
dprintf_mciwave(stddeb,
- "widGetPosition(%u, %08X, %u);\n", wDevID, lpTime, uSize);
+ "widGetPosition(%u, %p, %lu);\n", wDevID, lpTime, uSize);
if (WInDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'widGetPosition' // can't get pos !\n");
return MMSYSERR_NOTENABLED;
@@ -1638,31 +1638,31 @@
lpTime->wType);
dprintf_mciwave(stddeb,"widGetPosition // wBitsPerSample=%u\n",
WInDev[wDevID].Format.wBitsPerSample);
- dprintf_mciwave(stddeb,"widGetPosition // nSamplesPerSec=%u\n",
+ dprintf_mciwave(stddeb,"widGetPosition // nSamplesPerSec=%lu\n",
WInDev[wDevID].Format.wf.nSamplesPerSec);
dprintf_mciwave(stddeb,"widGetPosition // nChannels=%u\n",
WInDev[wDevID].Format.wf.nChannels);
- dprintf_mciwave(stddeb,"widGetPosition // nAvgBytesPerSec=%u\n",
+ dprintf_mciwave(stddeb,"widGetPosition // nAvgBytesPerSec=%lu\n",
WInDev[wDevID].Format.wf.nAvgBytesPerSec);
fflush(stddeb);
switch(lpTime->wType) {
case TIME_BYTES:
lpTime->u.cb = WInDev[wDevID].dwTotalRecorded;
dprintf_mciwave(stddeb,
- "widGetPosition // TIME_BYTES=%u\n", lpTime->u.cb);
+ "widGetPosition // TIME_BYTES=%lu\n", lpTime->u.cb);
break;
case TIME_SAMPLES:
lpTime->u.sample = WInDev[wDevID].dwTotalRecorded * 8 /
WInDev[wDevID].Format.wBitsPerSample;
dprintf_mciwave(stddeb,
- "widGetPosition // TIME_SAMPLES=%u\n",
+ "widGetPosition // TIME_SAMPLES=%lu\n",
lpTime->u.sample);
break;
case TIME_MS:
lpTime->u.ms = WInDev[wDevID].dwTotalRecorded /
(WInDev[wDevID].Format.wf.nAvgBytesPerSec / 1000);
dprintf_mciwave(stddeb,
- "widGetPosition // TIME_MS=%u\n", lpTime->u.ms);
+ "widGetPosition // TIME_MS=%lu\n", lpTime->u.ms);
break;
case TIME_SMPTE:
time = WInDev[wDevID].dwTotalRecorded /
@@ -1696,7 +1696,7 @@
DWORD widMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
DWORD dwParam1, DWORD dwParam2)
{
- dprintf_mciwave(stddeb,"widMessage(%u, %04X, %08X, %08X, %08X);\n",
+ dprintf_mciwave(stddeb,"widMessage(%u, %04X, %08lX, %08lX, %08lX);\n",
wDevID, wMsg, dwUser, dwParam1, dwParam2);
switch(wMsg) {
case WIDM_OPEN:
diff --git a/multimedia/mcianim.c b/multimedia/mcianim.c
index ce2ddc2..331ea52 100644
--- a/multimedia/mcianim.c
+++ b/multimedia/mcianim.c
@@ -66,10 +66,7 @@
{
#ifdef linux
UINT wDevID;
- int cdrom;
- dprintf_mcianim(stddeb,"ANIM_mciOpen(%08X, %08X);\n",
- dwFlags, lpParms);
- printf("ANIM_mciOpen(%08X, %08X);\n", dwFlags, lpParms);
+ dprintf_mcianim(stddeb,"ANIM_mciOpen(%08lX, %p);\n", dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
wDevID = lpParms->wDeviceID;
if (AnimDev[wDevID].nUseCount > 0) {
@@ -101,7 +98,7 @@
AnimDev[wDevID].lpdwTrackPos = NULL;
if (dwFlags & MCI_NOTIFY) {
dprintf_mcianim(stddeb,
- "ANIM_mciOpen // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "ANIM_mciOpen // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
AnimDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -118,11 +115,12 @@
DWORD ANIM_mciClose(UINT wDevID, DWORD dwParam, LPMCI_GENERIC_PARMS lpParms)
{
#ifdef linux
- dprintf_mcianim(stddeb,"ANIM_mciClose(%u, %08X, %08X);\n",
+ dprintf_mcianim(stddeb,"ANIM_mciClose(%u, %08lX, %p);\n",
wDevID, dwParam, lpParms);
if (AnimDev[wDevID].lpdwTrackLen != NULL) free(AnimDev[wDevID].lpdwTrackLen);
if (AnimDev[wDevID].lpdwTrackPos != NULL) free(AnimDev[wDevID].lpdwTrackPos);
#endif
+ return 0;
}
/**************************************************************************
@@ -132,12 +130,12 @@
LPMCI_GETDEVCAPS_PARMS lpParms)
{
#ifdef linux
- dprintf_mcianim(stddeb,"ANIM_mciGetDevCaps(%u, %08X, %08X);\n",
+ dprintf_mcianim(stddeb,"ANIM_mciGetDevCaps(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (dwFlags & MCI_GETDEVCAPS_ITEM) {
dprintf_mcianim(stddeb,
- "ANIM_mciGetDevCaps // MCI_GETDEVCAPS_ITEM dwItem=%08X;\n",
+ "ANIM_mciGetDevCaps // MCI_GETDEVCAPS_ITEM dwItem=%08lX;\n",
lpParms->dwItem);
switch(lpParms->dwItem) {
case MCI_GETDEVCAPS_CAN_RECORD:
@@ -172,7 +170,7 @@
}
}
dprintf_mcianim(stddeb,
- "ANIM_mciGetDevCaps // lpParms->dwReturn=%08X;\n",
+ "ANIM_mciGetDevCaps // lpParms->dwReturn=%08lX;\n",
lpParms->dwReturn);
return 0;
#else
@@ -186,7 +184,7 @@
DWORD ANIM_mciInfo(UINT wDevID, DWORD dwFlags, LPMCI_INFO_PARMS lpParms)
{
#ifdef linux
- dprintf_mcianim(stddeb,"ANIM_mciInfo(%u, %08X, %08X);\n",
+ dprintf_mcianim(stddeb,"ANIM_mciInfo(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
lpParms->lpstrReturn = NULL;
@@ -220,12 +218,12 @@
DWORD ANIM_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_STATUS_PARMS lpParms)
{
#ifdef linux
- dprintf_mcianim(stddeb,"ANIM_mciStatus(%u, %08X, %08X);\n",
+ dprintf_mcianim(stddeb,"ANIM_mciStatus(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (dwFlags & MCI_NOTIFY) {
dprintf_mcianim(stddeb,
- "ANIM_mciStatus // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "ANIM_mciStatus // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
AnimDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -234,11 +232,11 @@
switch(lpParms->dwItem) {
case MCI_STATUS_CURRENT_TRACK:
lpParms->dwReturn = AnimDev[wDevID].nCurTrack;
- dprintf_mcianim(stddeb,"ANIM_mciStatus // CURRENT_TRACK=%u!\n", lpParms->dwReturn);
+ dprintf_mcianim(stddeb,"ANIM_mciStatus // CURRENT_TRACK=%lu!\n", lpParms->dwReturn);
return 0;
case MCI_STATUS_LENGTH:
if (dwFlags & MCI_TRACK) {
- dprintf_mcianim(stddeb,"ANIM_mciStatus // MCI_TRACK #%u LENGTH=??? !\n",
+ dprintf_mcianim(stddeb,"ANIM_mciStatus // MCI_TRACK #%lu LENGTH=??? !\n",
lpParms->dwTrack);
if (lpParms->dwTrack > AnimDev[wDevID].nTracks)
return MCIERR_OUTOFRANGE;
@@ -248,11 +246,11 @@
lpParms->dwReturn = AnimDev[wDevID].dwTotalLen;
lpParms->dwReturn = ANIM_CalcTime(wDevID,
AnimDev[wDevID].dwTimeFormat, lpParms->dwReturn);
- dprintf_mcianim(stddeb,"ANIM_mciStatus // LENGTH=%u !\n", lpParms->dwReturn);
+ dprintf_mcianim(stddeb,"ANIM_mciStatus // LENGTH=%lu !\n", lpParms->dwReturn);
return 0;
case MCI_STATUS_MODE:
lpParms->dwReturn = AnimDev[wDevID].mode;
- dprintf_mcianim(stddeb,"ANIM_mciStatus // MCI_STATUS_MODE=%08X !\n",
+ dprintf_mcianim(stddeb,"ANIM_mciStatus // MCI_STATUS_MODE=%08lX !\n",
lpParms->dwReturn);
return 0;
case MCI_STATUS_MEDIA_PRESENT:
@@ -261,7 +259,7 @@
return 0;
case MCI_STATUS_NUMBER_OF_TRACKS:
lpParms->dwReturn = 1;
- dprintf_mcianim(stddeb,"ANIM_mciStatus // MCI_STATUS_NUMBER_OF_TRACKS = %u !\n",
+ dprintf_mcianim(stddeb,"ANIM_mciStatus // MCI_STATUS_NUMBER_OF_TRACKS = %lu !\n",
lpParms->dwReturn);
if (lpParms->dwReturn == (WORD)-1) return MCIERR_INTERNAL;
return 0;
@@ -275,11 +273,11 @@
if (lpParms->dwTrack > AnimDev[wDevID].nTracks)
return MCIERR_OUTOFRANGE;
lpParms->dwReturn = AnimDev[wDevID].lpdwTrackPos[lpParms->dwTrack - 1];
- dprintf_mcianim(stddeb,"ANIM_mciStatus // get MCI_TRACK #%u !\n", lpParms->dwTrack);
+ dprintf_mcianim(stddeb,"ANIM_mciStatus // get MCI_TRACK #%lu !\n", lpParms->dwTrack);
}
lpParms->dwReturn = ANIM_CalcTime(wDevID,
AnimDev[wDevID].dwTimeFormat, lpParms->dwReturn);
- dprintf_mcianim(stddeb,"ANIM_mciStatus // MCI_STATUS_POSITION=%08X !\n",
+ dprintf_mcianim(stddeb,"ANIM_mciStatus // MCI_STATUS_POSITION=%08lX !\n",
lpParms->dwReturn);
return 0;
case MCI_STATUS_READY:
@@ -291,7 +289,7 @@
lpParms->dwReturn = MCI_FORMAT_MILLISECONDS;
return 0;
default:
- fprintf(stderr,"ANIM_mciStatus // unknown command %04X !\n", lpParms->dwItem);
+ fprintf(stderr,"ANIM_mciStatus // unknown command %08lX !\n", lpParms->dwItem);
return MCIERR_UNRECOGNIZED_COMMAND;
}
}
@@ -314,14 +312,14 @@
UINT wMinutes;
UINT wSeconds;
UINT wFrames;
- dprintf_mcianim(stddeb,"ANIM_CalcTime(%u, %08X, %lu);\n",
+ dprintf_mcianim(stddeb,"ANIM_CalcTime(%u, %08lX, %lu);\n",
wDevID, dwFormatType, dwFrame);
TryAGAIN:
switch (dwFormatType) {
case MCI_FORMAT_MILLISECONDS:
dwTime = dwFrame / ANIMFRAMES_PERSEC * 1000;
dprintf_mcianim(stddeb,
- "ANIM_CalcTime // MILLISECONDS %u\n", dwTime);
+ "ANIM_CalcTime // MILLISECONDS %lu\n", dwTime);
break;
case MCI_FORMAT_MSF:
wMinutes = dwFrame / ANIMFRAMES_PERMIN;
@@ -329,7 +327,7 @@
wFrames = dwFrame - ANIMFRAMES_PERMIN * wMinutes -
ANIMFRAMES_PERSEC * wSeconds;
dwTime = MCI_MAKE_MSF(wMinutes, wSeconds, wFrames);
- dprintf_mcianim(stddeb,"ANIM_CalcTime // MSF %02u:%02u:%02u -> dwTime=%u\n",
+ dprintf_mcianim(stddeb,"ANIM_CalcTime // MSF %02u:%02u:%02u -> dwTime=%lu\n",
wMinutes, wSeconds, wFrames, dwTime);
break;
case MCI_FORMAT_TMSF:
@@ -366,14 +364,14 @@
DWORD dwFrame = 0;
#ifdef linux
UINT wTrack;
- dprintf_mcianim(stddeb,"ANIM_CalcFrame(%u, %08X, %lu);\n",
+ dprintf_mcianim(stddeb,"ANIM_CalcFrame(%u, %08lX, %lu);\n",
wDevID, dwFormatType, dwTime);
TryAGAIN:
switch (dwFormatType) {
case MCI_FORMAT_MILLISECONDS:
dwFrame = dwTime * ANIMFRAMES_PERSEC / 1000;
dprintf_mcianim(stddeb,
- "ANIM_CalcFrame // MILLISECONDS %u\n", dwFrame);
+ "ANIM_CalcFrame // MILLISECONDS %lu\n", dwFrame);
break;
case MCI_FORMAT_MSF:
dprintf_mcianim(stddeb,
@@ -391,7 +389,7 @@
MCI_TMSF_TRACK(dwTime), MCI_TMSF_MINUTE(dwTime),
MCI_TMSF_SECOND(dwTime), MCI_TMSF_FRAME(dwTime));
dprintf_mcianim(stddeb,
- "ANIM_CalcFrame // TMSF trackpos[%u]=%u\n",
+ "ANIM_CalcFrame // TMSF trackpos[%u]=%lu\n",
wTrack, AnimDev[wDevID].lpdwTrackPos[wTrack - 1]);
dwFrame = AnimDev[wDevID].lpdwTrackPos[wTrack - 1];
dwFrame += ANIMFRAMES_PERMIN * MCI_TMSF_MINUTE(dwTime);
@@ -416,29 +414,28 @@
{
#ifdef linux
int start, end;
- dprintf_mcianim(stddeb,"ANIM_mciPlay(%u, %08X, %08X);\n",
+ dprintf_mcianim(stddeb,"ANIM_mciPlay(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
- printf("ANIM_mciPlay(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
start = 0; end = AnimDev[wDevID].dwTotalLen;
AnimDev[wDevID].nCurTrack = 1;
if (dwFlags & MCI_FROM) {
start = ANIM_CalcFrame(wDevID,
AnimDev[wDevID].dwTimeFormat, lpParms->dwFrom);
- dprintf_mcianim(stddeb,"ANIM_mciPlay // MCI_FROM=%08X -> %u \n",
+ dprintf_mcianim(stddeb,"ANIM_mciPlay // MCI_FROM=%08lX -> %u \n",
lpParms->dwFrom, start);
}
if (dwFlags & MCI_TO) {
end = ANIM_CalcFrame(wDevID,
AnimDev[wDevID].dwTimeFormat, lpParms->dwTo);
dprintf_mcianim(stddeb,
- "ANIM_mciPlay // MCI_TO=%08X -> %u \n",
+ "ANIM_mciPlay // MCI_TO=%08lX -> %u \n",
lpParms->dwTo, end);
}
AnimDev[wDevID].mode = MCI_MODE_PLAY;
if (dwFlags & MCI_NOTIFY) {
dprintf_mcianim(stddeb,
- "ANIM_mciPlay // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "ANIM_mciPlay // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
AnimDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -455,13 +452,13 @@
DWORD ANIM_mciStop(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
{
#ifdef linux
- dprintf_mcianim(stddeb,"ANIM_mciStop(%u, %08X, %08X);\n",
+ dprintf_mcianim(stddeb,"ANIM_mciStop(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
AnimDev[wDevID].mode = MCI_MODE_STOP;
if (dwFlags & MCI_NOTIFY) {
dprintf_mcianim(stddeb,
- "ANIM_mciStop // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "ANIM_mciStop // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
AnimDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -478,13 +475,13 @@
DWORD ANIM_mciPause(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
{
#ifdef linux
- dprintf_mcianim(stddeb,"ANIM_mciPause(%u, %08X, %08X);\n",
+ dprintf_mcianim(stddeb,"ANIM_mciPause(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
AnimDev[wDevID].mode = MCI_MODE_PAUSE;
if (dwFlags & MCI_NOTIFY) {
dprintf_mcianim(stddeb,
- "ANIM_mciPause // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "ANIM_mciPause // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
AnimDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -501,13 +498,13 @@
DWORD ANIM_mciResume(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
{
#ifdef linux
- dprintf_mcianim(stddeb,"ANIM_mciResume(%u, %08X, %08X);\n",
+ dprintf_mcianim(stddeb,"ANIM_mciResume(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
AnimDev[wDevID].mode = MCI_MODE_STOP;
if (dwFlags & MCI_NOTIFY) {
dprintf_mcianim(stddeb,
- "ANIM_mciResume // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "ANIM_mciResume // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
AnimDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -526,7 +523,7 @@
#ifdef linux
DWORD dwRet;
MCI_PLAY_PARMS PlayParms;
- dprintf_mcianim(stddeb,"ANIM_mciSeek(%u, %08X, %08X);\n",
+ dprintf_mcianim(stddeb,"ANIM_mciSeek(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
AnimDev[wDevID].mode = MCI_MODE_SEEK;
@@ -546,7 +543,7 @@
dwRet = ANIM_mciStop(wDevID, MCI_WAIT, (LPMCI_GENERIC_PARMS)&PlayParms);
if (dwFlags & MCI_NOTIFY) {
dprintf_mcianim(stddeb,
- "ANIM_mciSeek // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "ANIM_mciSeek // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
AnimDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -564,12 +561,12 @@
DWORD ANIM_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_SET_PARMS lpParms)
{
#ifdef linux
- dprintf_mcianim(stddeb,"ANIM_mciSet(%u, %08X, %08X);\n",
+ dprintf_mcianim(stddeb,"ANIM_mciSet(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
/*
- printf("ANIM_mciSet // dwTimeFormat=%08X\n", lpParms->dwTimeFormat);
- printf("ANIM_mciSet // dwAudio=%08X\n", lpParms->dwAudio);
+ printf("ANIM_mciSet // dwTimeFormat=%08lX\n", lpParms->dwTimeFormat);
+ printf("ANIM_mciSet // dwAudio=%08lX\n", lpParms->dwAudio);
*/
if (dwFlags & MCI_SET_TIME_FORMAT) {
switch (lpParms->dwTimeFormat) {
@@ -594,7 +591,7 @@
if (dwFlags & MCI_SET_OFF) return MCIERR_UNSUPPORTED_FUNCTION;
if (dwFlags & MCI_NOTIFY) {
dprintf_mcianim(stddeb,
- "ANIM_mciSet // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "ANIM_mciSet // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
AnimDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
diff --git a/multimedia/mcicda.c b/multimedia/mcicda.c
index 6775335..1339f1d 100644
--- a/multimedia/mcicda.c
+++ b/multimedia/mcicda.c
@@ -85,8 +85,7 @@
{
#ifdef linux
UINT wDevID;
- int cdrom;
- dprintf_cdaudio(stddeb,"CDAUDIO_mciOpen(%08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciOpen(%08lX, %p);\n",
dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
wDevID = lpParms->wDeviceID;
@@ -128,7 +127,7 @@
}
if (dwFlags & MCI_NOTIFY) {
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciOpen // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "CDAUDIO_mciOpen // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
CDADev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -145,12 +144,13 @@
DWORD CDAUDIO_mciClose(UINT wDevID, DWORD dwParam, LPMCI_GENERIC_PARMS lpParms)
{
#ifdef linux
- dprintf_cdaudio(stddeb,"CDAUDIO_mciClose(%u, %08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciClose(%u, %08lX, %p);\n",
wDevID, dwParam, lpParms);
if (CDADev[wDevID].lpdwTrackLen != NULL) free(CDADev[wDevID].lpdwTrackLen);
if (CDADev[wDevID].lpdwTrackPos != NULL) free(CDADev[wDevID].lpdwTrackPos);
close(CDADev[wDevID].unixdev);
#endif
+ return 0;
}
/**************************************************************************
@@ -160,12 +160,12 @@
LPMCI_GETDEVCAPS_PARMS lpParms)
{
#ifdef linux
- dprintf_cdaudio(stddeb,"CDAUDIO_mciGetDevCaps(%u, %08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciGetDevCaps(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (dwFlags & MCI_GETDEVCAPS_ITEM) {
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciGetDevCaps // MCI_GETDEVCAPS_ITEM dwItem=%08X;\n",
+ "CDAUDIO_mciGetDevCaps // MCI_GETDEVCAPS_ITEM dwItem=%08lX;\n",
lpParms->dwItem);
switch(lpParms->dwItem) {
case MCI_GETDEVCAPS_CAN_RECORD:
@@ -200,7 +200,7 @@
}
}
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciGetDevCaps // lpParms->dwReturn=%08X;\n",
+ "CDAUDIO_mciGetDevCaps // lpParms->dwReturn=%08lX;\n",
lpParms->dwReturn);
return 0;
#else
@@ -214,7 +214,7 @@
DWORD CDAUDIO_mciInfo(UINT wDevID, DWORD dwFlags, LPMCI_INFO_PARMS lpParms)
{
#ifdef linux
- dprintf_cdaudio(stddeb,"CDAUDIO_mciInfo(%u, %08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciInfo(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
lpParms->lpstrReturn = NULL;
@@ -241,13 +241,13 @@
DWORD CDAUDIO_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_STATUS_PARMS lpParms)
{
#ifdef linux
- dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus(%u, %08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (CDADev[wDevID].unixdev == 0) return MMSYSERR_NOTENABLED;
if (dwFlags & MCI_NOTIFY) {
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciStatus // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "CDAUDIO_mciStatus // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
CDADev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -257,7 +257,7 @@
case MCI_STATUS_CURRENT_TRACK:
if (!CDAUDIO_GetCDStatus(wDevID)) return MCIERR_INTERNAL;
lpParms->dwReturn = CDADev[wDevID].nCurTrack;
- dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // CURRENT_TRACK=%u!\n", lpParms->dwReturn);
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // CURRENT_TRACK=%lu!\n", lpParms->dwReturn);
return 0;
case MCI_STATUS_LENGTH:
if (CDADev[wDevID].nTracks == 0) {
@@ -267,7 +267,7 @@
}
}
if (dwFlags & MCI_TRACK) {
- dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // MCI_TRACK #%u LENGTH=??? !\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // MCI_TRACK #%lu LENGTH=??? !\n",
lpParms->dwTrack);
if (lpParms->dwTrack > CDADev[wDevID].nTracks)
return MCIERR_OUTOFRANGE;
@@ -277,12 +277,12 @@
lpParms->dwReturn = CDADev[wDevID].dwTotalLen;
lpParms->dwReturn = CDAUDIO_CalcTime(wDevID,
CDADev[wDevID].dwTimeFormat, lpParms->dwReturn);
- dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // LENGTH=%u !\n", lpParms->dwReturn);
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // LENGTH=%lu !\n", lpParms->dwReturn);
return 0;
case MCI_STATUS_MODE:
if (!CDAUDIO_GetCDStatus(wDevID)) return MCIERR_INTERNAL;
lpParms->dwReturn = CDADev[wDevID].mode;
- dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // MCI_STATUS_MODE=%08X !\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // MCI_STATUS_MODE=%08lX !\n",
lpParms->dwReturn);
return 0;
case MCI_STATUS_MEDIA_PRESENT:
@@ -294,7 +294,7 @@
return 0;
case MCI_STATUS_NUMBER_OF_TRACKS:
lpParms->dwReturn = CDAUDIO_GetNumberOfTracks(wDevID);
- dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // MCI_STATUS_NUMBER_OF_TRACKS = %u !\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // MCI_STATUS_NUMBER_OF_TRACKS = %lu !\n",
lpParms->dwReturn);
if (lpParms->dwReturn == (WORD)-1) return MCIERR_INTERNAL;
return 0;
@@ -309,11 +309,11 @@
if (lpParms->dwTrack > CDADev[wDevID].nTracks)
return MCIERR_OUTOFRANGE;
lpParms->dwReturn = CDADev[wDevID].lpdwTrackPos[lpParms->dwTrack - 1];
- dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // get MCI_TRACK #%u !\n", lpParms->dwTrack);
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // get MCI_TRACK #%lu !\n", lpParms->dwTrack);
}
lpParms->dwReturn = CDAUDIO_CalcTime(wDevID,
CDADev[wDevID].dwTimeFormat, lpParms->dwReturn);
- dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // MCI_STATUS_POSITION=%08X !\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciStatus // MCI_STATUS_POSITION=%08lX !\n",
lpParms->dwReturn);
return 0;
case MCI_STATUS_READY:
@@ -325,7 +325,7 @@
lpParms->dwReturn = MCI_FORMAT_MILLISECONDS;
return 0;
default:
- fprintf(stderr,"CDAUDIO_mciStatus // unknown command %04X !\n", lpParms->dwItem);
+ fprintf(stderr,"CDAUDIO_mciStatus // unknown command %08lX !\n", lpParms->dwItem);
return MCIERR_UNRECOGNIZED_COMMAND;
}
}
@@ -348,14 +348,14 @@
UINT wMinutes;
UINT wSeconds;
UINT wFrames;
- dprintf_cdaudio(stddeb,"CDAUDIO_CalcTime(%u, %08X, %lu);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_CalcTime(%u, %08lX, %lu);\n",
wDevID, dwFormatType, dwFrame);
TryAGAIN:
switch (dwFormatType) {
case MCI_FORMAT_MILLISECONDS:
dwTime = dwFrame / CDFRAMES_PERSEC * 1000;
dprintf_cdaudio(stddeb,
- "CDAUDIO_CalcTime // MILLISECONDS %u\n",
+ "CDAUDIO_CalcTime // MILLISECONDS %lu\n",
dwTime);
break;
case MCI_FORMAT_MSF:
@@ -364,7 +364,7 @@
wFrames = dwFrame - CDFRAMES_PERMIN * wMinutes -
CDFRAMES_PERSEC * wSeconds;
dwTime = MCI_MAKE_MSF(wMinutes, wSeconds, wFrames);
- dprintf_cdaudio(stddeb,"CDAUDIO_CalcTime // MSF %02u:%02u:%02u -> dwTime=%u\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_CalcTime // MSF %02u:%02u:%02u -> dwTime=%lu\n",
wMinutes, wSeconds, wFrames, dwTime);
break;
case MCI_FORMAT_TMSF:
@@ -401,14 +401,14 @@
DWORD dwFrame = 0;
#ifdef linux
UINT wTrack;
- dprintf_cdaudio(stddeb,"CDAUDIO_CalcFrame(%u, %08X, %lu);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_CalcFrame(%u, %08lX, %lu);\n",
wDevID, dwFormatType, dwTime);
TryAGAIN:
switch (dwFormatType) {
case MCI_FORMAT_MILLISECONDS:
dwFrame = dwTime * CDFRAMES_PERSEC / 1000;
dprintf_cdaudio(stddeb,
- "CDAUDIO_CalcFrame // MILLISECONDS %u\n",
+ "CDAUDIO_CalcFrame // MILLISECONDS %lu\n",
dwFrame);
break;
case MCI_FORMAT_MSF:
@@ -427,7 +427,7 @@
MCI_TMSF_TRACK(dwTime), MCI_TMSF_MINUTE(dwTime),
MCI_TMSF_SECOND(dwTime), MCI_TMSF_FRAME(dwTime));
dprintf_cdaudio(stddeb,
- "CDAUDIO_CalcFrame // TMSF trackpos[%u]=%u\n",
+ "CDAUDIO_CalcFrame // TMSF trackpos[%u]=%lu\n",
wTrack, CDADev[wDevID].lpdwTrackPos[wTrack - 1]);
dwFrame = CDADev[wDevID].lpdwTrackPos[wTrack - 1];
dwFrame += CDFRAMES_PERMIN * MCI_TMSF_MINUTE(dwTime);
@@ -605,7 +605,7 @@
#ifdef linux
int start, end;
struct cdrom_msf msf;
- dprintf_cdaudio(stddeb,"CDAUDIO_mciPlay(%u, %08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciPlay(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (CDADev[wDevID].unixdev == 0) return MMSYSERR_NOTENABLED;
@@ -614,14 +614,14 @@
if (dwFlags & MCI_FROM) {
start = CDAUDIO_CalcFrame(wDevID,
CDADev[wDevID].dwTimeFormat, lpParms->dwFrom);
- dprintf_cdaudio(stddeb,"CDAUDIO_mciPlay // MCI_FROM=%08X -> %u \n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciPlay // MCI_FROM=%08lX -> %u \n",
lpParms->dwFrom, start);
}
if (dwFlags & MCI_TO) {
end = CDAUDIO_CalcFrame(wDevID,
CDADev[wDevID].dwTimeFormat, lpParms->dwTo);
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciPlay // MCI_TO=%08X -> %u \n",
+ "CDAUDIO_mciPlay // MCI_TO=%08lX -> %u \n",
lpParms->dwTo, end);
}
start += CDADev[wDevID].dwFirstOffset;
@@ -646,7 +646,7 @@
CDADev[wDevID].mode = MCI_MODE_PLAY;
if (dwFlags & MCI_NOTIFY) {
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciPlay // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "CDAUDIO_mciPlay // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
CDADev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -663,14 +663,14 @@
DWORD CDAUDIO_mciStop(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
{
#ifdef linux
- dprintf_cdaudio(stddeb,"CDAUDIO_mciStop(%u, %08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciStop(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (ioctl(CDADev[wDevID].unixdev, CDROMSTOP)) return MCIERR_HARDWARE;
CDADev[wDevID].mode = MCI_MODE_STOP;
if (dwFlags & MCI_NOTIFY) {
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciStop // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "CDAUDIO_mciStop // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
CDADev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -687,14 +687,14 @@
DWORD CDAUDIO_mciPause(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
{
#ifdef linux
- dprintf_cdaudio(stddeb,"CDAUDIO_mciPause(%u, %08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciPause(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (ioctl(CDADev[wDevID].unixdev, CDROMPAUSE)) return MCIERR_HARDWARE;
CDADev[wDevID].mode = MCI_MODE_PAUSE;
if (dwFlags & MCI_NOTIFY) {
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciPause // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "CDAUDIO_mciPause // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
CDADev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -711,14 +711,14 @@
DWORD CDAUDIO_mciResume(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
{
#ifdef linux
- dprintf_cdaudio(stddeb,"CDAUDIO_mciResume(%u, %08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciResume(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (ioctl(CDADev[wDevID].unixdev, CDROMRESUME)) return MCIERR_HARDWARE;
CDADev[wDevID].mode = MCI_MODE_STOP;
if (dwFlags & MCI_NOTIFY) {
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciResume // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "CDAUDIO_mciResume // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
CDADev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -737,7 +737,7 @@
#ifdef linux
DWORD dwRet;
MCI_PLAY_PARMS PlayParms;
- dprintf_cdaudio(stddeb,"CDAUDIO_mciSeek(%u, %08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciSeek(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (ioctl(CDADev[wDevID].unixdev, CDROMRESUME)) return MCIERR_HARDWARE;
@@ -758,7 +758,7 @@
dwRet = CDAUDIO_mciStop(wDevID, MCI_WAIT, (LPMCI_GENERIC_PARMS)&PlayParms);
if (dwFlags & MCI_NOTIFY) {
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciSeek // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "CDAUDIO_mciSeek // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
CDADev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -776,12 +776,12 @@
DWORD CDAUDIO_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_SET_PARMS lpParms)
{
#ifdef linux
- dprintf_cdaudio(stddeb,"CDAUDIO_mciSet(%u, %08X, %08X);\n",
+ dprintf_cdaudio(stddeb,"CDAUDIO_mciSet(%u, %08lX, %p);\n",
wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
/*
- printf("CDAUDIO_mciSet // dwTimeFormat=%08X\n", lpParms->dwTimeFormat);
- printf("CDAUDIO_mciSet // dwAudio=%08X\n", lpParms->dwAudio);
+ printf("CDAUDIO_mciSet // dwTimeFormat=%08lX\n", lpParms->dwTimeFormat);
+ printf("CDAUDIO_mciSet // dwAudio=%08lX\n", lpParms->dwAudio);
*/
if (dwFlags & MCI_SET_TIME_FORMAT) {
switch (lpParms->dwTimeFormat) {
@@ -818,7 +818,7 @@
if (dwFlags & MCI_SET_OFF) return MCIERR_UNSUPPORTED_FUNCTION;
if (dwFlags & MCI_NOTIFY) {
dprintf_cdaudio(stddeb,
- "CDAUDIO_mciSet // MCI_NOTIFY_SUCCESSFUL %08X !\n",
+ "CDAUDIO_mciSet // MCI_NOTIFY_SUCCESSFUL %08lX !\n",
lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
CDADev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
diff --git a/multimedia/midi.c b/multimedia/midi.c
index df24045..05f271b 100644
--- a/multimedia/midi.c
+++ b/multimedia/midi.c
@@ -12,20 +12,19 @@
#ifdef BUILTIN_MMSYSTEM
#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
#include "win.h"
#include "user.h"
#include "driver.h"
#include "mmsystem.h"
-#include <fcntl.h>
-#include <sys/ioctl.h>
#include "stddebug.h"
/* #define DEBUG_MIDI */
-
-#define DEBUG_MIDI
#include "debug.h"
-
#ifdef linux
#include <linux/soundcard.h>
#endif
@@ -122,6 +121,7 @@
printf("MIDI_NotifyClient // can't notify client !\n");
return MMSYSERR_NOERROR;
}
+ return 0;
#else
return MMSYSERR_NOTENABLED;
#endif
@@ -196,6 +196,7 @@
*/
DWORD MIDI_ReadByte(UINT wDevID, BYTE FAR *lpbyt)
{
+#ifdef linux
if (lpbyt != NULL) {
if (mmioRead(MCIMidiDev[wDevID].hFile, (HPSTR)lpbyt,
(long) sizeof(BYTE)) == (long) sizeof(BYTE)) {
@@ -204,6 +205,10 @@
}
printf("MIDI_ReadByte // error reading wDevID=%d \n", wDevID);
return MCIERR_INTERNAL;
+
+#else
+ return MMSYSERR_NOTENABLED;
+#endif
}
@@ -232,7 +237,6 @@
DWORD MIDI_ReadLong(UINT wDevID, LPDWORD lpdw)
{
WORD hiword, loword;
- BYTE hibyte, lobyte;
if (lpdw != NULL) {
if (MIDI_ReadWord(wDevID, &hiword) == 0) {
if (MIDI_ReadWord(wDevID, &loword) == 0) {
@@ -279,11 +283,12 @@
*/
DWORD MIDI_ReadMThd(UINT wDevID, DWORD dwOffset)
{
+#ifdef linux
DWORD toberead;
FOURCC fourcc;
- dprintf_midi(stddeb, "MIDI_ReadMThd(%04X, %08X);\n", wDevID, dwOffset);
+ dprintf_midi(stddeb, "MIDI_ReadMThd(%04X, %08lX);\n", wDevID, dwOffset);
if (mmioSeek(MCIMidiDev[wDevID].hFile, dwOffset, SEEK_SET) != dwOffset) {
- printf("MIDI_ReadMThd // can't seek at %08X begin of 'MThd' \n", dwOffset);
+ printf("MIDI_ReadMThd // can't seek at %08lX begin of 'MThd' \n", dwOffset);
return MCIERR_INTERNAL;
}
if (mmioRead(MCIMidiDev[wDevID].hFile, (HPSTR)&fourcc,
@@ -302,7 +307,7 @@
if (MIDI_ReadWord(wDevID, &MCIMidiDev[wDevID].nTempo) != 0) {
return MCIERR_INTERNAL;
}
- printf("MIDI_ReadMThd // toberead=%08X, wFormat=%04X nTracks=%04X nTempo=%04X\n",
+ printf("MIDI_ReadMThd // toberead=%08lX, wFormat=%04X nTracks=%04X nTempo=%04X\n",
toberead, MCIMidiDev[wDevID].wFormat,
MCIMidiDev[wDevID].nTracks,
MCIMidiDev[wDevID].nTempo);
@@ -312,15 +317,20 @@
Mf_division = division = read16bit ();
*/
return 0;
+
+#else
+ return MMSYSERR_NOTENABLED;
+#endif
}
DWORD MIDI_ReadMTrk(UINT wDevID, DWORD dwOffset)
{
+#ifdef linux
DWORD toberead;
FOURCC fourcc;
if (mmioSeek(MCIMidiDev[wDevID].hFile, dwOffset, SEEK_SET) != dwOffset) {
- printf("MIDI_ReadMTrk // can't seek at %08X begin of 'MThd' \n", dwOffset);
+ printf("MIDI_ReadMTrk // can't seek at %08lX begin of 'MThd' \n", dwOffset);
}
if (mmioRead(MCIMidiDev[wDevID].hFile, (HPSTR)&fourcc,
(long) sizeof(FOURCC)) != (long) sizeof(FOURCC)) {
@@ -329,10 +339,13 @@
if (MIDI_ReadLong(wDevID, &toberead) != 0) {
return MCIERR_INTERNAL;
}
- printf("MIDI_ReadMTrk // toberead=%08X\n", toberead);
+ printf("MIDI_ReadMTrk // toberead=%08lX\n", toberead);
toberead -= 3 * sizeof(WORD);
MCIMidiDev[wDevID].dwTotalLen = toberead;
return 0;
+#else
+ return MMSYSERR_NOTENABLED;
+#endif
}
@@ -342,18 +355,13 @@
DWORD MIDI_mciOpen(DWORD dwFlags, LPMCI_OPEN_PARMS lpParms)
{
#ifdef linux
- int hFile;
UINT wDevID;
- OFSTRUCT OFstruct;
MIDIOPENDESC MidiDesc;
DWORD dwRet;
DWORD dwOffset;
char str[128];
- LPSTR ptr;
- DWORD toberead;
-#ifdef DEBUG_MIDI
- printf("MIDI_mciOpen(%08X, %08X)\n", dwFlags, lpParms);
-#endif
+
+ dprintf_midi( stddeb, "MIDI_mciOpen(%08lX, %p)\n", dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
wDevID = lpParms->wDeviceID;
if (MCIMidiDev[wDevID].nUseCount > 0) {
@@ -394,16 +402,13 @@
MCIMidiDev[wDevID].dwTotalLen = 0;
MidiDesc.hMidi = 0;
if (MCIMidiDev[wDevID].hFile != 0) {
- MMCKINFO mmckInfo;
MMCKINFO ckMainRIFF;
if (mmioDescend(MCIMidiDev[wDevID].hFile, &ckMainRIFF, NULL, 0) != 0) {
return MCIERR_INTERNAL;
}
-#ifdef DEBUG_MIDI
- printf("MIDI_mciOpen // ParentChunk ckid=%.4s fccType=%.4s cksize=%08lX \n",
+ dprintf_midi(stddeb,"MIDI_mciOpen // ParentChunk ckid=%.4s fccType=%.4s cksize=%08lX \n",
(LPSTR)&ckMainRIFF.ckid, (LPSTR)&ckMainRIFF.fccType,
ckMainRIFF.cksize);
-#endif
dwOffset = 0;
if (ckMainRIFF.ckid == mmioFOURCC('R', 'M', 'I', 'D')) {
printf("MIDI_mciOpen // is a 'RMID' file \n");
@@ -424,11 +429,9 @@
}
dwOffset = mmioSeek(MCIMidiDev[wDevID].hFile, 0, SEEK_CUR);
MCIMidiDev[wDevID].dwBeginData = dwOffset;
-#ifdef DEBUG_MIDI
- printf("MIDI_mciOpen // Chunk Found ckid=%.4s fccType=%.4s cksize=%08lX \n",
- (LPSTR)&mmckInfo.ckid, (LPSTR)&mmckInfo.fccType,
- mmckInfo.cksize);
-#endif
+ dprintf_midi(stddeb,"MIDI_mciOpen // Chunk Found ckid=%.4s fccType=%.4s cksize=%08lX \n",
+ (LPSTR)&ckMainRIFF.ckid, (LPSTR)&ckMainRIFF.fccType,
+ ckMainRIFF.cksize);
}
dwRet = modMessage(0, MODM_OPEN, 0, (DWORD)&MidiDesc, CALLBACK_NULL);
dwRet = midMessage(0, MIDM_OPEN, 0, (DWORD)&MidiDesc, CALLBACK_NULL);
@@ -447,7 +450,7 @@
#ifdef linux
DWORD dwRet;
#ifdef DEBUG_MIDI
- printf("MIDI_mciClose(%u, %08X, %08X);\n", wDevID, dwParam, lpParms);
+ printf("MIDI_mciClose(%u, %08lX, %p);\n", wDevID, dwParam, lpParms);
#endif
if (MCIMidiDev[wDevID].dwStatus != MCI_MODE_STOP) {
MIDI_mciStop(wDevID, MCI_WAIT, lpParms);
@@ -485,7 +488,7 @@
LPWORD ptr;
DWORD dwRet;
#ifdef DEBUG_MIDI
- printf("MIDI_mciPlay(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ printf("MIDI_mciPlay(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
#endif
if (MCIMidiDev[wDevID].hFile == 0) {
printf("MIDI_mciPlay // can't find file='%s' !\n",
@@ -503,7 +506,7 @@
}
/**/
if (dwFlags & MCI_NOTIFY) {
- printf("MIDI_mciPlay // MCI_NOTIFY %08X !\n", lpParms->dwCallback);
+ printf("MIDI_mciPlay // MCI_NOTIFY %08lX !\n", lpParms->dwCallback);
switch(fork()) {
case -1:
printf("MIDI_mciPlay // Can't 'fork' process !\n");
@@ -540,7 +543,7 @@
if (count < 1) break;
lpMidiHdr->dwBytesRecorded = count;
#ifdef DEBUG_MIDI
- printf("MIDI_mciPlay // before MODM_LONGDATA lpMidiHdr=%08X dwBytesRecorded=%u\n",
+ printf("MIDI_mciPlay // before MODM_LONGDATA lpMidiHdr=%p dwBytesRecorded=%lu\n",
lpMidiHdr, lpMidiHdr->dwBytesRecorded);
#endif
dwRet = modMessage(0, MODM_LONGDATA, 0, (DWORD)lpMidiHdr, sizeof(MIDIHDR));
@@ -553,7 +556,7 @@
MCIMidiDev[wDevID].dwStatus = MCI_MODE_STOP;
if (dwFlags & MCI_NOTIFY) {
#ifdef DEBUG_MIDI
- printf("MIDI_mciPlay // MCI_NOTIFY_SUCCESSFUL %08X !\n", lpParms->dwCallback);
+ printf("MIDI_mciPlay // MCI_NOTIFY_SUCCESSFUL %08lX !\n", lpParms->dwCallback);
#endif
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
MCIMidiDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -572,13 +575,11 @@
DWORD MIDI_mciRecord(UINT wDevID, DWORD dwFlags, LPMCI_RECORD_PARMS lpParms)
{
#ifdef linux
- int count;
int start, end;
LPMIDIHDR lpMidiHdr;
DWORD dwRet;
-#ifdef DEBUG_MIDI
- printf("MIDI_mciRecord(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
-#endif
+
+ dprintf_midi( stddeb, "MIDI_mciRecord(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (MCIMidiDev[wDevID].hFile == 0) {
printf("MIDI_mciRecord // can't find file='%s' !\n",
MCIMidiDev[wDevID].openParms.lpstrElementName);
@@ -606,7 +607,7 @@
&MCIMidiDev[wDevID].dwStatus, MCIMidiDev[wDevID].dwStatus);
lpMidiHdr->dwBytesRecorded = 0;
dwRet = midMessage(0, MIDM_START, 0, 0L, 0L);
- printf("MIDI_mciRecord // after MIDM_START lpMidiHdr=%08X dwBytesRecorded=%u\n",
+ printf("MIDI_mciRecord // after MIDM_START lpMidiHdr=%p dwBytesRecorded=%lu\n",
lpMidiHdr, lpMidiHdr->dwBytesRecorded);
if (lpMidiHdr->dwBytesRecorded == 0) break;
}
@@ -620,7 +621,7 @@
MCIMidiDev[wDevID].dwStatus = MCI_MODE_STOP;
if (dwFlags & MCI_NOTIFY) {
#ifdef DEBUG_MIDI
- printf("MIDI_mciRecord // MCI_NOTIFY_SUCCESSFUL %08X !\n", lpParms->dwCallback);
+ printf("MIDI_mciRecord // MCI_NOTIFY_SUCCESSFUL %08lX !\n", lpParms->dwCallback);
#endif
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
MCIMidiDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
@@ -639,7 +640,7 @@
{
#ifdef linux
#ifdef DEBUG_MIDI
- printf("MIDI_mciStop(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ printf("MIDI_mciStop(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
#endif
if (lpParms == NULL) return MCIERR_INTERNAL;
MCIMidiDev[wDevID].dwStatus = MCI_MODE_STOP;
@@ -659,7 +660,7 @@
{
#ifdef linux
#ifdef DEBUG_MIDI
- printf("MIDI_mciPause(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ printf("MIDI_mciPause(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
#endif
if (lpParms == NULL) return MCIERR_INTERNAL;
return 0;
@@ -676,7 +677,7 @@
{
#ifdef linux
#ifdef DEBUG_MIDI
- printf("MIDI_mciResume(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ printf("MIDI_mciResume(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
#endif
if (lpParms == NULL) return MCIERR_INTERNAL;
return 0;
@@ -693,12 +694,12 @@
{
#ifdef linux
#ifdef DEBUG_MIDI
- printf("MIDI_mciSet(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ printf("MIDI_mciSet(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
#endif
if (lpParms == NULL) return MCIERR_INTERNAL;
#ifdef DEBUG_MIDI
- printf("MIDI_mciSet // dwTimeFormat=%08X\n", lpParms->dwTimeFormat);
- printf("MIDI_mciSet // dwAudio=%08X\n", lpParms->dwAudio);
+ printf("MIDI_mciSet // dwTimeFormat=%08lX\n", lpParms->dwTimeFormat);
+ printf("MIDI_mciSet // dwAudio=%08lX\n", lpParms->dwAudio);
#endif
if (dwFlags & MCI_SET_TIME_FORMAT) {
switch (lpParms->dwTimeFormat) {
@@ -763,7 +764,7 @@
{
#ifdef linux
#ifdef DEBUG_MIDI
- printf("MIDI_mciStatus(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ printf("MIDI_mciStatus(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
#endif
if (lpParms == NULL) return MCIERR_INTERNAL;
if (dwFlags & MCI_STATUS_ITEM) {
@@ -831,12 +832,12 @@
lpParms->dwReturn = 0;
break;
default:
- printf("MIDI_mciStatus // unknowm command %04X !\n", lpParms->dwItem);
+ printf("MIDI_mciStatus // unknowm command %08lX !\n", lpParms->dwItem);
return MCIERR_UNRECOGNIZED_COMMAND;
}
}
if (dwFlags & MCI_NOTIFY) {
- printf("MIDI_mciStatus // MCI_NOTIFY_SUCCESSFUL %08X !\n", lpParms->dwCallback);
+ printf("MIDI_mciStatus // MCI_NOTIFY_SUCCESSFUL %08lX !\n", lpParms->dwCallback);
mciDriverNotify((HWND)LOWORD(lpParms->dwCallback),
MCIMidiDev[wDevID].wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
}
@@ -853,7 +854,7 @@
LPMCI_GETDEVCAPS_PARMS lpParms)
{
#ifdef linux
- printf("MIDI_mciGetDevCaps(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ printf("MIDI_mciGetDevCaps(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
if (dwFlags & MCI_GETDEVCAPS_ITEM) {
switch(lpParms->dwItem) {
@@ -900,7 +901,7 @@
DWORD MIDI_mciInfo(UINT wDevID, DWORD dwFlags, LPMCI_INFO_PARMS lpParms)
{
#ifdef linux
- printf("MIDI_mciInfo(%u, %08X, %08X);\n", wDevID, dwFlags, lpParms);
+ printf("MIDI_mciInfo(%u, %08lX, %p);\n", wDevID, dwFlags, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
lpParms->lpstrReturn = NULL;
switch(dwFlags) {
@@ -932,7 +933,7 @@
*/
DWORD midGetDevCaps(WORD wDevID, LPMIDIINCAPS lpCaps, DWORD dwSize)
{
- printf("midGetDevCaps(%u, %08X, %08X);\n", wDevID, lpCaps, dwSize);
+ printf("midGetDevCaps(%u, %p, %08lX);\n", wDevID, lpCaps, dwSize);
return MMSYSERR_NOTENABLED;
}
@@ -944,7 +945,7 @@
#ifdef linux
int midi;
dprintf_midi(stddeb,
- "midOpen(%u, %08X, %08X);\n", wDevID, lpDesc, dwFlags);
+ "midOpen(%u, %p, %08lX);\n", wDevID, lpDesc, dwFlags);
if (lpDesc == NULL) {
fprintf(stderr,"Linux 'midOpen' // Invalid Parameter !\n");
return MMSYSERR_INVALPARAM;
@@ -1020,7 +1021,7 @@
*/
DWORD midAddBuffer(WORD wDevID, LPMIDIHDR lpMidiHdr, DWORD dwSize)
{
- printf("midAddBuffer(%u, %08X, %08X);\n", wDevID, lpMidiHdr, dwSize);
+ printf("midAddBuffer(%u, %p, %08lX);\n", wDevID, lpMidiHdr, dwSize);
return MMSYSERR_NOTENABLED;
}
@@ -1029,7 +1030,7 @@
*/
DWORD midPrepare(WORD wDevID, LPMIDIHDR lpMidiHdr, DWORD dwSize)
{
- printf("midPrepare(%u, %08X, %08X);\n", wDevID, lpMidiHdr, dwSize);
+ printf("midPrepare(%u, %p, %08lX);\n", wDevID, lpMidiHdr, dwSize);
return MMSYSERR_NOTENABLED;
}
@@ -1038,7 +1039,7 @@
*/
DWORD midUnprepare(WORD wDevID, LPMIDIHDR lpMidiHdr, DWORD dwSize)
{
- printf("midUnprepare(%u, %08X, %08X);\n", wDevID, lpMidiHdr, dwSize);
+ printf("midUnprepare(%u, %p, %08lX);\n", wDevID, lpMidiHdr, dwSize);
return MMSYSERR_NOTENABLED;
}
@@ -1078,7 +1079,7 @@
DWORD midMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
DWORD dwParam1, DWORD dwParam2)
{
- printf("midMessage(%u, %04X, %08X, %08X, %08X);\n",
+ printf("midMessage(%u, %04X, %08lX, %08lX, %08lX);\n",
wDevID, wMsg, dwUser, dwParam1, dwParam2);
switch(wMsg) {
case MIDM_OPEN:
@@ -1115,7 +1116,7 @@
*/
DWORD modGetDevCaps(WORD wDevID, LPMIDIOUTCAPS lpCaps, DWORD dwSize)
{
- printf("modGetDevCaps(%u, %08X, %08X);\n", wDevID, lpCaps, dwSize);
+ printf("modGetDevCaps(%u, %p, %08lX);\n", wDevID, lpCaps, dwSize);
return MMSYSERR_NOTENABLED;
}
@@ -1128,7 +1129,7 @@
#ifdef linux
int midi;
dprintf_midi(stddeb,
- "modOpen(%u, %08X, %08X);\n", wDevID, lpDesc, dwFlags);
+ "modOpen(%u, %p, %08lX);\n", wDevID, lpDesc, dwFlags);
if (lpDesc == NULL) {
fprintf(stderr,"Linux 'modOpen' // Invalid Parameter !\n");
return MMSYSERR_INVALPARAM;
@@ -1207,9 +1208,10 @@
*/
DWORD modData(WORD wDevID, DWORD dwParam)
{
+#ifdef linux
WORD event;
dprintf_midi(stddeb,
- "modData(%u, %08X);\n", wDevID, dwParam);
+ "modData(%u, %08lX);\n", wDevID, dwParam);
if (MidiOutDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'modData' // can't play !\n");
return MIDIERR_NODEVICE;
@@ -1221,6 +1223,9 @@
"modData() // error writting unixdev !\n");
}
return MMSYSERR_NOTENABLED;
+#else
+ return MMSYSERR_NOTENABLED;
+#endif
}
/**************************************************************************
@@ -1232,8 +1237,8 @@
int count;
LPWORD ptr;
dprintf_midi(stddeb,
- "modLongData(%u, %08X, %08X);\n", wDevID, lpMidiHdr, dwSize);
- printf("modLongData(%u, %08X, %08X);\n", wDevID, lpMidiHdr, dwSize);
+ "modLongData(%u, %p, %08lX);\n", wDevID, lpMidiHdr, dwSize);
+ printf("modLongData(%u, %p, %08lX);\n", wDevID, lpMidiHdr, dwSize);
if (MidiOutDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'modLongData' // can't play !\n");
return MIDIERR_NODEVICE;
@@ -1244,7 +1249,7 @@
lpMidiHdr->dwFlags &= ~MHDR_DONE;
lpMidiHdr->dwFlags |= MHDR_INQUEUE;
dprintf_midi(stddeb,
- "modLongData() // dwBytesRecorded %u !\n", lpMidiHdr->dwBytesRecorded);
+ "modLongData() // dwBytesRecorded %lu !\n", lpMidiHdr->dwBytesRecorded);
/*
count = write (MidiOutDev[wDevID].unixdev,
lpMidiHdr->lpData, lpMidiHdr->dwBytesRecorded);
@@ -1257,7 +1262,7 @@
}
if (count != lpMidiHdr->dwBytesRecorded) {
dprintf_midi(stddeb,
- "modLongData() // error writting unixdev #%d ! (%d != %d)\n",
+ "modLongData() // error writting unixdev #%d ! (%d != %ld)\n",
MidiOutDev[wDevID].unixdev, count, lpMidiHdr->dwBytesRecorded);
return MMSYSERR_NOTENABLED;
}
@@ -1280,7 +1285,7 @@
{
#ifdef linux
dprintf_midi(stddeb,
- "modPrepare(%u, %08X, %08X);\n", wDevID, lpMidiHdr, dwSize);
+ "modPrepare(%u, %p, %08lX);\n", wDevID, lpMidiHdr, dwSize);
if (MidiOutDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'modPrepare' // can't prepare !\n");
return MMSYSERR_NOTENABLED;
@@ -1307,7 +1312,7 @@
{
#ifdef linux
dprintf_midi(stddeb,
- "modUnprepare(%u, %08X, %08X);\n", wDevID, lpMidiHdr, dwSize);
+ "modUnprepare(%u, %p, %08lX);\n", wDevID, lpMidiHdr, dwSize);
if (MidiOutDev[wDevID].unixdev == 0) {
fprintf(stderr,"Linux 'modUnprepare' // can't unprepare !\n");
return MMSYSERR_NOTENABLED;
@@ -1333,7 +1338,7 @@
*/
DWORD modGetPosition(WORD wDevID, LPMMTIME lpTime, DWORD uSize)
{
- printf("modGetposition(%u, %08X, %08X);\n", wDevID, lpTime, uSize);
+ printf("modGetposition(%u, %p, %08lX);\n", wDevID, lpTime, uSize);
return MMSYSERR_NOTENABLED;
}
@@ -1344,7 +1349,7 @@
DWORD modMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
DWORD dwParam1, DWORD dwParam2)
{
- printf("modMessage(%u, %04X, %08X, %08X, %08X);\n",
+ printf("modMessage(%u, %04X, %08lX, %08lX, %08lX);\n",
wDevID, wMsg, dwUser, dwParam1, dwParam2);
switch(wMsg) {
case MODM_OPEN:
@@ -1376,5 +1381,4 @@
/*-----------------------------------------------------------------------*/
-
#endif /* #ifdef BUILTIN_MMSYSTEM */
diff --git a/multimedia/mmaux.c b/multimedia/mmaux.c
index a3ab0a8..ea19e54 100644
--- a/multimedia/mmaux.c
+++ b/multimedia/mmaux.c
@@ -48,7 +48,7 @@
#ifdef linux
int mixer;
int volume;
- printf("AUX_GetDevCaps(%u, %08X, %u);\n", wDevID, lpCaps, dwSize);
+ printf("AUX_GetDevCaps(%u, %p, %lu);\n", wDevID, lpCaps, dwSize);
if (lpCaps == NULL) return MMSYSERR_NOTENABLED;
if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) {
printf("AUX_GetDevCaps // mixer device not available !\n");
@@ -120,7 +120,7 @@
int mixer;
int volume;
int cmd;
- printf("AUX_GetVolume(%u, %08X);\n", wDevID, lpdwVol);
+ printf("AUX_GetVolume(%u, %p);\n", wDevID, lpdwVol);
if (lpdwVol == NULL) return MMSYSERR_NOTENABLED;
if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) {
printf("Linux 'AUX_GetVolume' // mixer device not available !\n");
@@ -174,7 +174,7 @@
int mixer;
int volume;
int cmd;
- printf("AUX_SetVolume(%u, %08X);\n", wDevID, dwParam);
+ printf("AUX_SetVolume(%u, %08lX);\n", wDevID, dwParam);
volume = LOWORD(dwParam);
if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) {
printf("Linux 'AUX_SetVolume' // mixer device not available !\n");
@@ -225,7 +225,7 @@
DWORD auxMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
DWORD dwParam1, DWORD dwParam2)
{
- printf("auxMessage(%u, %04X, %08X, %08X, %08X);\n",
+ printf("auxMessage(%u, %04X, %08lX, %08lX, %08lX);\n",
wDevID, wMsg, dwUser, dwParam1, dwParam2);
switch(wMsg) {
case AUXDM_GETDEVCAPS:
diff --git a/multimedia/mmsystem.c b/multimedia/mmsystem.c
index 28f67cb..bb25771 100644
--- a/multimedia/mmsystem.c
+++ b/multimedia/mmsystem.c
@@ -12,7 +12,8 @@
#include <string.h>
#include <fcntl.h>
#include <sys/ioctl.h>
-#include "win.h"
+#include "windows.h"
+#include "callback.h"
#include "user.h"
#include "driver.h"
#include "mmsystem.h"
@@ -26,7 +27,6 @@
#include "debug.h"
-static WORD mciActiveDev = 0;
static BOOL mmTimeStarted = FALSE;
static MMTIME mmSysTimeMS;
static MMTIME mmSysTimeSMPTE;
@@ -197,7 +197,7 @@
BOOL DriverCallback(DWORD dwCallBack, UINT uFlags, HANDLE hDev,
WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2)
{
- printf("DriverCallback(%08X, %04X, %04X, %04X, %08X, %08X, %08X); !\n",
+ printf("DriverCallback(%08lX, %04X, %04X, %04X, %08lX, %08lX, %08lX); !\n",
dwCallBack, uFlags, hDev, wMsg, dwUser, dwParam1, dwParam2);
switch(uFlags & DCB_TYPEMASK) {
case DCB_NULL:
@@ -230,7 +230,7 @@
*/
WORD JoyGetDevCaps(WORD wID, LPJOYCAPS lpCaps, WORD wSize)
{
- printf("EMPTY STUB !!! JoyGetDevCaps(%04X, %08X, %d);\n",
+ printf("EMPTY STUB !!! JoyGetDevCaps(%04X, %p, %d);\n",
wID, lpCaps, wSize);
return MMSYSERR_NODRIVER;
}
@@ -240,7 +240,7 @@
*/
WORD JoyGetPos(WORD wID, LPJOYINFO lpInfo)
{
- printf("EMPTY STUB !!! JoyGetPos(%04X, %08X);\n", wID, lpInfo);
+ printf("EMPTY STUB !!! JoyGetPos(%04X, %p);\n", wID, lpInfo);
return MMSYSERR_NODRIVER;
}
@@ -249,7 +249,7 @@
*/
WORD JoyGetThreshold(WORD wID, LPWORD lpThreshold)
{
- printf("EMPTY STUB !!! JoyGetThreshold(%04X, %08X);\n", wID, lpThreshold);
+ printf("EMPTY STUB !!! JoyGetThreshold(%04X, %p);\n", wID, lpThreshold);
return MMSYSERR_NODRIVER;
}
@@ -308,7 +308,7 @@
*/
UINT WINAPI auxGetDevCaps(UINT uDeviceID, AUXCAPS FAR* lpCaps, UINT uSize)
{
- printf("auxGetDevCaps(%04X, %08X, %d) !\n",
+ printf("auxGetDevCaps(%04X, %p, %d) !\n",
uDeviceID, lpCaps, uSize);
return auxMessage(uDeviceID, AUXDM_GETDEVCAPS,
0L, (DWORD)lpCaps, (DWORD)uSize);
@@ -319,7 +319,7 @@
*/
UINT WINAPI auxGetVolume(UINT uDeviceID, DWORD FAR* lpdwVolume)
{
- printf("auxGetVolume(%04X, %08X) !\n", uDeviceID, lpdwVolume);
+ printf("auxGetVolume(%04X, %p) !\n", uDeviceID, lpdwVolume);
return auxMessage(uDeviceID, AUXDM_GETVOLUME, 0L, (DWORD)lpdwVolume, 0L);
}
@@ -328,7 +328,7 @@
*/
UINT WINAPI auxSetVolume(UINT uDeviceID, DWORD dwVolume)
{
- printf("auxSetVolume(%04X, %08X) !\n", uDeviceID, dwVolume);
+ printf("auxSetVolume(%04X, %08lX) !\n", uDeviceID, dwVolume);
return auxMessage(uDeviceID, AUXDM_SETVOLUME, 0L, dwVolume, 0L);
}
@@ -337,8 +337,7 @@
*/
DWORD WINAPI auxOutMessage(UINT uDeviceID, UINT uMessage, DWORD dw1, DWORD dw2)
{
- LPMIDIOPENDESC lpDesc;
- printf("auxOutMessage(%04X, %04X, %08X, %08X)\n",
+ printf("auxOutMessage(%04X, %04X, %08lX, %08lX)\n",
uDeviceID, uMessage, dw1, dw2);
return auxMessage(uDeviceID, uMessage, 0L, dw1, dw2);
}
@@ -350,7 +349,7 @@
{
LPSTR msgptr;
int maxbuf;
- printf("mciGetErrorString(%04X, %08X, %d);\n", wError, lpstrBuffer, uLength);
+ printf("mciGetErrorString(%08lX, %p, %d);\n", wError, lpstrBuffer, uLength);
if ((lpstrBuffer == NULL) || (uLength < 1)) return(FALSE);
lpstrBuffer[0] = '\0';
switch(wError) {
@@ -626,7 +625,7 @@
char str[128];
DWORD dwDevTyp = 0;
UINT wDevID = 1;
- printf("mciOpen(%08X, %08X)\n", dwParam, lpParms);
+ printf("mciOpen(%08lX, %p)\n", dwParam, lpParms);
if (lpParms == NULL) return MCIERR_INTERNAL;
while(mciDrv[wDevID].wType != 0) {
if (++wDevID >= MAXMCIDRIVERS) {
@@ -637,7 +636,7 @@
if (dwParam & MCI_OPEN_TYPE) {
if (lpParms->lpstrDeviceType == NULL) return MCIERR_INTERNAL;
if (dwParam & MCI_OPEN_TYPE_ID) {
- printf("MCI_OPEN // Dev=%08X !\n", lpParms->lpstrDeviceType);
+ printf("MCI_OPEN // Dev=%p !\n", lpParms->lpstrDeviceType);
dwDevTyp = (DWORD)lpParms->lpstrDeviceType;
}
else {
@@ -686,7 +685,7 @@
printf("MCI_OPEN // No DIGITAL_VIDEO yet !\n");
return MCIERR_DEVICE_NOT_INSTALLED;
default:
- printf("MCI_OPEN // Invalid Device Name '%08X' !\n", lpParms->lpstrDeviceType);
+ printf("MCI_OPEN // Invalid Device Name '%p' !\n", lpParms->lpstrDeviceType);
return MCIERR_INVALID_DEVICE_NAME;
}
}
@@ -700,7 +699,7 @@
DWORD mciClose(UINT wDevID, DWORD dwParam, LPMCI_GENERIC_PARMS lpParms)
{
DWORD dwRet = MCIERR_INTERNAL;
- printf("mciClose(%u, %08X, %08X)\n", wDevID, dwParam, lpParms);
+ printf("mciClose(%u, %08lX, %p)\n", wDevID, dwParam, lpParms);
switch(mciDrv[wDevID].wType) {
case MCI_DEVTYPE_CD_AUDIO:
#ifndef WINELIB
@@ -747,7 +746,7 @@
DWORD mciSendCommand(UINT wDevID, UINT wMsg, DWORD dwParam1, DWORD dwParam2)
{
HDRVR hDrv = 0;
- dprintf_mci(stddeb, "mciSendCommand(%04X, %04X, %08X, %08X)\n",
+ dprintf_mci(stddeb, "mciSendCommand(%04X, %04X, %08lX, %08lX)\n",
wDevID, wMsg, dwParam1, dwParam2);
switch(wMsg) {
case MCI_OPEN:
@@ -800,7 +799,7 @@
DWORD WINAPI mciSendString (LPCSTR lpstrCommand,
LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback)
{
- printf("mciSendString('%s', %lX, %u, %X)\n",
+ printf("mciSendString('%s', %p, %u, %X)\n",
lpstrCommand, lpstrReturnString,
uReturnLength, hwndCallback);
return MCIERR_MISSING_COMMAND_STRING;
@@ -812,6 +811,7 @@
BOOL WINAPI mciSetYieldProc (UINT uDeviceID,
YIELDPROC fpYieldProc, DWORD dwYieldData)
{
+ return FALSE;
}
/**************************************************************************
@@ -819,6 +819,7 @@
*/
UINT WINAPI mciGetDeviceIDFromElementID(DWORD dwElementID, LPCSTR lpstrType)
{
+ return 0;
}
/**************************************************************************
@@ -826,6 +827,7 @@
*/
YIELDPROC WINAPI mciGetYieldProc(UINT uDeviceID, DWORD FAR* lpdwYieldData)
{
+ return NULL;
}
/**************************************************************************
@@ -833,6 +835,7 @@
*/
HTASK WINAPI mciGetCreatorTask(UINT uDeviceID)
{
+ return 0;
}
/**************************************************************************
@@ -923,10 +926,10 @@
{
HMIDI hMidiOut;
LPMIDIOPENDESC lpDesc;
- DWORD dwRet;
+ DWORD dwRet = 0;
BOOL bMapperFlg = FALSE;
if (lphMidiOut != NULL) *lphMidiOut = 0;
- printf("midiOutOpen(%08X, %d, %08X, %08X, %08X);\n",
+ printf("midiOutOpen(%p, %d, %08lX, %08lX, %08lX);\n",
lphMidiOut, uDeviceID, dwCallback, dwInstance, dwFlags);
if (uDeviceID == (UINT)MIDI_MAPPER) {
printf("midiOutOpen // MIDI_MAPPER mode requested !\n");
@@ -970,7 +973,7 @@
MIDIHDR FAR* lpMidiOutHdr, UINT uSize)
{
LPMIDIOPENDESC lpDesc;
- printf("midiOutPrepareHeader(%04X, %08X, %d)\n",
+ printf("midiOutPrepareHeader(%04X, %p, %d)\n",
hMidiOut, lpMidiOutHdr, uSize);
lpDesc = (LPMIDIOPENDESC) GlobalLock(hMidiOut);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -985,7 +988,7 @@
MIDIHDR FAR* lpMidiOutHdr, UINT uSize)
{
LPMIDIOPENDESC lpDesc;
- printf("midiOutUnprepareHeader(%04X, %08X, %d)\n",
+ printf("midiOutUnprepareHeader(%04X, %p, %d)\n",
hMidiOut, lpMidiOutHdr, uSize);
lpDesc = (LPMIDIOPENDESC) GlobalLock(hMidiOut);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -999,7 +1002,7 @@
UINT WINAPI midiOutShortMsg(HMIDIOUT hMidiOut, DWORD dwMsg)
{
LPMIDIOPENDESC lpDesc;
- printf("midiOutShortMsg(%04X, %08X)\n", hMidiOut, dwMsg);
+ printf("midiOutShortMsg(%04X, %08lX)\n", hMidiOut, dwMsg);
lpDesc = (LPMIDIOPENDESC) GlobalLock(hMidiOut);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
return modMessage(0, MODM_DATA, lpDesc->dwInstance, dwMsg, 0L);
@@ -1012,7 +1015,7 @@
MIDIHDR FAR* lpMidiOutHdr, UINT uSize)
{
LPMIDIOPENDESC lpDesc;
- printf("midiOutLongMsg(%04X, %08X, %d)\n",
+ printf("midiOutLongMsg(%04X, %p, %d)\n",
hMidiOut, lpMidiOutHdr, uSize);
lpDesc = (LPMIDIOPENDESC) GlobalLock(hMidiOut);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -1083,7 +1086,7 @@
DWORD dwParam1, DWORD dwParam2)
{
LPMIDIOPENDESC lpDesc;
- printf("midiOutMessage(%04X, %04X, %08X, %08X)\n",
+ printf("midiOutMessage(%04X, %04X, %08lX, %08lX)\n",
hMidiOut, uMessage, dwParam1, dwParam2);
lpDesc = (LPMIDIOPENDESC) GlobalLock(hMidiOut);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -1127,10 +1130,10 @@
{
HMIDI hMidiIn;
LPMIDIOPENDESC lpDesc;
- DWORD dwRet;
+ DWORD dwRet = 0;
BOOL bMapperFlg = FALSE;
if (lphMidiIn != NULL) *lphMidiIn = 0;
- printf("midiInOpen(%08X, %d, %08X, %08X, %08X);\n",
+ printf("midiInOpen(%p, %d, %08lX, %08lX, %08lX);\n",
lphMidiIn, uDeviceID, dwCallback, dwInstance, dwFlags);
if (uDeviceID == (UINT)MIDI_MAPPER) {
printf("midiInOpen // MIDI_MAPPER mode requested !\n");
@@ -1174,7 +1177,7 @@
MIDIHDR FAR* lpMidiInHdr, UINT uSize)
{
LPMIDIOPENDESC lpDesc;
- printf("midiInPrepareHeader(%04X, %08X, %d)\n",
+ printf("midiInPrepareHeader(%04X, %p, %d)\n",
hMidiIn, lpMidiInHdr, uSize);
lpDesc = (LPMIDIOPENDESC) GlobalLock(hMidiIn);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -1189,7 +1192,7 @@
MIDIHDR FAR* lpMidiInHdr, UINT uSize)
{
LPMIDIOPENDESC lpDesc;
- printf("midiInUnprepareHeader(%04X, %08X, %d)\n",
+ printf("midiInUnprepareHeader(%04X, %p, %d)\n",
hMidiIn, lpMidiInHdr, uSize);
lpDesc = (LPMIDIOPENDESC) GlobalLock(hMidiIn);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -1250,7 +1253,7 @@
DWORD dwParam1, DWORD dwParam2)
{
LPMIDIOPENDESC lpDesc;
- printf("midiInMessage(%04X, %04X, %08X, %08X)\n",
+ printf("midiInMessage(%04X, %04X, %08lX, %08lX)\n",
hMidiIn, uMessage, dwParam1, dwParam2);
lpDesc = (LPMIDIOPENDESC) GlobalLock(hMidiIn);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -1296,7 +1299,7 @@
{
LPSTR msgptr;
int maxbuf;
- printf("waveGetErrorText(%04X, %08X, %d);\n", uError, lpText, uSize);
+ printf("waveGetErrorText(%04X, %p, %d);\n", uError, lpText, uSize);
if ((lpText == NULL) || (uSize < 1)) return(FALSE);
lpText[0] = '\0';
switch(uError) {
@@ -1366,9 +1369,9 @@
{
HWAVE hWaveOut;
LPWAVEOPENDESC lpDesc;
- DWORD dwRet;
+ DWORD dwRet = 0;
BOOL bMapperFlg = FALSE;
- printf("waveOutOpen(%08X, %d, %08X, %08X, %08X, %08X);\n",
+ printf("waveOutOpen(%p, %d, %p, %08lX, %08lX, %08lX);\n",
lphWaveOut, uDeviceID, lpFormat, dwCallback, dwInstance, dwFlags);
if (dwFlags & WAVE_FORMAT_QUERY) {
printf("waveOutOpen // WAVE_FORMAT_QUERY requested !\n");
@@ -1421,7 +1424,7 @@
WAVEHDR FAR* lpWaveOutHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
- printf("waveOutPrepareHeader(%04X, %08X, %u);\n",
+ printf("waveOutPrepareHeader(%04X, %p, %u);\n",
hWaveOut, lpWaveOutHdr, uSize);
lpDesc = (LPWAVEOPENDESC) GlobalLock(hWaveOut);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -1436,7 +1439,7 @@
WAVEHDR FAR* lpWaveOutHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
- printf("waveOutUnprepareHeader(%04X, %08X, %u);\n",
+ printf("waveOutUnprepareHeader(%04X, %p, %u);\n",
hWaveOut, lpWaveOutHdr, uSize);
lpDesc = (LPWAVEOPENDESC) GlobalLock(hWaveOut);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -1450,7 +1453,7 @@
UINT WINAPI waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR FAR* lpWaveOutHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
- printf("waveOutWrite(%04X, %08X, %u);\n", hWaveOut, lpWaveOutHdr, uSize);
+ printf("waveOutWrite(%04X, %p, %u);\n", hWaveOut, lpWaveOutHdr, uSize);
lpDesc = (LPWAVEOPENDESC) GlobalLock(hWaveOut);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
return wodMessage(0, WODM_WRITE, lpDesc->dwInstance,
@@ -1490,7 +1493,7 @@
UINT WINAPI waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME FAR* lpTime, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
- printf("waveOutGetPosition(%04X, %08X, %u);\n", hWaveOut, lpTime, uSize);
+ printf("waveOutGetPosition(%04X, %p, %u);\n", hWaveOut, lpTime, uSize);
lpDesc = (LPWAVEOPENDESC) GlobalLock(hWaveOut);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
return wodMessage(0, WODM_GETPOS, lpDesc->dwInstance,
@@ -1576,7 +1579,7 @@
DWORD dwParam1, DWORD dwParam2)
{
LPWAVEOPENDESC lpDesc;
- printf("waveOutMessage(%04X, %04X, %08X, %08X)\n",
+ printf("waveOutMessage(%04X, %04X, %08lX, %08lX)\n",
hWaveOut, uMessage, dwParam1, dwParam2);
lpDesc = (LPWAVEOPENDESC) GlobalLock(hWaveOut);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -1624,9 +1627,9 @@
{
HWAVE hWaveIn;
LPWAVEOPENDESC lpDesc;
- DWORD dwRet;
+ DWORD dwRet = 0;
BOOL bMapperFlg = FALSE;
- printf("waveInOpen(%08X, %d, %08X, %08X, %08X, %08X);\n",
+ printf("waveInOpen(%p, %d, %p, %08lX, %08lX, %08lX);\n",
lphWaveIn, uDeviceID, lpFormat, dwCallback, dwInstance, dwFlags);
if (dwFlags & WAVE_FORMAT_QUERY) {
printf("waveInOpen // WAVE_FORMAT_QUERY requested !\n");
@@ -1681,14 +1684,14 @@
WAVEHDR FAR* lpWaveInHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
- printf("waveInPrepareHeader(%04X, %08X, %u);\n",
+ printf("waveInPrepareHeader(%04X, %p, %u);\n",
hWaveIn, lpWaveInHdr, uSize);
lpDesc = (LPWAVEOPENDESC) GlobalLock(hWaveIn);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
if (lpWaveInHdr == NULL) return MMSYSERR_INVALHANDLE;
lpWaveInHdr->lpNext = NULL;
lpWaveInHdr->dwBytesRecorded = 0;
- printf("waveInPrepareHeader // lpData=%08X size=%u \n",
+ printf("waveInPrepareHeader // lpData=%p size=%lu \n",
lpWaveInHdr->lpData, lpWaveInHdr->dwBufferLength);
return widMessage(0, WIDM_PREPARE, lpDesc->dwInstance,
(DWORD)lpWaveInHdr, uSize);
@@ -1702,7 +1705,7 @@
WAVEHDR FAR* lpWaveInHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
- printf("waveInUnprepareHeader(%04X, %08X, %u);\n",
+ printf("waveInUnprepareHeader(%04X, %p, %u);\n",
hWaveIn, lpWaveInHdr, uSize);
lpDesc = (LPWAVEOPENDESC) GlobalLock(hWaveIn);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -1722,13 +1725,13 @@
WAVEHDR FAR* lpWaveInHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
- printf("waveInAddBuffer(%04X, %08X, %u);\n", hWaveIn, lpWaveInHdr, uSize);
+ printf("waveInAddBuffer(%04X, %p, %u);\n", hWaveIn, lpWaveInHdr, uSize);
lpDesc = (LPWAVEOPENDESC) GlobalLock(hWaveIn);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
if (lpWaveInHdr == NULL) return MMSYSERR_INVALHANDLE;
lpWaveInHdr->lpNext = NULL;
lpWaveInHdr->dwBytesRecorded = 0;
- printf("waveInAddBuffer // lpData=%08X size=%u \n",
+ printf("waveInAddBuffer // lpData=%p size=%lu \n",
lpWaveInHdr->lpData, lpWaveInHdr->dwBufferLength);
return widMessage(0, WIDM_ADDBUFFER, lpDesc->dwInstance,
(DWORD)lpWaveInHdr, uSize);
@@ -1780,7 +1783,7 @@
UINT WINAPI waveInGetPosition(HWAVEIN hWaveIn, MMTIME FAR* lpTime, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
- printf("waveInGetPosition(%04X, %08X, %u);\n", hWaveIn, lpTime, uSize);
+ printf("waveInGetPosition(%04X, %p, %u);\n", hWaveIn, lpTime, uSize);
lpDesc = (LPWAVEOPENDESC) GlobalLock(hWaveIn);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
return widMessage(0, WIDM_GETPOS, lpDesc->dwInstance,
@@ -1806,7 +1809,7 @@
DWORD dwParam1, DWORD dwParam2)
{
LPWAVEOPENDESC lpDesc;
- printf("waveInMessage(%04X, %04X, %08X, %08X)\n",
+ printf("waveInMessage(%04X, %04X, %08lX, %08lX)\n",
hWaveIn, uMessage, dwParam1, dwParam2);
lpDesc = (LPWAVEOPENDESC) GlobalLock(hWaveIn);
if (lpDesc == NULL) return MMSYSERR_INVALHANDLE;
@@ -1872,7 +1875,7 @@
*/
WORD timeGetSystemTime(LPMMTIME lpTime, WORD wSize)
{
- printf("timeGetSystemTime(%08X, %u);\n", lpTime, wSize);
+ printf("timeGetSystemTime(%p, %u);\n", lpTime, wSize);
if (!mmTimeStarted) StartMMTime();
return 0;
}
@@ -1887,7 +1890,7 @@
WORD wNewID = 0;
LPTIMERENTRY lpNewTimer;
LPTIMERENTRY lpTimer = lpTimerList;
- printf("timeSetEvent(%u, %u, %08X, %08X, %04X);\n",
+ printf("timeSetEvent(%u, %u, %p, %08lX, %04X);\n",
wDelay, wResol, lpFunc, dwUser, wFlags);
if (!mmTimeStarted) StartMMTime();
lpNewTimer = (LPTIMERENTRY) malloc(sizeof(TIMERENTRY));
@@ -1899,11 +1902,11 @@
}
if (lpTimerList == NULL) {
lpTimerList = lpNewTimer;
- lpNewTimer->Prev == NULL;
+ lpNewTimer->Prev = NULL;
}
else {
- lpTimer->Next == lpNewTimer;
- lpNewTimer->Prev == lpTimer;
+ lpTimer->Next = lpNewTimer;
+ lpNewTimer->Prev = lpTimer;
}
lpNewTimer->Next = NULL;
lpNewTimer->wTimerID = wNewID + 1;
@@ -1939,7 +1942,7 @@
*/
WORD timeGetDevCaps(LPTIMECAPS lpCaps, WORD wSize)
{
- printf("timeGetDevCaps(%08X, %u) !\n", lpCaps, wSize);
+ printf("timeGetDevCaps(%p, %u) !\n", lpCaps, wSize);
return 0;
}
@@ -1982,7 +1985,7 @@
HANDLE hmmio;
OFSTRUCT ofs;
LPMMIOINFO lpmminfo;
- printf("mmioOpen('%s', %08X, %08X);\n", szFileName, lpmmioinfo, dwOpenFlags);
+ printf("mmioOpen('%s', %p, %08lX);\n", szFileName, lpmmioinfo, dwOpenFlags);
hFile = OpenFile(szFileName, &ofs, dwOpenFlags);
if (hFile == -1) return 0;
hmmio = GlobalAlloc(GMEM_MOVEABLE, sizeof(MMIOINFO));
@@ -2021,7 +2024,7 @@
{
int count;
LPMMIOINFO lpmminfo;
- dprintf_mmio(stddeb, "mmioRead(%04X, %08X, %ld);\n", hmmio, pch, cch);
+ dprintf_mmio(stddeb, "mmioRead(%04X, %p, %ld);\n", hmmio, pch, cch);
lpmminfo = (LPMMIOINFO)GlobalLock(hmmio);
if (lpmminfo == NULL) return 0;
count = _lread(LOWORD(lpmminfo->dwReserved2), pch, cch);
@@ -2038,7 +2041,7 @@
{
int count;
LPMMIOINFO lpmminfo;
- printf("mmioWrite(%04X, %08X, %ld);\n", hmmio, pch, cch);
+ printf("mmioWrite(%04X, %p, %ld);\n", hmmio, pch, cch);
lpmminfo = (LPMMIOINFO)GlobalLock(hmmio);
if (lpmminfo == NULL) return 0;
count = _lwrite(LOWORD(lpmminfo->dwReserved2), (LPSTR)pch, cch);
@@ -2053,7 +2056,7 @@
{
int count;
LPMMIOINFO lpmminfo;
- printf("mmioSeek(%04X, %08X, %d);\n", hmmio, lOffset, iOrigin);
+ printf("mmioSeek(%04X, %08lX, %d);\n", hmmio, lOffset, iOrigin);
lpmminfo = (LPMMIOINFO)GlobalLock(hmmio);
if (lpmminfo == NULL) {
printf("mmioSeek // can't lock hmmio=%04X !\n", hmmio);
@@ -2175,7 +2178,7 @@
{
DWORD dwfcc, dwOldPos;
LPMMIOINFO lpmminfo;
- dprintf_mmio(stddeb, "mmioDescend(%04X, %08X, %08X, %04X);\n",
+ dprintf_mmio(stddeb, "mmioDescend(%04X, %p, %p, %04X);\n",
hmmio, lpck, lpckParent, uFlags);
if (lpck == NULL) return 0;
lpmminfo = (LPMMIOINFO)GlobalLock(hmmio);
@@ -2189,7 +2192,7 @@
}
if ((uFlags & MMIO_FINDCHUNK) || (uFlags & MMIO_FINDRIFF) ||
(uFlags & MMIO_FINDLIST)) {
- dprintf_mmio(stddeb, "mmioDescend // MMIO_FINDxxxx dwfcc=%08X !\n", dwfcc);
+ dprintf_mmio(stddeb, "mmioDescend // MMIO_FINDxxxx dwfcc=%08lX !\n", dwfcc);
while (TRUE) {
if (_lread(LOWORD(lpmminfo->dwReserved2), (LPSTR)lpck,
sizeof(MMCKINFO)) < sizeof(MMCKINFO)) {
@@ -2197,7 +2200,7 @@
GlobalUnlock(hmmio);
return MMIOERR_CHUNKNOTFOUND;
}
- dprintf_mmio(stddeb, "mmioDescend // dwfcc=%08X ckid=%08X cksize=%08X !\n",
+ dprintf_mmio(stddeb, "mmioDescend // dwfcc=%08lX ckid=%08lX cksize=%08lX !\n",
dwfcc, lpck->ckid, lpck->cksize);
if (dwfcc == lpck->ckid) break;
dwOldPos += lpck->cksize + 2 * sizeof(DWORD);
@@ -2220,9 +2223,9 @@
lpck->dwDataOffset += sizeof(DWORD);
lpmminfo->lDiskOffset = _llseek(LOWORD(lpmminfo->dwReserved2),
lpck->dwDataOffset, SEEK_SET);
- dprintf_mmio(stddeb, "mmioDescend // lpck->ckid=%08X lpck->cksize=%ld !\n",
+ dprintf_mmio(stddeb, "mmioDescend // lpck->ckid=%08lX lpck->cksize=%ld !\n",
lpck->ckid, lpck->cksize);
- printf("mmioDescend // lpck->fccType=%08X !\n", lpck->fccType);
+ printf("mmioDescend // lpck->fccType=%08lX !\n", lpck->fccType);
return 0;
}
@@ -2251,7 +2254,7 @@
UINT WINAPI mmioRename(LPCSTR szFileName, LPCSTR szNewFileName,
MMIOINFO FAR* lpmmioinfo, DWORD dwRenameFlags)
{
- printf("mmioRename('%s', '%s', %08X, %08X);\n",
+ printf("mmioRename('%s', '%s', %p, %08lX);\n",
szFileName, szNewFileName, lpmmioinfo, dwRenameFlags);
return 0;
}
@@ -2261,7 +2264,7 @@
*/
HDRVR DrvOpen(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam)
{
- printf("DrvOpen('%s', '%s', %08X);\n",
+ printf("DrvOpen('%s', '%s', %08lX);\n",
lpDriverName, lpSectionName, lParam);
return OpenDriver(lpDriverName, lpSectionName, lParam);
}
@@ -2272,7 +2275,7 @@
*/
LRESULT DrvClose(HDRVR hDrvr, LPARAM lParam1, LPARAM lParam2)
{
- printf("DrvClose(%04X, %08X, %08X);\n", hDrvr, lParam1, lParam2);
+ printf("DrvClose(%04X, %08lX, %08lX);\n", hDrvr, lParam1, lParam2);
return CloseDriver(hDrvr, lParam1, lParam2);
}
@@ -2283,7 +2286,7 @@
LRESULT WINAPI DrvSendMessage(HDRVR hDriver, WORD msg, LPARAM lParam1, LPARAM lParam2)
{
DWORD dwDevID = 0;
- printf("DrvSendMessage(%04X, %04X, %08X, %08X);\n",
+ printf("DrvSendMessage(%04X, %04X, %08lX, %08lX);\n",
hDriver, msg, lParam1, lParam2);
#ifndef WINELIB
return CDAUDIO_DriverProc(dwDevID, hDriver, msg, lParam1, lParam2);
@@ -2296,6 +2299,7 @@
HANDLE DrvGetModuleHandle(HDRVR hDrvr)
{
printf("DrvGetModuleHandle(%04X);\n", hDrvr);
+ return 0;
}
diff --git a/objects/Imakefile b/objects/Imakefile
index 60afdec..6ba4f82 100644
--- a/objects/Imakefile
+++ b/objects/Imakefile
@@ -11,7 +11,6 @@
dc.c \
dcvalues.c \
dib.c \
- dither.c \
font.c \
gdiobj.c \
linedda.c \
diff --git a/objects/bitblt.c b/objects/bitblt.c
index 142c9a9..a7b3270 100644
--- a/objects/bitblt.c
+++ b/objects/bitblt.c
@@ -8,30 +8,30 @@
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Intrinsic.h>
-#include "windows.h"
-#include "dc.h"
-#include "gdi.h"
-#include "color.h"
-#include "metafile.h"
#include "bitmap.h"
+#include "color.h"
+#include "dc.h"
+#include "metafile.h"
#include "options.h"
#include "stddebug.h"
-/* #define DEBUG_GDI */
+/* #define DEBUG_BITBLT */
#include "debug.h"
-#define TMP 0 /* Temporary drawable */
-#define DST 1 /* Destination drawable */
-#define SRC 2 /* Source drawable */
+#define DST 0 /* Destination drawable */
+#define SRC 1 /* Source drawable */
+#define TMP 2 /* Temporary drawable */
#define PAT 3 /* Pattern (brush) in destination DC */
- /* Build the ROP arguments */
+#define OP(src,dst,rop) (OP_ARGS(src,dst) << 4 | (rop))
#define OP_ARGS(src,dst) (((src) << 2) | (dst))
- /* Build the ROP code */
-#define OP(src,dst,rop) (OP_ARGS(src,dst) << 4 | (rop))
+#define OP_SRC(opcode) ((opcode) >> 6)
+#define OP_DST(opcode) (((opcode) >> 4) & 3)
+#define OP_SRCDST(opcode) ((opcode) >> 4)
+#define OP_ROP(opcode) ((opcode) & 0x0f)
-#define MAX_OP_LEN 6
+#define MAX_OP_LEN 6 /* Longest opcode + 1 for the terminating 0 */
static const unsigned char BITBLT_Opcodes[256][MAX_OP_LEN] =
{
@@ -512,192 +512,670 @@
/***********************************************************************
- * BITBLT_GetImage
+ * BITBLT_StretchRow
+ *
+ * Stretch a row of pixels. Helper function for BITBLT_StretchImage.
*/
-static XImage *BITBLT_GetImage( HDC hdc, int x, int y, int width, int height )
+static void BITBLT_StretchRow( int *rowSrc, int *rowDst,
+ short startDst, short widthDst,
+ int xinc, WORD mode )
{
- XImage *image;
- RECT rect, tmpRect, clipRect;
- DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
-
- GetClipBox( hdc, &clipRect );
- OffsetRect( &clipRect, dc->w.DCOrgX, dc->w.DCOrgY );
- SetRect( &tmpRect, x, y, x+width, y+height );
- IntersectRect( &rect, &tmpRect, &clipRect );
- if (EqualRect(&rect,&tmpRect))
+ register int xsrc = xinc * startDst;
+ rowDst += startDst;
+ switch(mode)
{
- image = XGetImage( display, dc->u.x.drawable, x, y, width, height,
- AllPlanes, ZPixmap );
+ case STRETCH_ANDSCANS:
+ for(; widthDst > 0; widthDst--, xsrc += xinc)
+ *rowDst++ &= rowSrc[xsrc >> 16];
+ break;
+ case STRETCH_ORSCANS:
+ for(; widthDst > 0; widthDst--, xsrc += xinc)
+ *rowDst++ |= rowSrc[xsrc >> 16];
+ break;
+ case STRETCH_DELETESCANS:
+ for(; widthDst > 0; widthDst--, xsrc += xinc)
+ *rowDst++ = rowSrc[xsrc >> 16];
+ break;
}
- else /* Get only the visible sub-image */
- {
- XCREATEIMAGE( image, width, height, dc->w.bitsPerPixel );
- if (image && !IsRectEmpty(&rect))
- {
- XGetSubImage( display, dc->u.x.drawable, rect.left, rect.top,
- rect.right-rect.left, rect.bottom-rect.top,
- AllPlanes, ZPixmap, image, rect.left-x, rect.top-y );
- }
- }
- return image;
}
/***********************************************************************
- * BITBLT_GetArea
+ * BITBLT_ShrinkRow
*
- * Retrieve an area of the source DC. If necessary, the area is
- * mapped to colormap-independent colors.
+ * Shrink a row of pixels. Helper function for BITBLT_StretchImage.
*/
-static void BITBLT_GetArea( HDC hdcSrc, HDC hdcDst, Pixmap pixmap, GC gc,
- int x, int y, int width, int height )
+static void BITBLT_ShrinkRow( int *rowSrc, int *rowDst,
+ short startSrc, short widthSrc,
+ short xinc, WORD mode )
{
- XImage *srcImage, *dstImage;
- DC * dcSrc = (DC *) GDI_GetObjPtr( hdcSrc, DC_MAGIC );
- DC * dcDst = (DC *) GDI_GetObjPtr( hdcDst, DC_MAGIC );
-
- if ((dcSrc->w.bitsPerPixel == dcDst->w.bitsPerPixel) &&
- (!COLOR_PixelToPalette || (dcDst->w.bitsPerPixel == 1)))
+ register int xdst = xinc * startSrc;
+ rowSrc += startSrc;
+ switch(mode)
{
- XCopyArea( display, dcSrc->u.x.drawable, pixmap, gc,
- x, y, width, height, 0, 0 );
- return;
+ case STRETCH_ORSCANS:
+ for(; widthSrc > 0; widthSrc--, xdst += xinc)
+ rowDst[xdst >> 16] |= *rowSrc++;
+ break;
+ case STRETCH_ANDSCANS:
+ for(; widthSrc > 0; widthSrc--, xdst += xinc)
+ rowDst[xdst >> 16] &= *rowSrc++;
+ break;
+ case STRETCH_DELETESCANS:
+ for(; widthSrc > 0; widthSrc--, xdst += xinc)
+ rowDst[xdst >> 16] = *rowSrc++;
+ break;
}
- if ((dcSrc->w.bitsPerPixel == 1) && (dcDst->w.bitsPerPixel != 1))
- {
- XSetBackground( display, gc, COLOR_PixelToPalette ?
- COLOR_PixelToPalette[dcDst->w.textPixel] :
- dcDst->w.textPixel );
- XSetForeground( display, gc, COLOR_PixelToPalette ?
- COLOR_PixelToPalette[dcDst->w.backgroundPixel] :
- dcDst->w.backgroundPixel );
- XCopyPlane( display, dcSrc->u.x.drawable, pixmap, gc,
- x, y, width, height, 0, 0, 1);
- return;
- }
+}
- srcImage = BITBLT_GetImage( hdcSrc, x, y, width, height );
- if (dcSrc->w.bitsPerPixel != dcDst->w.bitsPerPixel)
+
+/***********************************************************************
+ * BITBLT_GetRow
+ *
+ * Retrieve a row from an image. Helper function for BITBLT_StretchImage.
+ */
+static void BITBLT_GetRow( XImage *image, int *pdata, short row,
+ short start, short width, short depthDst,
+ int fg, int bg, BOOL swap)
+{
+ register short i;
+
+ pdata += swap ? start+width-1 : start;
+ if (image->depth == depthDst)
{
- XCREATEIMAGE( dstImage, width, height, dcDst->w.bitsPerPixel );
- for (y = 0; y < height; y++)
- for (x = 0; x < width; x++)
- {
- XPutPixel( dstImage, x, y, (XGetPixel( srcImage, x, y ) ==
- dcSrc->w.backgroundPixel) );
- }
- XDestroyImage( srcImage );
+ if (COLOR_PixelToPalette && (depthDst != 1))
+ if (swap) for (i = 0; i < width; i++)
+ *pdata-- = COLOR_PixelToPalette[XGetPixel( image, i, row )];
+ else for (i = 0; i < width; i++)
+ *pdata++ = COLOR_PixelToPalette[XGetPixel( image, i, row )];
+ else
+ if (swap) for (i = 0; i < width; i++)
+ *pdata-- = XGetPixel( image, i, row );
+ else for (i = 0; i < width; i++)
+ *pdata++ = XGetPixel( image, i, row );
}
else
{
- for (y = 0; y < height; y++)
- for (x = 0; x < width; x++)
- {
- XPutPixel( srcImage, x, y,
- COLOR_PixelToPalette[XGetPixel( srcImage, x, y)] );
- }
- dstImage = srcImage;
+ if (image->depth == 1)
+ if (swap) for (i = 0; i < width; i++)
+ *pdata-- = XGetPixel( image, i, row ) ? bg : fg;
+ else for (i = 0; i < width; i++)
+ *pdata++ = XGetPixel( image, i, row ) ? bg : fg;
+ else
+ if (swap) for (i = 0; i < width; i++)
+ *pdata-- = (XGetPixel( image, i, row ) == bg) ? 1 : 0;
+ else for (i = 0; i < width; i++)
+ *pdata++ = (XGetPixel( image, i, row ) == bg) ? 1 : 0;
}
- XPutImage( display, pixmap, gc, dstImage, 0, 0, 0, 0, width, height );
- XDestroyImage( dstImage );
}
/***********************************************************************
- * BITBLT_PutArea
+ * BITBLT_StretchImage
*
- * Put an area back into an hdc, possibly applying a mapping
- * to every pixel in the process.
+ * Stretch an X image.
*/
-static void BITBLT_PutArea( HDC hdc, Pixmap pixmap, GC gc,
- int x, int y, int width, int height )
+static void BITBLT_StretchImage( XImage *srcImage, XImage *dstImage,
+ short widthSrc, short heightSrc,
+ short widthDst, short heightDst,
+ RECT *visRectSrc, RECT *visRectDst,
+ int foreground, int background, WORD mode )
{
- XImage *image;
- int x1, y1;
- DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
+ int *rowSrc, *rowDst, *pixel;
+ int xinc, yinc, ysrc, ydst;
+ register short x, y;
+ BOOL hstretch, vstretch, hswap, vswap;
+
+ hswap = ((int)widthSrc * widthDst) < 0;
+ vswap = ((int)heightSrc * heightDst) < 0;
+ widthSrc = abs(widthSrc);
+ heightSrc = abs(heightSrc);
+ widthDst = abs(widthDst);
+ heightDst = abs(heightDst);
+
+ dprintf_bitblt( stddeb, "BITBLT_StretchImage: %dx%d -> %dx%d (mode=%d,h=%d,v=%d)\n",
+ widthSrc, heightSrc, widthDst, heightDst, mode, hswap, vswap );
+
+ if (!(rowSrc = (int *)malloc( (widthSrc+widthDst)*sizeof(int) ))) return;
+ rowDst = rowSrc + widthSrc;
+
+ /* When stretching, all modes are the same, and DELETESCANS is faster */
+ if ((widthSrc < widthDst) && (heightSrc < heightDst))
+ mode = STRETCH_DELETESCANS;
+
+ hstretch = ((widthSrc < widthDst) || (mode == STRETCH_DELETESCANS));
+ vstretch = ((heightSrc < heightDst) || (mode == STRETCH_DELETESCANS));
+ xinc = hstretch ? ((int)widthSrc << 16) / widthDst :
+ ((int)widthDst << 16) / widthSrc;
+
+ if (vstretch)
+ {
+ yinc = ((int)heightSrc << 16) / heightDst;
+ ydst = visRectDst->top;
+ ysrc = yinc * ydst;
+ }
+ else
+ {
+ yinc = ((int)heightDst << 16) / heightSrc;
+ ysrc = visRectSrc->top;
+ ydst = yinc * ysrc;
+ }
+
+ while(vstretch ? (ydst < visRectDst->bottom) : (ysrc < visRectSrc->bottom))
+ {
+ /* Retrieve a source row */
+ BITBLT_GetRow( srcImage, rowSrc, vstretch ? ysrc >> 16 : ysrc,
+ visRectSrc->left, visRectSrc->right - visRectSrc->left,
+ dstImage->depth, foreground, background, hswap );
+
+ /* Stretch or shrink it */
+ if (hstretch)
+ BITBLT_StretchRow( rowSrc, rowDst, visRectDst->left,
+ visRectDst->right-visRectDst->left, xinc, mode);
+ else BITBLT_ShrinkRow( rowSrc, rowDst, visRectSrc->left,
+ visRectSrc->right-visRectSrc->left, xinc, mode);
+
+ /* When shrinking, merge several source rows into the destination */
+ if (!vstretch)
+ {
+ if (mode == STRETCH_DELETESCANS)
+ {
+ /* Simply skip the overlapping rows */
+ while (((ydst + yinc) >> 16 == ydst >> 16) &&
+ (ysrc < visRectSrc->bottom-1))
+ {
+ ydst += yinc;
+ ysrc++;
+ }
+ }
+ else if (((ydst + yinc) >> 16 == ydst >> 16) &&
+ (ysrc < visRectSrc->bottom-1))
+ {
+ ydst += yinc;
+ ysrc++;
+ continue; /* Restart loop for next overlapping row */
+ }
+ }
+
+ /* Store the destination row */
+
+ pixel = rowDst + visRectDst->right - 1;
+ if (vswap)
+ y = visRectDst->bottom - (vstretch ? ydst : ydst >> 16);
+ else
+ y = (vstretch ? ydst : ydst >> 16) - visRectDst->top;
+ for (x = visRectDst->right-visRectDst->left-1; x >= 0; x--)
+ XPutPixel( dstImage, x, y, *pixel-- );
+ if (mode != STRETCH_DELETESCANS)
+ memset( rowDst, (mode == STRETCH_ANDSCANS) ? 0xff : 0x00,
+ widthDst*sizeof(int) );
+
+ /* If stretching, make copies of the destination row */
+
+ if (vstretch)
+ {
+ char *pdata = dstImage->data + dstImage->bytes_per_line * y;
+ while (((ysrc + yinc) >> 16 == ysrc >> 16) &&
+ (ydst < visRectDst->bottom-1))
+ {
+ if (vswap)
+ {
+ memcpy( pdata - dstImage->bytes_per_line, pdata,
+ dstImage->bytes_per_line );
+ pdata -= dstImage->bytes_per_line;
+ }
+ else
+ {
+ memcpy( pdata + dstImage->bytes_per_line, pdata,
+ dstImage->bytes_per_line );
+ pdata += dstImage->bytes_per_line;
+ }
+ ysrc += yinc;
+ ydst++;
+ }
+ ysrc += yinc;
+ ydst++;
+ }
+ else
+ {
+ ydst += yinc;
+ ysrc++;
+ }
+ }
+
+ free( rowSrc );
+}
+
+
+/***********************************************************************
+ * BITBLT_GetSrcAreaStretch
+ *
+ * Retrieve an area from the source DC, stretching and mapping all the
+ * pixels to Windows colors.
+ */
+static void BITBLT_GetSrcAreaStretch( DC *dcSrc, DC *dcDst,
+ Pixmap pixmap, GC gc,
+ short xSrc, short ySrc,
+ short widthSrc, short heightSrc,
+ short xDst, short yDst,
+ short widthDst, short heightDst,
+ RECT *visRectSrc, RECT *visRectDst )
+{
+ XImage *imageSrc, *imageDst;
+
+ RECT rectSrc = *visRectSrc;
+ RECT rectDst = *visRectDst;
+ OffsetRect( &rectSrc, -xSrc, -ySrc );
+ OffsetRect( &rectDst, -xDst, -yDst );
+ imageSrc = XGetImage( display, dcSrc->u.x.drawable,
+ visRectSrc->left, visRectSrc->top,
+ visRectSrc->right - visRectSrc->left,
+ visRectSrc->bottom - visRectSrc->top,
+ AllPlanes, ZPixmap );
+ XCREATEIMAGE( imageDst, rectDst.right - rectDst.left,
+ rectDst.bottom - rectDst.top, dcDst->w.bitsPerPixel );
+ BITBLT_StretchImage( imageSrc, imageDst, widthSrc, heightSrc,
+ widthDst, heightDst, &rectSrc, &rectDst,
+ dcDst->w.textPixel, dcDst->w.bitsPerPixel != 1 ?
+ dcDst->w.backgroundPixel : dcSrc->w.backgroundPixel,
+ dcDst->w.stretchBltMode );
+ XPutImage( display, pixmap, gc, imageDst, 0, 0, 0, 0,
+ rectDst.right - rectDst.left, rectDst.bottom - rectDst.top );
+ XDestroyImage( imageSrc );
+ XDestroyImage( imageDst );
+}
+
+
+/***********************************************************************
+ * BITBLT_GetSrcArea
+ *
+ * Retrieve an area from the source DC, mapping all the
+ * pixels to Windows colors.
+ */
+static void BITBLT_GetSrcArea( DC *dcSrc, DC *dcDst, Pixmap pixmap, GC gc,
+ short xSrc, short ySrc,
+ RECT *visRectSrc )
+{
+ XImage *imageSrc, *imageDst;
+ register short x, y;
+ short width = visRectSrc->right - visRectSrc->left;
+ short height = visRectSrc->bottom - visRectSrc->top;
+
+ if (dcSrc->w.bitsPerPixel == dcDst->w.bitsPerPixel)
+ {
+ if (!COLOR_PixelToPalette ||
+ (dcDst->w.bitsPerPixel == 1)) /* monochrome -> monochrome */
+ {
+ XCopyArea( display, dcSrc->u.x.drawable, pixmap, gc,
+ visRectSrc->left, visRectSrc->top, width, height, 0, 0);
+ }
+ else /* color -> color */
+ {
+ imageSrc = XGetImage( display, dcSrc->u.x.drawable,
+ visRectSrc->left, visRectSrc->top,
+ width, height, AllPlanes, ZPixmap );
+ for (y = 0; y < height; y++)
+ for (x = 0; x < width; x++)
+ XPutPixel(imageSrc, x, y,
+ COLOR_PixelToPalette[XGetPixel(imageSrc, x, y)]);
+ XPutImage( display, pixmap, gc, imageSrc,
+ 0, 0, 0, 0, width, height );
+ XDestroyImage( imageSrc );
+ }
+ }
+ else
+ {
+ if (dcSrc->w.bitsPerPixel == 1) /* monochrome -> color */
+ {
+ if (COLOR_PixelToPalette)
+ {
+ XSetBackground( display, gc,
+ COLOR_PixelToPalette[dcDst->w.textPixel] );
+ XSetForeground( display, gc,
+ COLOR_PixelToPalette[dcDst->w.backgroundPixel]);
+ }
+ else
+ {
+ XSetBackground( display, gc, dcDst->w.textPixel );
+ XSetForeground( display, gc, dcDst->w.backgroundPixel );
+ }
+ XCopyPlane( display, dcSrc->u.x.drawable, pixmap, gc,
+ visRectSrc->left, visRectSrc->top,
+ width, height, 0, 0, 1 );
+ }
+ else /* color -> monochrome */
+ {
+ imageSrc = XGetImage( display, dcSrc->u.x.drawable,
+ visRectSrc->left, visRectSrc->top,
+ width, height, AllPlanes, ZPixmap );
+ XCREATEIMAGE( imageDst, width, height, dcDst->w.bitsPerPixel );
+ for (y = 0; y < height; y++)
+ for (x = 0; x < width; x++)
+ XPutPixel(imageDst, x, y, (XGetPixel(imageSrc,x,y) ==
+ dcSrc->w.backgroundPixel) );
+ XPutImage( display, pixmap, gc, imageDst,
+ 0, 0, 0, 0, width, height );
+ XDestroyImage( imageSrc );
+ XDestroyImage( imageDst );
+ }
+ }
+}
+
+
+/***********************************************************************
+ * BITBLT_GetDstArea
+ *
+ * Retrieve an area from the destination DC, mapping all the
+ * pixels to Windows colors.
+ */
+static void BITBLT_GetDstArea( DC *dc, Pixmap pixmap, GC gc, RECT *visRectDst )
+{
+ short width = visRectDst->right - visRectDst->left;
+ short height = visRectDst->bottom - visRectDst->top;
+
+ if (!COLOR_PixelToPalette || (dc->w.bitsPerPixel == 1))
+ {
+ XCopyArea( display, dc->u.x.drawable, pixmap, gc,
+ visRectDst->left, visRectDst->top, width, height, 0, 0 );
+ }
+ else
+ {
+ register short x, y;
+ XImage *image = XGetImage( display, dc->u.x.drawable,
+ visRectDst->left, visRectDst->top,
+ width, height, AllPlanes, ZPixmap );
+ for (y = 0; y < height; y++)
+ for (x = 0; x < width; x++)
+ XPutPixel( image, x, y,
+ COLOR_PixelToPalette[XGetPixel( image, x, y )]);
+ XPutImage( display, pixmap, gc, image, 0, 0, 0, 0, width, height );
+ }
+}
+
+
+/***********************************************************************
+ * BITBLT_PutDstArea
+ *
+ * Put an area back into the destination DC, mapping the pixel
+ * colors to X pixels.
+ */
+static void BITBLT_PutDstArea( DC *dc, Pixmap pixmap, GC gc, RECT *visRectDst )
+{
+ short width = visRectDst->right - visRectDst->left;
+ short height = visRectDst->bottom - visRectDst->top;
if (!COLOR_PaletteToPixel)
{
- XCopyArea( display, pixmap, dc->u.x.drawable, gc,
- 0, 0, width, height, x, y );
+ XCopyArea( display, pixmap, dc->u.x.drawable, gc, 0, 0,
+ width, height, visRectDst->left, visRectDst->top );
}
else
{
- image = XGetImage( display, pixmap, 0, 0, width, height,
- AllPlanes, ZPixmap );
- for (y1 = 0; y1 < height; y1++)
- for (x1 = 0; x1 < width; x1++)
+ register short x, y;
+ XImage *image = XGetImage( display, pixmap, 0, 0, width, height,
+ AllPlanes, ZPixmap );
+ for (y = 0; y < height; y++)
+ for (x = 0; x < width; x++)
{
- XPutPixel( image, x1, y1,
- COLOR_PaletteToPixel[XGetPixel( image, x1, y1)] );
+ XPutPixel( image, x, y,
+ COLOR_PaletteToPixel[XGetPixel( image, x, y )]);
}
- XPutImage( display, dc->u.x.drawable, gc, image,
- 0, 0, x, y, width, height );
+ XPutImage( display, dc->u.x.drawable, gc, image, 0, 0,
+ visRectDst->left, visRectDst->top, width, height );
XDestroyImage( image );
}
}
/***********************************************************************
- * BITBLT_SelectBrush
+ * BITBLT_GetVisRectangles
*
- * Select the brush into a GC.
+ * Get the source and destination visible rectangles for StretchBlt().
+ * Return FALSE if one of the rectangles is empty.
*/
-static BOOL BITBLT_SelectBrush( DC * dc, GC gc )
+static BOOL BITBLT_GetVisRectangles( DC *dcDst, short xDst, short yDst,
+ short widthDst, short heightDst,
+ DC *dcSrc, short xSrc, short ySrc,
+ short widthSrc, short heightSrc,
+ RECT *visRectSrc, RECT *visRectDst )
{
- XGCValues val;
- XImage *image;
- Pixmap pixmap = 0;
- int x, y, mask = 0;
-
- if (dc->u.x.brush.style == BS_NULL) return FALSE;
- if (dc->u.x.brush.pixel == -1)
+ RECT tmpRect, clipRect;
+
+ if (widthSrc < 0) { widthSrc = -widthSrc; xSrc -= widthSrc; }
+ if (widthDst < 0) { widthDst = -widthDst; xDst -= widthDst; }
+ if (heightSrc < 0) { heightSrc = -heightSrc; ySrc -= heightSrc; }
+ if (heightDst < 0) { heightDst = -heightDst; yDst -= heightDst; }
+
+ /* Get the destination visible rectangle */
+
+ SetRect( &tmpRect, xDst, yDst, xDst + widthDst, yDst + heightDst );
+ GetRgnBox( dcDst->w.hGCClipRgn, &clipRect );
+ OffsetRect( &clipRect, dcDst->w.DCOrgX, dcDst->w.DCOrgY );
+ if (!IntersectRect( visRectDst, &tmpRect, &clipRect )) return FALSE;
+
+ /* Get the source visible rectangle */
+
+ if (!dcSrc) return TRUE;
+ SetRect( &tmpRect, xSrc, ySrc, xSrc + widthSrc, ySrc + heightSrc );
+ GetRgnBox( dcSrc->w.hGCClipRgn, &clipRect );
+ OffsetRect( &clipRect, dcSrc->w.DCOrgX, dcSrc->w.DCOrgY );
+ if (!IntersectRect( visRectSrc, &tmpRect, &clipRect )) return FALSE;
+
+ /* Intersect the rectangles */
+
+ if ((widthSrc == widthDst) && (heightSrc == heightDst)) /* no stretching */
{
- val.foreground = dc->w.backgroundPixel;
- val.background = dc->w.textPixel;
+ OffsetRect( visRectSrc, xDst - xSrc, yDst - ySrc );
+ if (!IntersectRect( &tmpRect, visRectSrc, visRectDst )) return FALSE;
+ *visRectSrc = *visRectDst = tmpRect;
+ OffsetRect( visRectSrc, xSrc - xDst, ySrc - yDst );
+ }
+ else /* stretching */
+ {
+ visRectSrc->left = xDst + (visRectSrc->left-xSrc)*widthDst/widthSrc;
+ visRectSrc->top = yDst + (visRectSrc->top-ySrc)*heightDst/heightSrc;
+ visRectSrc->right = xDst +
+ ((visRectSrc->right-xSrc) * widthDst + widthSrc-1) / widthSrc;
+ visRectSrc->bottom = yDst +
+ ((visRectSrc->bottom-ySrc) * heightDst + heightSrc-1) / heightSrc;
+ if (!IntersectRect( &tmpRect, visRectSrc, visRectDst )) return FALSE;
+ *visRectSrc = *visRectDst = tmpRect;
+ visRectSrc->left = xSrc + (visRectSrc->left-xDst)*widthSrc/widthDst;
+ visRectSrc->top = ySrc + (visRectSrc->top-yDst)*heightSrc/heightDst;
+ visRectSrc->right = xSrc +
+ ((visRectSrc->right-xDst) * widthSrc + widthDst-1) / widthDst;
+ visRectSrc->bottom = ySrc +
+ ((visRectSrc->bottom-yDst) * heightSrc + heightDst-1) / heightDst;
+ if (IsRectEmpty( visRectSrc )) return FALSE;
+ }
+ return TRUE;
+}
+
+
+/***********************************************************************
+ * BITBLT_InternalStretchBlt
+ *
+ * Implementation of PatBlt(), BitBlt() and StretchBlt().
+ */
+BOOL BITBLT_InternalStretchBlt( DC *dcDst, short xDst, short yDst,
+ short widthDst, short heightDst,
+ DC *dcSrc, short xSrc, short ySrc,
+ short widthSrc, short heightSrc, DWORD rop )
+{
+ BOOL usePat, useSrc, useDst, destUsed, fStretch, fNullBrush;
+ RECT visRectDst, visRectSrc;
+ short width, height;
+ const BYTE *opcode;
+ Pixmap pixmaps[3] = { 0, 0, 0 }; /* pixmaps for DST, SRC, TMP */
+ GC tmpGC = 0;
+
+ usePat = (((rop >> 4) & 0x0f0000) != (rop & 0x0f0000));
+ useSrc = (((rop >> 2) & 0x330000) != (rop & 0x330000));
+ useDst = (((rop >> 1) & 0x550000) != (rop & 0x550000));
+ if (!dcSrc && useSrc) return FALSE;
+
+ /* Map the coordinates to device coords */
+
+ xDst = dcDst->w.DCOrgX + XLPTODP( dcDst, xDst );
+ yDst = dcDst->w.DCOrgY + YLPTODP( dcDst, yDst );
+ widthDst = widthDst * dcDst->w.VportExtX / dcDst->w.WndExtX;
+ heightDst = heightDst * dcDst->w.VportExtY / dcDst->w.WndExtY;
+ if (useSrc)
+ {
+ xSrc = dcSrc->w.DCOrgX + XLPTODP( dcSrc, xSrc );
+ ySrc = dcSrc->w.DCOrgY + YLPTODP( dcSrc, ySrc );
+ widthSrc = widthSrc * dcSrc->w.VportExtX / dcSrc->w.WndExtX;
+ heightSrc = heightSrc * dcSrc->w.VportExtY / dcSrc->w.WndExtY;
+ fStretch = (widthSrc != widthDst) || (heightSrc != heightDst);
+ if (!BITBLT_GetVisRectangles( dcDst, xDst, yDst, widthDst, heightDst,
+ dcSrc, xSrc, ySrc, widthSrc, heightSrc,
+ &visRectSrc, &visRectDst ))
+ return TRUE;
}
else
{
- val.foreground = dc->u.x.brush.pixel;
- val.background = dc->w.backgroundPixel;
+ fStretch = FALSE;
+ if (!BITBLT_GetVisRectangles( dcDst, xDst, yDst, widthDst, heightDst,
+ NULL, 0, 0, 0, 0, NULL, &visRectDst ))
+ return TRUE;
}
- if (COLOR_PixelToPalette)
+
+ width = visRectDst.right - visRectDst.left;
+ height = visRectDst.bottom - visRectDst.top;
+
+ if (!fStretch) switch(rop) /* A few optimisations */
{
- val.foreground = COLOR_PixelToPalette[val.foreground];
- val.background = COLOR_PixelToPalette[val.background];
- }
- val.fill_style = dc->u.x.brush.fillStyle;
- if ((val.fill_style==FillStippled) || (val.fill_style==FillOpaqueStippled))
- {
- if (dc->w.backgroundMode==OPAQUE) val.fill_style = FillOpaqueStippled;
- val.stipple = dc->u.x.brush.pixmap;
- mask = GCStipple;
- }
- else if (val.fill_style == FillTiled)
- {
- if (COLOR_PixelToPalette)
+ case BLACKNESS: /* 0x00 */
+ if ((dcDst->w.bitsPerPixel == 1) || !COLOR_PaletteToPixel)
+ XSetFunction( display, dcDst->u.x.gc, GXclear );
+ else
{
- pixmap = XCreatePixmap( display, rootWindow, 8, 8, screenDepth );
- image = XGetImage( display, dc->u.x.brush.pixmap, 0, 0, 8, 8,
- AllPlanes, ZPixmap );
- for (y = 0; y < 8; y++)
- for (x = 0; x < 8; x++)
- XPutPixel( image, x, y,
- COLOR_PixelToPalette[XGetPixel( image, x, y)] );
- XPutImage( display, pixmap, gc, image, 0, 0, 0, 0, 8, 8 );
- XDestroyImage( image );
- val.tile = pixmap;
+ XSetFunction( display, dcDst->u.x.gc, GXcopy );
+ XSetForeground( display, dcDst->u.x.gc, COLOR_PaletteToPixel[0] );
+ XSetFillStyle( display, dcDst->u.x.gc, FillSolid );
}
- else val.tile = dc->u.x.brush.pixmap;
- mask = GCTile;
+ XFillRectangle( display, dcDst->u.x.drawable, dcDst->u.x.gc,
+ visRectDst.left, visRectDst.top, width, height );
+ return TRUE;
+
+ case PATINVERT: /* 0x5a */
+ /* FIXME: This is not really correct, but for now PATINVERT is */
+ /* used to draw the window moving frame, so it has to be fast. */
+ if (!DC_SetupGCForBrush( dcDst )) return TRUE;
+ XSetFunction( display, dcDst->u.x.gc, GXxor );
+ XFillRectangle( display, dcDst->u.x.drawable, dcDst->u.x.gc,
+ visRectDst.left, visRectDst.top, width, height );
+ return TRUE;
+
+ case SRCCOPY: /* 0xcc */
+ if (dcSrc->w.bitsPerPixel == dcDst->w.bitsPerPixel)
+ {
+ XSetFunction( display, dcDst->u.x.gc, GXcopy );
+ XCopyArea( display, dcSrc->u.x.drawable,
+ dcDst->u.x.drawable, dcDst->u.x.gc,
+ visRectSrc.left, visRectSrc.top,
+ width, height, visRectDst.left, visRectDst.top );
+ return TRUE;
+ }
+ if (dcSrc->w.bitsPerPixel == 1)
+ {
+ XSetBackground( display, dcDst->u.x.gc, dcDst->w.textPixel );
+ XSetForeground( display, dcDst->u.x.gc, dcDst->w.backgroundPixel );
+ XSetFunction( display, dcDst->u.x.gc, GXcopy );
+ XCopyPlane( display, dcSrc->u.x.drawable,
+ dcDst->u.x.drawable, dcDst->u.x.gc,
+ visRectSrc.left, visRectSrc.top,
+ width, height, visRectDst.left, visRectDst.top, 1 );
+ return TRUE;
+ }
+ break;
+
+ case PATCOPY: /* 0xf0 */
+ if (!DC_SetupGCForBrush( dcDst )) return TRUE;
+ XSetFunction( display, dcDst->u.x.gc, GXcopy );
+ XFillRectangle( display, dcDst->u.x.drawable, dcDst->u.x.gc,
+ visRectDst.left, visRectDst.top, width, height );
+ return TRUE;
+
+ case WHITENESS: /* 0xff */
+ if ((dcDst->w.bitsPerPixel == 1) || !COLOR_PaletteToPixel)
+ XSetFunction( display, dcDst->u.x.gc, GXset );
+ else
+ {
+ XSetFunction( display, dcDst->u.x.gc, GXcopy );
+ XSetForeground( display, dcDst->u.x.gc,
+ COLOR_PaletteToPixel[COLOR_ColormapSize-1] );
+ XSetFillStyle( display, dcDst->u.x.gc, FillSolid );
+ }
+ XFillRectangle( display, dcDst->u.x.drawable, dcDst->u.x.gc,
+ visRectDst.left, visRectDst.top, width, height );
+ return TRUE;
}
- val.ts_x_origin = dc->w.DCOrgX + dc->w.brushOrgX;
- val.ts_y_origin = dc->w.DCOrgY + dc->w.brushOrgY;
- XChangeGC( display, gc,
- GCForeground | GCBackground | GCFillStyle |
- GCTileStipXOrigin | GCTileStipYOrigin | mask,
- &val );
- if (pixmap) XFreePixmap( display, pixmap );
+
+ tmpGC = XCreateGC( display, dcDst->u.x.drawable, 0, NULL );
+ pixmaps[DST] = XCreatePixmap( display, rootWindow, width, height,
+ dcDst->w.bitsPerPixel );
+ if (useSrc)
+ {
+ pixmaps[SRC] = XCreatePixmap( display, rootWindow, width, height,
+ dcDst->w.bitsPerPixel );
+ if (fStretch)
+ BITBLT_GetSrcAreaStretch( dcSrc, dcDst, pixmaps[SRC], tmpGC,
+ xSrc, ySrc, widthSrc, heightSrc,
+ xDst, yDst, widthDst, heightDst,
+ &visRectSrc, &visRectDst );
+ else
+ BITBLT_GetSrcArea( dcSrc, dcDst, pixmaps[SRC], tmpGC,
+ xSrc, ySrc, &visRectSrc );
+ }
+ if (useDst) BITBLT_GetDstArea( dcDst, pixmaps[DST], tmpGC, &visRectDst );
+ if (usePat) fNullBrush = !DC_SetupGCForPatBlt( dcDst, tmpGC, TRUE );
+ else fNullBrush = FALSE;
+ destUsed = FALSE;
+
+ for (opcode = BITBLT_Opcodes[(rop >> 16) & 0xff]; *opcode; opcode++)
+ {
+ if (OP_DST(*opcode) == DST) destUsed = TRUE;
+ XSetFunction( display, tmpGC, OP_ROP(*opcode) );
+ switch(OP_SRCDST(*opcode))
+ {
+ case OP_ARGS(DST,TMP):
+ case OP_ARGS(SRC,TMP):
+ if (!pixmaps[TMP])
+ pixmaps[TMP] = XCreatePixmap( display, rootWindow,
+ width, height,
+ dcDst->w.bitsPerPixel );
+ /* fall through */
+ case OP_ARGS(DST,SRC):
+ case OP_ARGS(SRC,DST):
+ case OP_ARGS(TMP,SRC):
+ case OP_ARGS(TMP,DST):
+ XCopyArea( display, pixmaps[OP_SRC(*opcode)],
+ pixmaps[OP_DST(*opcode)], tmpGC,
+ 0, 0, width, height, 0, 0 );
+ break;
+
+ case OP_ARGS(PAT,TMP):
+ if (!pixmaps[TMP] && !fNullBrush)
+ pixmaps[TMP] = XCreatePixmap( display, rootWindow,
+ width, height,
+ dcDst->w.bitsPerPixel );
+ /* fall through */
+ case OP_ARGS(PAT,DST):
+ case OP_ARGS(PAT,SRC):
+ if (!fNullBrush)
+ XFillRectangle( display, pixmaps[OP_DST(*opcode)],
+ tmpGC, 0, 0, width, height );
+ break;
+ }
+ }
+ XSetFunction( display, dcDst->u.x.gc, GXcopy );
+ BITBLT_PutDstArea( dcDst, pixmaps[destUsed ? DST : SRC],
+ dcDst->u.x.gc, &visRectDst );
+ XFreePixmap( display, pixmaps[DST] );
+ if (pixmaps[SRC]) XFreePixmap( display, pixmaps[SRC] );
+ if (pixmaps[TMP]) XFreePixmap( display, pixmaps[TMP] );
+ XFreeGC( display, tmpGC );
return TRUE;
}
@@ -718,43 +1196,11 @@
return TRUE;
}
- dprintf_gdi(stddeb, "PatBlt: %d %d,%d %dx%d %06lx\n",
+ dprintf_bitblt(stddeb, "PatBlt: %d %d,%d %dx%d %06lx\n",
hdc, left, top, width, height, rop );
- /* Convert ROP3 code to ROP2 code */
- rop >>= 16;
- if (!DC_SetupGCForBrush( dc )) rop &= 0x0f;
- else rop = (rop & 0x03) | ((rop >> 4) & 0x0c);
-
- /* Special case for BLACKNESS and WHITENESS */
- if (!Options.usePrivateMap && ((rop == R2_BLACK-1) || (rop == R2_WHITE-1)))
- {
- XSetForeground( display, dc->u.x.gc, (rop == R2_BLACK-1) ?
- BlackPixelOfScreen(screen) : WhitePixelOfScreen(screen));
- XSetFillStyle( display, dc->u.x.gc, FillSolid );
- rop = R2_COPYPEN;
- }
-
- XSetFunction( display, dc->u.x.gc, DC_XROPfunction[rop] );
-
- left = dc->w.DCOrgX + XLPTODP( dc, left );
- top = dc->w.DCOrgY + YLPTODP( dc, top );
-
- /* Convert dimensions to device coords */
- if ((width = (width * dc->w.VportExtX) / dc->w.WndExtX) < 0)
- {
- width = -width;
- left -= width;
- }
- if ((height = (height * dc->w.VportExtY) / dc->w.WndExtY) < 0)
- {
- height = -height;
- top -= height;
- }
-
- XFillRectangle( display, dc->u.x.drawable, dc->u.x.gc,
- left, top, width, height );
- return TRUE;
+ return BITBLT_InternalStretchBlt( dc, left, top, width, height,
+ NULL, 0, 0, 0, 0, rop );
}
@@ -765,605 +1211,52 @@
HDC hdcSrc, short xSrc, short ySrc, DWORD rop )
{
DC *dcDst, *dcSrc;
- BOOL usePat, useSrc, useDst, destUsed;
- RECT dstRect, tmpRect, clipRect;
- const BYTE *opcode;
- Pixmap srcPixmap = 0, dstPixmap = 0, tmpPixmap = 0;
- GC tmpGC = 0;
- usePat = (((rop >> 4) & 0x0f0000) != (rop & 0x0f0000));
- useSrc = (((rop >> 2) & 0x330000) != (rop & 0x330000));
- useDst = (((rop >> 1) & 0x550000) != (rop & 0x550000));
-
- dprintf_gdi(stddeb, "BitBlt: %04x %d,%d %dx%d %04x %d,%d %06lx\n",
- hdcDst, xDst, yDst, width, height, hdcSrc, xSrc, ySrc, rop);
-
- if (!useSrc)
- return PatBlt( hdcDst, xDst, yDst, width, height, rop );
-
- dcDst = (DC *) GDI_GetObjPtr( hdcDst, DC_MAGIC );
- if (!dcDst)
+ if (!(dcDst = (DC *)GDI_GetObjPtr( hdcDst, DC_MAGIC )))
{
- dcDst = (DC *)GDI_GetObjPtr(hdcDst, METAFILE_DC_MAGIC);
- if (!dcDst) return FALSE;
- MF_BitBlt(dcDst, xDst, yDst, width, height,
- hdcSrc, xSrc, ySrc, rop);
- return TRUE;
+ dcDst = (DC *)GDI_GetObjPtr( hdcDst, METAFILE_DC_MAGIC );
+ if (!dcDst) return FALSE;
+ return MF_BitBlt( dcDst, xDst, yDst, width, height,
+ hdcSrc, xSrc, ySrc, rop );
}
dcSrc = (DC *) GDI_GetObjPtr( hdcSrc, DC_MAGIC );
- if (!dcSrc) return FALSE;
- if ((width * dcSrc->w.VportExtX / dcSrc->w.WndExtX !=
- width * dcDst->w.VportExtX / dcDst->w.WndExtX) ||
- (height * dcSrc->w.VportExtY / dcSrc->w.WndExtY !=
- height * dcDst->w.VportExtY / dcDst->w.WndExtY))
- return StretchBlt( hdcDst, xDst, yDst, width, height,
- hdcSrc, xSrc, ySrc, width, height, rop );
+ dprintf_bitblt(stddeb,
+ "BitBlt: %04x %d,%d %d bpp -> %04x %d,%d %dx%dx%d rop=%06lx\n",
+ hdcSrc, xSrc, ySrc, dcSrc ? dcSrc->w.bitsPerPixel : 0,
+ hdcDst, xDst, yDst, width, height, dcDst->w.bitsPerPixel, rop);
- xSrc = dcSrc->w.DCOrgX + XLPTODP( dcSrc, xSrc );
- ySrc = dcSrc->w.DCOrgY + YLPTODP( dcSrc, ySrc );
- xDst = dcDst->w.DCOrgX + XLPTODP( dcDst, xDst );
- yDst = dcDst->w.DCOrgY + YLPTODP( dcDst, yDst );
- width = width * dcDst->w.VportExtX / dcDst->w.WndExtX;
- height = height * dcDst->w.VportExtY / dcDst->w.WndExtY;
-
- tmpRect.left = min( xDst, xDst + width );
- tmpRect.top = min( yDst, yDst + height );
- tmpRect.right = max( xDst, xDst + width );
- tmpRect.bottom = max( yDst, yDst + height );
-
- GetClipBox( hdcDst, &clipRect );
- OffsetRect( &clipRect, dcDst->w.DCOrgX, dcDst->w.DCOrgY );
- if (!IntersectRect( &dstRect, &tmpRect, &clipRect )) return TRUE;
-
- xSrc += dstRect.left - xDst;
- ySrc += dstRect.top - yDst;
- xDst = dstRect.left;
- yDst = dstRect.top;
- width = dstRect.right - dstRect.left;
- height = dstRect.bottom - dstRect.top;
-
- if (rop == SRCCOPY) /* Optimisation for SRCCOPY */
- {
- DC_SetupGCForText( dcDst );
- if (dcSrc->w.bitsPerPixel == dcDst->w.bitsPerPixel)
- {
- XCopyArea( display, dcSrc->u.x.drawable, dcDst->u.x.drawable,
- dcDst->u.x.gc, xSrc, ySrc, width, height, xDst, yDst );
- return TRUE;
- }
- if (dcSrc->w.bitsPerPixel == 1)
- {
- XCopyPlane( display, dcSrc->u.x.drawable,
- dcDst->u.x.drawable, dcDst->u.x.gc,
- xSrc, ySrc, width, height, xDst, yDst, 1);
- return TRUE;
- }
- }
-
- rop >>= 16;
-
- /* printf( "BitBlt: applying rop %lx\n", rop ); */
- tmpGC = XCreateGC( display, rootWindow, 0, NULL );
- srcPixmap = XCreatePixmap( display, rootWindow, width, height,
- dcDst->w.bitsPerPixel );
- dstPixmap = XCreatePixmap( display, rootWindow, width, height,
- dcDst->w.bitsPerPixel );
- if (useSrc)
- BITBLT_GetArea( hdcSrc, hdcDst, srcPixmap, tmpGC,
- xSrc, ySrc, width, height );
- if (useDst)
- BITBLT_GetArea( hdcDst, hdcDst, dstPixmap, tmpGC,
- xDst, yDst, width, height );
- if (usePat)
- BITBLT_SelectBrush( dcDst, tmpGC );
- destUsed = FALSE;
-
- for (opcode = BITBLT_Opcodes[rop & 0xff]; *opcode; opcode++)
- {
- switch(*opcode >> 4)
- {
- case OP_ARGS(DST,TMP):
- if (!tmpPixmap) tmpPixmap = XCreatePixmap( display, rootWindow,
- width, height,
- dcDst->w.bitsPerPixel );
- XSetFunction( display, tmpGC, *opcode & 0x0f );
- XCopyArea( display, dstPixmap, tmpPixmap, tmpGC,
- 0, 0, width, height, 0, 0 );
- break;
-
- case OP_ARGS(DST,SRC):
- XSetFunction( display, tmpGC, *opcode & 0x0f );
- XCopyArea( display, dstPixmap, srcPixmap, tmpGC,
- 0, 0, width, height, 0, 0 );
- break;
-
- case OP_ARGS(SRC,TMP):
- if (!tmpPixmap) tmpPixmap = XCreatePixmap( display, rootWindow,
- width, height,
- dcDst->w.bitsPerPixel );
- XSetFunction( display, tmpGC, *opcode & 0x0f );
- XCopyArea( display, srcPixmap, tmpPixmap, tmpGC,
- 0, 0, width, height, 0, 0 );
- break;
-
- case OP_ARGS(SRC,DST):
- XSetFunction( display, tmpGC, *opcode & 0x0f );
- XCopyArea( display, srcPixmap, dstPixmap, tmpGC,
- 0, 0, width, height, 0, 0 );
- destUsed = TRUE;
- break;
-
- case OP_ARGS(PAT,TMP):
- if (!tmpPixmap) tmpPixmap = XCreatePixmap( display, rootWindow,
- width, height,
- dcDst->w.bitsPerPixel );
- XSetFunction( display, tmpGC, *opcode & 0x0f );
- XFillRectangle( display, tmpPixmap, tmpGC, 0, 0, width, height );
- break;
-
- case OP_ARGS(PAT,DST):
- XSetFunction( display, tmpGC, *opcode & 0x0f );
- XFillRectangle( display, dstPixmap, tmpGC, 0, 0, width, height );
- destUsed = TRUE;
- break;
-
- case OP_ARGS(PAT,SRC):
- XSetFunction( display, tmpGC, *opcode & 0x0f );
- XFillRectangle( display, srcPixmap, tmpGC, 0, 0, width, height );
- break;
-
- case OP_ARGS(TMP,SRC):
- XSetFunction( display, tmpGC, *opcode & 0x0f );
- XCopyArea( display, tmpPixmap, srcPixmap, tmpGC,
- 0, 0, width, height, 0, 0 );
- break;
-
- case OP_ARGS(TMP,DST):
- XSetFunction( display, tmpGC, *opcode & 0x0f );
- XCopyArea( display, tmpPixmap, dstPixmap, tmpGC,
- 0, 0, width, height, 0, 0 );
- destUsed = TRUE;
- break;
- }
- }
- XSetFunction( display, dcDst->u.x.gc, GXcopy );
- BITBLT_PutArea( hdcDst, destUsed ? dstPixmap : srcPixmap,
- dcDst->u.x.gc, xDst, yDst, width, height );
- XFreePixmap( display, dstPixmap );
- XFreePixmap( display, srcPixmap );
- if (tmpPixmap) XFreePixmap( display, tmpPixmap );
- XFreeGC( display, tmpGC );
- return TRUE;
-#if 0
- if (((rop & 0x0f) == (rop >> 4))&&(rop!=0xbb))
- /* FIXME: Test, whether more than just 0xbb has to be excluded */
- {
- XSetFunction( display, dcDst->u.x.gc, DC_XROPfunction[rop & 0x0f] );
- if (dcSrc->w.bitsPerPixel == dcDst->w.bitsPerPixel)
- {
- XCopyArea( display, dcSrc->u.x.drawable,
- dcDst->u.x.drawable, dcDst->u.x.gc,
- min(xs1,xs2), min(ys1,ys2), abs(xs2-xs1), abs(ys2-ys1),
- min(xd1,xd2), min(yd1,yd2) );
- }
- else
- {
- if (dcSrc->w.bitsPerPixel != 1) return FALSE;
- XCopyPlane( display, dcSrc->u.x.drawable,
- dcDest->u.x.drawable, dcDest->u.x.gc,
- min(xs1,xs2), min(ys1,ys2), abs(xs2-xs1), abs(ys2-ys1),
- min(xd1,xd2), min(yd1,yd2), 1 );
- }
- }
- else
- {
- XImage *sxi, *dxi, *bxi;
- int x,y,s,d,p,res,ofs,i,cp,cs,cd,cres;
- XColor sentry,dentry,pentry,entry;
- long colors[256];
-
- /* HDC hdcBrush = CreateCompatibleDC(hdcDest);
- DC *dcBrush;*/
- RECT r = {min(xDest,xDest+width), min(yDest,yDest+height),
- max(xDest,xDest+width), max(yDest,yDest+height)};
- HBRUSH cur_brush=SelectObject(hdcDest, GetStockObject(BLACK_BRUSH));
- SelectObject(hdcDest, cur_brush);
- /* FillRect(hdcBrush, &r, cur_brush);*/
- sxi = BITBLT_GetImage( hdcSrc, min(xs1,xs2), min(ys1,ys2),
- abs(xs2-xs1), abs(ys2-ys1) );
- dxi = BITBLT_GetImage( hdcDest, min(xd1,xd2), min(yd1,yd2),
- abs(xs2-xs1), abs(ys2-ys1) );
- /* dcBrush = (DC *) GDI_GetObjPtr( hdcBrush, DC_MAGIC );*/
- /* bxi=XGetImage(display, dcBrush->u.x.drawable, min(xd1,xd2),min(yd1,yd2),
- abs(xs2-xs1), abs(ys2-ys1), AllPlanes, ZPixmap);*/
- /* FIXME: It's really not necessary to do this on the visible screen */
- FillRect(hdcDest, &r, cur_brush);
- bxi = BITBLT_GetImage( hdcDest, min(xd1,xd2), min(yd1,yd2),
- abs(xs2-xs1), abs(ys2-ys1) );
- for (i=0; i<min(256,1<<(dcDest->w.bitsPerPixel)); i++)
- {
- entry.pixel = i;
- XQueryColor ( display, COLOR_WinColormap, &entry);
- colors[i] = (int) RGB( entry.red>>8, entry.green>>8, entry.blue>>8 );
- }
- if (dcSrc->w.bitsPerPixel == dcDest->w.bitsPerPixel)
- {
- for(x=0; x<abs(xs2-xs1); x++)
- {
- for(y=0; y<abs(ys2-ys1); y++)
- {
- s = XGetPixel(sxi, x, y);
- d = XGetPixel(dxi, x, y);
- p = XGetPixel(bxi, x, y);
- if (s<256)
- cs=colors[s];
- else
- {
- sentry.pixel = s;
- XQueryColor ( display, COLOR_WinColormap, &sentry);
- cs = (int) RGB( sentry.red>>8,sentry.green>>8, sentry.blue>>8 );
- }
- if (d<256)
- cd=colors[d];
- else
- {
- dentry.pixel = d;
- XQueryColor ( display, COLOR_WinColormap, &dentry);
- cd = (int) RGB( dentry.red>>8, dentry.green>>8,dentry.blue>>8 );
- }
- if (p<256)
- cp=colors[p];
- else
- {
- pentry.pixel = p;
- XQueryColor ( display, COLOR_WinColormap, &pentry);
- cp = (int) RGB( pentry.red>>8, pentry.green>>8,pentry.blue>>8 );
- }
- cres = 0;
- for(i=0; i<24; i++)
- {
- ofs=1<<(((cp>>i)&1)*4+((cs>>i)&1)*2+((cd>>i)&1));
- if (rop & ofs)
- cres |= (1<<i);
- }
- if (cres==cs)
- res=s;
- else if (cres==cd)
- res=d;
- else if (cres==cp)
- res=p;
- else
- {
- res = -1;
- for (i=0; i<min(256,1<<(dcDest->w.bitsPerPixel)); i++)
- if (colors[i]==cres)
- {
- res = i;
- break;
- }
- if (res == -1)
- res = GetNearestPaletteIndex(dcDest->w.hPalette, res);
- }
- XPutPixel(dxi, x, y, res);
- }
- }
- }
- else
- fprintf(stderr,"BitBlt // depths different!\n");
- XPutImage(display, dcDest->u.x.drawable, dcDest->u.x.gc,
- dxi, 0, 0, min(xd1,xd2), min(yd1,yd2), abs(xs2-xs1), abs(ys2-ys1)+38);
- XDestroyImage(sxi);
- XDestroyImage(dxi);
- XDestroyImage(bxi);
- /*DeleteDC(hdcBrush);*/
- }
-#endif
- return TRUE;
+ return BITBLT_InternalStretchBlt( dcDst, xDst, yDst, width, height,
+ dcSrc, xSrc, ySrc, width, height, rop );
}
-
-/***********************************************************************
- * black on white stretch -- favors color pixels over white
- *
- */
-static void bonw_stretch(XImage *sxi, XImage *dxi,
- short widthSrc, short heightSrc, short widthDest, short heightDest)
-{
- float deltax, deltay, sourcex, sourcey, oldsourcex, oldsourcey;
- register int x, y;
- Pixel whitep;
- int totalx, totaly, xavgwhite, yavgwhite;
- register int i;
- int endx, endy;
-
- deltax = (float)widthSrc/widthDest;
- deltay = (float)heightSrc/heightDest;
- whitep = WhitePixel(display, DefaultScreen(display));
-
- oldsourcex = 0;
- for (x=0, sourcex=0.0; x<widthDest;
- x++, oldsourcex=sourcex, sourcex+=deltax) {
- xavgwhite = 0;
- if (deltax > 1.0) {
- totalx = 0;
- endx = (int)sourcex;
- for (i=(int)oldsourcex; i<=endx; i++)
- if (XGetPixel(sxi, i, (int)sourcey) == whitep)
- totalx++;
- xavgwhite = (totalx > (int)(deltax / 2.0));
- } else {
- xavgwhite = 0;
- }
-
- oldsourcey = 0;
- for (y=0, sourcey=0.0; y<heightDest;
- y++, oldsourcey=sourcey, sourcey+=deltay) {
- yavgwhite = 0;
- if (deltay > 1.0) {
- totaly = 0;
- endy = (int)sourcey;
- for (i=(int)oldsourcey; i<=endy; i++)
- if (XGetPixel(sxi, (int)sourcex, i) == whitep)
- totaly++;
- yavgwhite = (totaly > ((int)deltay / 2));
- } else {
- yavgwhite = 0;
- }
- if (xavgwhite && yavgwhite)
- XPutPixel(dxi, x, y, whitep);
- else
- XPutPixel(dxi, x, y, XGetPixel(sxi, (int)sourcex, (int)sourcey));
-
- } /* for all y in dest */
- } /* for all x in dest */
-
-}
-
-/***********************************************************************
- * white on black stretch -- favors color pixels over black
- *
- */
-static void wonb_stretch(XImage *sxi, XImage *dxi,
- short widthSrc, short heightSrc, short widthDest, short heightDest)
-{
- float deltax, deltay, sourcex, sourcey, oldsourcex, oldsourcey;
- register int x, y;
- Pixel blackp;
- int totalx, totaly, xavgblack, yavgblack;
- register int i;
- int endx, endy;
-
- deltax = (float)widthSrc/widthDest;
- deltay = (float)heightSrc/heightDest;
- blackp = WhitePixel(display, DefaultScreen(display));
-
- oldsourcex = 0;
- for (x=0, sourcex=0.0; x<widthDest;
- x++, oldsourcex=sourcex, sourcex+=deltax) {
- xavgblack = 0;
- if (deltax > 1.0) {
- totalx = 0;
- endx = (int)sourcex;
- for (i=(int)oldsourcex; i<=endx; i++)
- if (XGetPixel(sxi, i, (int)sourcey) == blackp)
- totalx++;
- xavgblack = (totalx > (int)(deltax / 2.0));
- } else {
- xavgblack = 0;
- }
-
- oldsourcey = 0;
- for (y=0, sourcey=0.0; y<heightDest;
- y++, oldsourcey=sourcey, sourcey+=deltay) {
- yavgblack = 0;
- if (deltay > 1.0) {
- totaly = 0;
- endy = (int)sourcey;
- for (i=(int)oldsourcey; i<=endy; i++)
- if (XGetPixel(sxi, (int)sourcex, i) == blackp)
- totaly++;
- yavgblack = (totaly > ((int)deltay / 2));
- } else {
- yavgblack = 0;
- }
- if (xavgblack && yavgblack)
- XPutPixel(dxi, x, y, blackp);
- else
- XPutPixel(dxi, x, y, XGetPixel(sxi, (int)sourcex, (int)sourcey));
-
- } /* for all y in dest */
- } /* for all x in dest */
-}
-
-/* We use the 32-bit to 64-bit multiply and 64-bit to 32-bit divide of the */
-/* 386 (which gcc doesn't know well enough) to efficiently perform integer */
-/* scaling without having to worry about overflows. */
-
-/* ##### muldiv64() borrowed from svgalib 1.03 ##### */
-static __inline__ int muldiv64( int m1, int m2, int d )
-{
- /* int32 * int32 -> int64 / int32 -> int32 */
-#ifdef i386
- int result;
- __asm__(
- "imull %%edx\n\t"
- "idivl %3\n\t"
- : "=&a" (result) /* out */
- : "0" (m1), "d" (m2), "g" (d) /* in */
- : "%edx" /* mod */
- );
- return result;
-#else
- return m1 * m2 / d;
-#endif
-}
-
-/***********************************************************************
- * color stretch -- deletes unused pixels
- *
- */
-static void color_stretch(XImage *sxi, XImage *dxi,
- short widthSrc, short heightSrc, short widthDest, short heightDest)
-{
- register int x, y, sx, sy, xfactor, yfactor;
-
- xfactor = muldiv64(widthSrc, 65536, widthDest);
- yfactor = muldiv64(heightSrc, 65536, heightDest);
-
- sy = 0;
-
- for (y = 0; y < heightDest;)
- {
- int sourcey = sy >> 16;
- sx = 0;
- for (x = 0; x < widthDest; x++) {
- XPutPixel(dxi, x, y, XGetPixel(sxi, sx >> 16, sourcey));
- sx += xfactor;
- }
- y++;
- while (y < heightDest) {
- int py;
-
- sourcey = sy >> 16;
- sy += yfactor;
-
- if ((sy >> 16) != sourcey)
- break;
-
- /* vertical stretch => copy previous line */
-
- py = y - 1;
-
- for (x = 0; x < widthDest; x++)
- XPutPixel(dxi, x, y, XGetPixel(dxi, x, py));
- y++;
- }
- }
-}
-
/***********************************************************************
* StretchBlt (GDI.35)
- *
- * o StretchBlt is CPU intensive so we only call it if we have
- * to. Checks are made to see if we can call BitBlt instead.
- *
- * o the stretching is slowish, some integer interpolation would
- * speed it up.
- *
- * o only black on white and color copy have been tested
*/
-BOOL StretchBlt( HDC hdcDest, short xDest, short yDest, short widthDest, short heightDest,
- HDC hdcSrc, short xSrc, short ySrc, short widthSrc, short heightSrc, DWORD rop )
+BOOL StretchBlt( HDC hdcDst, short xDst, short yDst,
+ short widthDst, short heightDst,
+ HDC hdcSrc, short xSrc, short ySrc,
+ short widthSrc, short heightSrc, DWORD rop )
{
- int xs1, xs2, ys1, ys2;
- int xd1, xd2, yd1, yd2;
- DC *dcDest, *dcSrc;
- XImage *sxi, *dxi;
- DWORD saverop = rop;
- WORD stretchmode;
+ DC *dcDst, *dcSrc;
- dprintf_gdi(stddeb, "StretchBlt: %d %d,%d %dx%d %d %d,%d %dx%d %06lx\n",
- hdcDest, xDest, yDest, widthDest, heightDest, hdcSrc, xSrc,
- ySrc, widthSrc, heightSrc, rop );
- dprintf_gdi(stddeb, "StretchMode is %x\n",
- ((DC *)GDI_GetObjPtr(hdcDest, DC_MAGIC))->w.stretchBltMode);
-
- if (widthDest == 0 || heightDest == 0) return FALSE;
- if (widthSrc == 0 || heightSrc == 0) return FALSE;
- if ((rop & 0xcc0000) == ((rop & 0x330000) << 2))
- return PatBlt( hdcDest, xDest, yDest, widthDest, heightDest, rop );
-
- /* don't stretch the bitmap unless we have to; if we don't,
- * call BitBlt for a performance boost
- */
-
- if (widthSrc == widthDest && heightSrc == heightDest) {
- return BitBlt(hdcDest, xDest, yDest, widthSrc, heightSrc,
- hdcSrc, xSrc, ySrc, rop);
- }
-
- rop >>= 16;
- if ((rop & 0x0f) != (rop >> 4))
+ if (!(dcDst = (DC *) GDI_GetObjPtr( hdcDst, DC_MAGIC )))
{
- fprintf(stdnimp, "StretchBlt: Unimplemented ROP %02lx\n", rop );
- return FALSE;
+ if (!(dcDst = (DC *)GDI_GetObjPtr( hdcDst, METAFILE_DC_MAGIC )))
+ return FALSE;
+ return MF_StretchBlt( dcDst, xDst, yDst, widthDst, heightDst,
+ hdcSrc, xSrc, ySrc, widthSrc, heightSrc, rop );
}
dcSrc = (DC *) GDI_GetObjPtr( hdcSrc, DC_MAGIC );
- if (!dcSrc) return FALSE;
- dcDest = (DC *) GDI_GetObjPtr( hdcDest, DC_MAGIC );
- if (!dcDest)
- {
- dcDest = (DC *)GDI_GetObjPtr(hdcDest, METAFILE_DC_MAGIC);
- if (!dcDest) return FALSE;
- MF_StretchBlt(dcDest, xDest, yDest, widthDest, heightDest,
- hdcSrc, xSrc, ySrc, widthSrc, heightSrc, saverop);
- return TRUE;
- }
+ dprintf_bitblt(stddeb,
+ "StretchBlt: %04x %d,%d %dx%dx%d -> %04x %d,%d %dx%dx%d rop=%06lx\n",
+ hdcSrc, xSrc, ySrc, widthSrc, heightSrc,
+ dcSrc ? dcSrc->w.bitsPerPixel : 0, hdcDst, xDst, yDst,
+ widthDst, heightDst, dcDst->w.bitsPerPixel, rop );
- xs1 = dcSrc->w.DCOrgX + XLPTODP( dcSrc, xSrc );
- xs2 = dcSrc->w.DCOrgX + XLPTODP( dcSrc, xSrc + widthSrc );
- ys1 = dcSrc->w.DCOrgY + YLPTODP( dcSrc, ySrc );
- ys2 = dcSrc->w.DCOrgY + YLPTODP( dcSrc, ySrc + heightSrc );
- xd1 = dcDest->w.DCOrgX + XLPTODP( dcDest, xDest );
- xd2 = dcDest->w.DCOrgX + XLPTODP( dcDest, xDest + widthDest );
- yd1 = dcDest->w.DCOrgY + YLPTODP( dcDest, yDest );
- yd2 = dcDest->w.DCOrgY + YLPTODP( dcDest, yDest + heightDest );
-
-
- /* get a source and destination image so we can manipulate
- * the pixels
- */
-
- sxi = BITBLT_GetImage( hdcSrc, xs1, ys1, widthSrc, heightSrc );
- dxi = XCreateImage(display, DefaultVisualOfScreen(screen),
- screenDepth, ZPixmap,
- 0, NULL, widthDest, heightDest,
- 32, 0);
- dxi->data = malloc(dxi->bytes_per_line * heightDest);
-
- stretchmode = ((DC *)GDI_GetObjPtr(hdcDest, DC_MAGIC))->w.stretchBltMode;
-
- /* the actual stretching is done here, we'll try to use
- * some interolation to get some speed out of it in
- * the future
- */
-
- switch (stretchmode) {
- case BLACKONWHITE:
- color_stretch(sxi, dxi, widthSrc, heightSrc,
- widthDest, heightDest);
-/* bonw_stretch(sxi, dxi, widthSrc, heightSrc,
- widthDest, heightDest);
-*/ break;
- case WHITEONBLACK:
- color_stretch(sxi, dxi, widthSrc, heightSrc,
- widthDest, heightDest);
-/* wonb_stretch(sxi, dxi, widthSrc, heightSrc,
- widthDest, heightDest);
-*/ break;
- case COLORONCOLOR:
- color_stretch(sxi, dxi, widthSrc, heightSrc,
- widthDest, heightDest);
- break;
- default:
- fprintf(stderr, "StretchBlt: unknown stretchmode '%d'\n",
- stretchmode);
- break;
- }
-
- DC_SetupGCForText(dcDest);
- XSetFunction(display, dcDest->u.x.gc, DC_XROPfunction[rop & 0x0f]);
- XPutImage(display, dcDest->u.x.drawable, dcDest->u.x.gc,
- dxi, 0, 0, min(xd1,xd2), min(yd1,yd2),
- widthDest, heightDest);
-
- /* now free the images we created */
-
- XDestroyImage(sxi);
- XDestroyImage(dxi);
-
- return TRUE;
+ return BITBLT_InternalStretchBlt( dcDst, xDst, yDst, widthDst, heightDst,
+ dcSrc, xSrc, ySrc, widthSrc, heightSrc,
+ rop );
}
diff --git a/objects/bitmap.c b/objects/bitmap.c
index 86c6e3b..8191585 100644
--- a/objects/bitmap.c
+++ b/objects/bitmap.c
@@ -204,9 +204,9 @@
/***********************************************************************
- * BMP_DeleteObject
+ * BITMAP_DeleteObject
*/
-BOOL BMP_DeleteObject( HBITMAP hbitmap, BITMAPOBJ * bitmap )
+BOOL BITMAP_DeleteObject( HBITMAP hbitmap, BITMAPOBJ * bitmap )
{
XFreePixmap( display, bitmap->pixmap );
return GDI_FreeObject( hbitmap );
@@ -214,9 +214,9 @@
/***********************************************************************
- * BMP_GetObject
+ * BITMAP_GetObject
*/
-int BMP_GetObject( BITMAPOBJ * bmp, int count, LPSTR buffer )
+int BITMAP_GetObject( BITMAPOBJ * bmp, int count, LPSTR buffer )
{
if (count > sizeof(BITMAP)) count = sizeof(BITMAP);
memcpy( buffer, &bmp->bitmap, count );
diff --git a/objects/brush.c b/objects/brush.c
index 1bfed42..9d185af 100644
--- a/objects/brush.c
+++ b/objects/brush.c
@@ -1,21 +1,20 @@
/*
* GDI brush objects
*
- * Copyright 1993 Alexandre Julliard
- *
-static char Copyright[] = "Copyright Alexandre Julliard, 1993";
-*/
+ * Copyright 1993, 1994 Alexandre Julliard
+ */
-#include "gdi.h"
+#include <stdlib.h>
+#include "brush.h"
#include "bitmap.h"
#include "metafile.h"
-#include "stddebug.h"
#include "color.h"
+#include "stddebug.h"
#include "debug.h"
#define NB_HATCH_STYLES 6
-static char HatchBrushes[NB_HATCH_STYLES][8] =
+static const char HatchBrushes[NB_HATCH_STYLES][8] =
{
{ 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00 }, /* HS_HORIZONTAL */
{ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, /* HS_VERTICAL */
@@ -25,6 +24,118 @@
{ 0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81 } /* HS_DIAGCROSS */
};
+ /* Levels of each primary for dithering */
+#define PRIMARY_LEVELS 3
+#define TOTAL_LEVELS (PRIMARY_LEVELS*PRIMARY_LEVELS*PRIMARY_LEVELS)
+
+ /* Dithering matrix size */
+#define MATRIX_SIZE 8
+#define MATRIX_SIZE_2 (MATRIX_SIZE*MATRIX_SIZE)
+
+ /* Total number of possible levels for a dithered primary color */
+#define DITHER_LEVELS (MATRIX_SIZE_2 * (PRIMARY_LEVELS-1) + 1)
+
+ /* Dithering matrix */
+static const int dither_matrix[MATRIX_SIZE_2] =
+{
+ 0, 32, 8, 40, 2, 34, 10, 42,
+ 48, 16, 56, 24, 50, 18, 58, 26,
+ 12, 44, 4, 36, 14, 46, 6, 38,
+ 60, 28, 52, 20, 62, 30, 54, 22,
+ 3, 35, 11, 43, 1, 33, 9, 41,
+ 51, 19, 59, 27, 49, 17, 57, 25,
+ 15, 47, 7, 39, 13, 45, 5, 37,
+ 63, 31, 55, 23, 61, 29, 53, 21
+};
+
+ /* Mapping between (R,G,B) triples and EGA colors */
+static const int EGAmapping[TOTAL_LEVELS] =
+{
+ 0, /* 000000 -> 000000 */
+ 4, /* 00007f -> 000080 */
+ 12, /* 0000ff -> 0000ff */
+ 2, /* 007f00 -> 008000 */
+ 6, /* 007f7f -> 008080 */
+ 6, /* 007fff -> 008080 */
+ 10, /* 00ff00 -> 00ff00 */
+ 6, /* 00ff7f -> 008080 */
+ 14, /* 00ffff -> 00ffff */
+ 1, /* 7f0000 -> 800000 */
+ 5, /* 7f007f -> 800080 */
+ 5, /* 7f00ff -> 800080 */
+ 3, /* 7f7f00 -> 808000 */
+ 8, /* 7f7f7f -> 808080 */
+ 7, /* 7f7fff -> c0c0c0 */
+ 3, /* 7fff00 -> 808000 */
+ 7, /* 7fff7f -> c0c0c0 */
+ 7, /* 7fffff -> c0c0c0 */
+ 9, /* ff0000 -> ff0000 */
+ 5, /* ff007f -> 800080 */
+ 13, /* ff00ff -> ff00ff */
+ 3, /* ff7f00 -> 808000 */
+ 7, /* ff7f7f -> c0c0c0 */
+ 7, /* ff7fff -> c0c0c0 */
+ 11, /* ffff00 -> ffff00 */
+ 7, /* ffff7f -> c0c0c0 */
+ 15 /* ffffff -> ffffff */
+};
+
+#define PIXEL_VALUE(r,g,b) \
+ COLOR_mapEGAPixel[EGAmapping[((r)*PRIMARY_LEVELS+(g))*PRIMARY_LEVELS+(b)]]
+
+ /* X image for building dithered pixmap */
+static XImage *ditherImage = NULL;
+
+
+/***********************************************************************
+ * BRUSH_Init
+ *
+ * Create the X image used for dithering.
+ */
+BOOL BRUSH_Init(void)
+{
+ XCREATEIMAGE( ditherImage, MATRIX_SIZE, MATRIX_SIZE, screenDepth );
+ return (ditherImage != NULL);
+}
+
+
+/***********************************************************************
+ * BRUSH_DitherColor
+ */
+Pixmap BRUSH_DitherColor( DC *dc, COLORREF color )
+{
+ static COLORREF prevColor = 0xffffffff;
+ unsigned int x, y;
+ Pixmap pixmap;
+
+ if (color != prevColor)
+ {
+ int r = GetRValue( color ) * DITHER_LEVELS;
+ int g = GetGValue( color ) * DITHER_LEVELS;
+ int b = GetBValue( color ) * DITHER_LEVELS;
+ const int *pmatrix = dither_matrix;
+
+ for (y = 0; y < MATRIX_SIZE; y++)
+ {
+ for (x = 0; x < MATRIX_SIZE; x++)
+ {
+ int d = *pmatrix++ * 256;
+ int dr = ((r + d) / MATRIX_SIZE_2) / 256;
+ int dg = ((g + d) / MATRIX_SIZE_2) / 256;
+ int db = ((b + d) / MATRIX_SIZE_2) / 256;
+ XPutPixel( ditherImage, x, y, PIXEL_VALUE(dr,dg,db) );
+ }
+ }
+ prevColor = color;
+ }
+
+ pixmap = XCreatePixmap( display, rootWindow,
+ MATRIX_SIZE, MATRIX_SIZE, screenDepth );
+ XPutImage( display, pixmap, BITMAP_colorGC, ditherImage, 0, 0,
+ 0, 0, MATRIX_SIZE, MATRIX_SIZE );
+ return pixmap;
+}
+
/***********************************************************************
* CreateBrushIndirect (GDI.50)
@@ -172,14 +283,14 @@
/***********************************************************************
- * BRUSH_MakeSolidBrush
+ * BRUSH_SelectSolidBrush
*/
static void BRUSH_SelectSolidBrush( DC *dc, COLORREF color )
{
if ((dc->w.bitsPerPixel > 1) && (screenDepth <= 8) && !COLOR_IsSolid( color ))
{
/* Dithered brush */
- dc->u.x.brush.pixmap = DITHER_DitherColor( dc, color );
+ dc->u.x.brush.pixmap = BRUSH_DitherColor( dc, color );
dc->u.x.brush.fillStyle = FillTiled;
dc->u.x.brush.pixel = 0;
}
diff --git a/objects/clipping.c b/objects/clipping.c
index 48717e6..c633613 100644
--- a/objects/clipping.c
+++ b/objects/clipping.c
@@ -5,7 +5,7 @@
*/
#include <stdio.h>
-#include "gdi.h"
+#include "region.h"
#include "metafile.h"
#include "stddebug.h"
/* #define DEBUG_CLIPPING */
diff --git a/objects/color.c b/objects/color.c
index 3523880..68b029e 100644
--- a/objects/color.c
+++ b/objects/color.c
@@ -114,7 +114,7 @@
colorTranslation = (WORD *) GDI_HEAP_ADDR( hSysColorTranslation );
revTranslation = (WORD *) GDI_HEAP_ADDR( hRevSysColorTranslation );
- if (COLOR_WinColormap == DefaultColormapOfScreen(screen))
+ if ((COLOR_WinColormap == DefaultColormapOfScreen(screen)) && (screenDepth <= 8))
{
COLOR_PaletteToPixel = (int *)malloc( sizeof(int) * size );
COLOR_PixelToPalette = (int *)malloc( sizeof(int) * size );
@@ -151,7 +151,7 @@
fprintf(stderr, "Warning: Not enough free colors. Try using the -privatemap option.\n" );
color.pixel = color.red = color.green = color.blue = 0;
}
- else
+ else if (COLOR_PaletteToPixel)
{
COLOR_PaletteToPixel[pixel] = color.pixel;
COLOR_PixelToPalette[color.pixel] = pixel;
@@ -254,6 +254,14 @@
WORD *mapping;
if (screenDepth > 8) return color;
+ if (dc && (dc->w.bitsPerPixel == 1) && ((color >> 24) == 0))
+ {
+ if (((color >> 16) & 0xff) +
+ ((color >> 8) & 0xff) + (color & 0xff) > 255*3/2)
+ return 1; /* white */
+ else return 0; /* black */
+ }
+
switch(color >> 24)
{
case 0: /* RGB */
diff --git a/objects/dc.c b/objects/dc.c
index df8e413..312f87f 100644
--- a/objects/dc.c
+++ b/objects/dc.c
@@ -3,8 +3,8 @@
*
* Copyright 1993 Alexandre Julliard
*
-static char Copyright[] = "Copyright Alexandre Julliard, 1993";
-*/
+ */
+
#include <stdlib.h>
#include <string.h>
#include "gdi.h"
@@ -17,9 +17,57 @@
static DeviceCaps * displayDevCaps = NULL;
-extern const WIN_DC_INFO DCVAL_defaultValues;
extern void CLIPPING_UpdateGCRegion( DC * dc ); /* objects/clipping.c */
+ /* Default DC values */
+static const WIN_DC_INFO DC_defaultValues =
+{
+ 0, /* flags */
+ NULL, /* devCaps */
+ 0, /* hMetaFile */
+ 0, /* hClipRgn */
+ 0, /* hVisRgn */
+ 0, /* hGCClipRgn */
+ STOCK_BLACK_PEN, /* hPen */
+ STOCK_WHITE_BRUSH, /* hBrush */
+ STOCK_SYSTEM_FONT, /* hFont */
+ 0, /* hBitmap */
+ 0, /* hFirstBitmap */
+ 0, /* hDevice */
+ STOCK_DEFAULT_PALETTE, /* hPalette */
+ R2_COPYPEN, /* ROPmode */
+ ALTERNATE, /* polyFillMode */
+ BLACKONWHITE, /* stretchBltMode */
+ ABSOLUTE, /* relAbsMode */
+ OPAQUE, /* backgroundMode */
+ RGB( 255, 255, 255 ), /* backgroundColor */
+ RGB( 0, 0, 0 ), /* textColor */
+ 0, /* backgroundPixel */
+ 0, /* textPixel */
+ 0, /* brushOrgX */
+ 0, /* brushOrgY */
+ TA_LEFT | TA_TOP | TA_NOUPDATECP, /* textAlign */
+ 0, /* charExtra */
+ 0, /* breakTotalExtra */
+ 0, /* breakCount */
+ 0, /* breakExtra */
+ 0, /* breakRem */
+ 1, /* bitsPerPixel */
+ MM_TEXT, /* MapMode */
+ 0, /* DCOrgX */
+ 0, /* DCOrgY */
+ 0, /* CursPosX */
+ 0, /* CursPosY */
+ 0, /* WndOrgX */
+ 0, /* WndOrgY */
+ 1, /* WndExtX */
+ 1, /* WndExtY */
+ 0, /* VportOrgX */
+ 0, /* VportOrgY */
+ 1, /* VportExtX */
+ 1 /* VportExtY */
+};
+
/* ROP code to GC function conversion */
const int DC_XROPfunction[16] =
{
@@ -109,17 +157,19 @@
/***********************************************************************
- * DC_SetupDCForBrush
+ * DC_SetupDCForPatBlt
*
- * Setup dc->u.x.gc for drawing operations using current brush.
- * Return 0 if brush is BS_NULL, 1 otherwise.
+ * Setup the GC for a PatBlt operation using current brush.
+ * If fMapColors is TRUE, X pixels are mapped to Windows colors.
+ * Return FALSE if brush is BS_NULL, TRUE otherwise.
*/
-int DC_SetupGCForBrush( DC * dc )
+BOOL DC_SetupGCForPatBlt( DC * dc, GC gc, BOOL fMapColors )
{
XGCValues val;
- unsigned long mask = 0;
+ unsigned long mask;
+ Pixmap pixmap = 0;
- if (dc->u.x.brush.style == BS_NULL) return 0;
+ if (dc->u.x.brush.style == BS_NULL) return FALSE;
if (dc->u.x.brush.pixel == -1)
{
/* Special case used for monochrome pattern brushes.
@@ -134,27 +184,68 @@
val.foreground = dc->u.x.brush.pixel;
val.background = dc->w.backgroundPixel;
}
+ if (fMapColors && COLOR_PixelToPalette)
+ {
+ val.foreground = COLOR_PixelToPalette[val.foreground];
+ val.background = COLOR_PixelToPalette[val.background];
+ }
+
val.function = DC_XROPfunction[dc->w.ROPmode-1];
val.fill_style = dc->u.x.brush.fillStyle;
- if ((val.fill_style==FillStippled) || (val.fill_style==FillOpaqueStippled))
+ switch(val.fill_style)
{
+ case FillStippled:
+ case FillOpaqueStippled:
if (dc->w.backgroundMode==OPAQUE) val.fill_style = FillOpaqueStippled;
val.stipple = dc->u.x.brush.pixmap;
mask = GCStipple;
- }
- else if (val.fill_style == FillTiled)
- {
- val.tile = dc->u.x.brush.pixmap;
+ break;
+
+ case FillTiled:
+ if (fMapColors && COLOR_PixelToPalette)
+ {
+ register int x, y;
+ XImage *image;
+ pixmap = XCreatePixmap( display, rootWindow, 8, 8, screenDepth );
+ image = XGetImage( display, dc->u.x.brush.pixmap, 0, 0, 8, 8,
+ AllPlanes, ZPixmap );
+ for (y = 0; y < 8; y++)
+ for (x = 0; x < 8; x++)
+ XPutPixel( image, x, y,
+ COLOR_PixelToPalette[XGetPixel( image, x, y)] );
+ XPutImage( display, pixmap, gc, image, 0, 0, 0, 0, 8, 8 );
+ XDestroyImage( image );
+ val.tile = pixmap;
+ }
+ else val.tile = dc->u.x.brush.pixmap;
mask = GCTile;
+ break;
+
+ default:
+ mask = 0;
+ break;
}
val.ts_x_origin = dc->w.DCOrgX + dc->w.brushOrgX;
val.ts_y_origin = dc->w.DCOrgY + dc->w.brushOrgY;
val.fill_rule = (dc->w.polyFillMode==WINDING) ? WindingRule : EvenOddRule;
- XChangeGC( display, dc->u.x.gc,
+ XChangeGC( display, gc,
GCFunction | GCForeground | GCBackground | GCFillStyle |
GCFillRule | GCTileStipXOrigin | GCTileStipYOrigin | mask,
&val );
- return 1;
+ if (pixmap) XFreePixmap( display, pixmap );
+ return TRUE;
+}
+
+
+/***********************************************************************
+ * DC_SetupDCForBrush
+ *
+ * Setup dc->u.x.gc for drawing operations using current brush.
+ * Return FALSE if brush is BS_NULL, TRUE otherwise.
+ */
+BOOL DC_SetupGCForBrush( DC * dc )
+{
+ return DC_SetupGCForPatBlt( dc, dc->u.x.gc, FALSE );
}
@@ -162,13 +253,13 @@
* DC_SetupDCForPen
*
* Setup dc->u.x.gc for drawing operations using current pen.
- * Return 0 if pen is PS_NULL, 1 otherwise.
+ * Return FALSE if pen is PS_NULL, TRUE otherwise.
*/
-int DC_SetupGCForPen( DC * dc )
+BOOL DC_SetupGCForPen( DC * dc )
{
XGCValues val;
- if (dc->u.x.pen.style == PS_NULL) return 0;
+ if (dc->u.x.pen.style == PS_NULL) return FALSE;
val.function = DC_XROPfunction[dc->w.ROPmode-1];
val.foreground = dc->u.x.pen.pixel;
val.background = dc->w.backgroundPixel;
@@ -187,7 +278,7 @@
XChangeGC( display, dc->u.x.gc,
GCFunction | GCForeground | GCBackground | GCLineWidth |
GCLineStyle | GCCapStyle | GCJoinStyle | GCFillStyle, &val );
- return 1;
+ return TRUE;
}
@@ -195,15 +286,16 @@
* DC_SetupGCForText
*
* Setup dc->u.x.gc for text drawing operations.
- * Return 0 if the font is null, 1 otherwise.
+ * Return FALSE if the font is null, TRUE otherwise.
*/
-int DC_SetupGCForText( DC * dc )
+BOOL DC_SetupGCForText( DC * dc )
{
XGCValues val;
if (!dc->u.x.font.fstruct)
{
- FONT_SelectObject(dc, STOCK_SYSTEM_FONT, NULL);
+ fprintf( stderr, "DC_SetupGCForText: fstruct is NULL. Please report this\n" );
+ return FALSE;
}
val.function = GXcopy; /* Text is always GXcopy */
val.foreground = dc->w.textPixel;
@@ -213,7 +305,7 @@
XChangeGC( display, dc->u.x.gc,
GCFunction | GCForeground | GCBackground | GCFillStyle |
GCFont, &val );
- return 1;
+ return TRUE;
}
@@ -364,7 +456,7 @@
}
dc->saveLevel = 0;
- memcpy( &dc->w, &DCVAL_defaultValues, sizeof(DCVAL_defaultValues) );
+ memcpy( &dc->w, &DC_defaultValues, sizeof(DC_defaultValues) );
memset( &dc->u.x, 0, sizeof(dc->u.x) );
dc->u.x.drawable = rootWindow;
@@ -421,7 +513,7 @@
bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC );
dc->saveLevel = 0;
- memcpy( &dc->w, &DCVAL_defaultValues, sizeof(DCVAL_defaultValues) );
+ memcpy( &dc->w, &DC_defaultValues, sizeof(DC_defaultValues) );
memset( &dc->u.x, 0, sizeof(dc->u.x) );
dc->u.x.drawable = bmp->pixmap;
@@ -430,6 +522,7 @@
dc->w.bitsPerPixel = 1;
dc->w.devCaps = displayDevCaps;
dc->w.hBitmap = hbitmap;
+ dc->w.hFirstBitmap = hbitmap;
dc->w.hVisRgn = CreateRectRgn( 0, 0, 1, 1 );
if (!dc->w.hVisRgn)
@@ -473,8 +566,7 @@
XFreeGC( display, dc->u.x.gc );
}
- if (dc->w.flags & DC_MEMORY) DeleteObject( dc->w.hBitmap );
-
+ if (dc->w.flags & DC_MEMORY) DeleteObject( dc->w.hFirstBitmap );
if (dc->w.hClipRgn) DeleteObject( dc->w.hClipRgn );
if (dc->w.hVisRgn) DeleteObject( dc->w.hVisRgn );
if (dc->w.hGCClipRgn) DeleteObject( dc->w.hGCClipRgn );
diff --git a/objects/dcvalues.c b/objects/dcvalues.c
index 801b6df..8180c44 100644
--- a/objects/dcvalues.c
+++ b/objects/dcvalues.c
@@ -8,54 +8,6 @@
#include "gdi.h"
#include "metafile.h"
- /* Default DC values */
-const WIN_DC_INFO DCVAL_defaultValues =
-{
- 0, /* flags */
- NULL, /* devCaps */
- 0, /* hMetaFile */
- 0, /* hClipRgn */
- 0, /* hVisRgn */
- 0, /* hGCClipRgn */
- STOCK_BLACK_PEN, /* hPen */
- STOCK_WHITE_BRUSH, /* hBrush */
- STOCK_SYSTEM_FONT, /* hFont */
- 0, /* hBitmap */
- 0, /* hDevice */
- STOCK_DEFAULT_PALETTE, /* hPalette */
- R2_COPYPEN, /* ROPmode */
- ALTERNATE, /* polyFillMode */
- BLACKONWHITE, /* stretchBltMode */
- ABSOLUTE, /* relAbsMode */
- OPAQUE, /* backgroundMode */
- RGB( 255, 255, 255 ), /* backgroundColor */
- RGB( 0, 0, 0 ), /* textColor */
- 0, /* backgroundPixel */
- 0, /* textPixel */
- 0, /* brushOrgX */
- 0, /* brushOrgY */
- TA_LEFT | TA_TOP | TA_NOUPDATECP, /* textAlign */
- 0, /* charExtra */
- 0, /* breakTotalExtra */
- 0, /* breakCount */
- 0, /* breakExtra */
- 0, /* breakRem */
- 1, /* bitsPerPixel */
- MM_TEXT, /* MapMode */
- 0, /* DCOrgX */
- 0, /* DCOrgY */
- 0, /* CursPosX */
- 0, /* CursPosY */
- 0, /* WndOrgX */
- 0, /* WndOrgY */
- 1, /* WndExtX */
- 1, /* WndExtY */
- 0, /* VportOrgX */
- 0, /* VportOrgY */
- 1, /* VportExtX */
- 1 /* VportExtY */
-};
-
#define DC_GET_VAL( func_type, func_name, dc_field ) \
func_type func_name( HDC hdc ) \
diff --git a/objects/dib.c b/objects/dib.c
index fe2ae9d..40039af 100644
--- a/objects/dib.c
+++ b/objects/dib.c
@@ -9,8 +9,8 @@
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "dc.h"
-#include "gdi.h"
#include "bitmap.h"
+#include "palette.h"
#include "icon.h"
#include "stddebug.h"
#include "color.h"
@@ -395,7 +395,7 @@
* bytes are always read in pairs. [JAY]
*/
if (escape_code & 1)
- (*pIn++); /* Get and throw away the pad byte. */
+ pIn++; /* Throw away the pad byte. */
break;
}
} /* switch (escape_code) : Escape sequence */
diff --git a/objects/dither.c b/objects/dither.c
deleted file mode 100644
index 79a1dcd..0000000
--- a/objects/dither.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Dithering functions
- *
- * Copyright 1994 Alexandre Julliard
- *
-static char Copyright[] = "Copyright Alexandre Julliard, 1994";
-*/
-
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include "color.h"
-#include "gdi.h"
-#include "bitmap.h"
-
-
- /* Levels of each primary */
-#define PRIMARY_LEVELS 3
-#define TOTAL_LEVELS (PRIMARY_LEVELS*PRIMARY_LEVELS*PRIMARY_LEVELS)
-
- /* Dithering matrix size */
-#define MATRIX_SIZE 8
-#define MATRIX_SIZE_2 (MATRIX_SIZE*MATRIX_SIZE)
-
- /* Total number of possible levels for a dithered primary color */
-#define DITHER_LEVELS (MATRIX_SIZE_2 * (PRIMARY_LEVELS-1) + 1)
-
- /* Dithering matrix */
-static const int dither_matrix[MATRIX_SIZE_2] =
-{
- 0, 32, 8, 40, 2, 34, 10, 42,
- 48, 16, 56, 24, 50, 18, 58, 26,
- 12, 44, 4, 36, 14, 46, 6, 38,
- 60, 28, 52, 20, 62, 30, 54, 22,
- 3, 35, 11, 43, 1, 33, 9, 41,
- 51, 19, 59, 27, 49, 17, 57, 25,
- 15, 47, 7, 39, 13, 45, 5, 37,
- 63, 31, 55, 23, 61, 29, 53, 21
-};
-
- /* Mapping between (R,G,B) triples and EGA colors */
-static const int EGAmapping[TOTAL_LEVELS] =
-{
- 0, /* 000000 -> 000000 */
- 4, /* 00007f -> 000080 */
- 12, /* 0000ff -> 0000ff */
- 2, /* 007f00 -> 008000 */
- 6, /* 007f7f -> 008080 */
- 6, /* 007fff -> 008080 */
- 10, /* 00ff00 -> 00ff00 */
- 6, /* 00ff7f -> 008080 */
- 14, /* 00ffff -> 00ffff */
- 1, /* 7f0000 -> 800000 */
- 5, /* 7f007f -> 800080 */
- 5, /* 7f00ff -> 800080 */
- 3, /* 7f7f00 -> 808000 */
- 8, /* 7f7f7f -> 808080 */
- 7, /* 7f7fff -> c0c0c0 */
- 3, /* 7fff00 -> 808000 */
- 7, /* 7fff7f -> c0c0c0 */
- 7, /* 7fffff -> c0c0c0 */
- 9, /* ff0000 -> ff0000 */
- 5, /* ff007f -> 800080 */
- 13, /* ff00ff -> ff00ff */
- 3, /* ff7f00 -> 808000 */
- 7, /* ff7f7f -> c0c0c0 */
- 7, /* ff7fff -> c0c0c0 */
- 11, /* ffff00 -> ffff00 */
- 7, /* ffff7f -> c0c0c0 */
- 15 /* ffffff -> ffffff */
-};
-
-#define PIXEL_VALUE(r,g,b) \
- COLOR_mapEGAPixel[EGAmapping[((r)*PRIMARY_LEVELS+(g))*PRIMARY_LEVELS+(b)]]
-
- /* X image for building dithered pixmap */
-static XImage *ditherImage = NULL;
-static char *imageData = NULL;
-
-
-/***********************************************************************
- * DITHER_Init
- *
- * Create the X image used for dithering.
- */
-BOOL DITHER_Init(void)
-{
- XCREATEIMAGE( ditherImage, MATRIX_SIZE, MATRIX_SIZE, screenDepth );
- return (ditherImage != NULL);
-}
-
-
-/***********************************************************************
- * DITHER_DitherColor
- */
-Pixmap DITHER_DitherColor( DC *dc, COLORREF color )
-{
- static COLORREF prevColor = 0xffffffff;
- unsigned int x, y;
- Pixmap pixmap;
-
- if (color != prevColor)
- {
- int r = GetRValue( color ) * DITHER_LEVELS;
- int g = GetGValue( color ) * DITHER_LEVELS;
- int b = GetBValue( color ) * DITHER_LEVELS;
- const int *pmatrix = dither_matrix;
-
- for (y = 0; y < MATRIX_SIZE; y++)
- {
- for (x = 0; x < MATRIX_SIZE; x++)
- {
- int d = *pmatrix++ * 256;
- int dr = ((r + d) / MATRIX_SIZE_2) / 256;
- int dg = ((g + d) / MATRIX_SIZE_2) / 256;
- int db = ((b + d) / MATRIX_SIZE_2) / 256;
- XPutPixel( ditherImage, x, y, PIXEL_VALUE(dr,dg,db) );
- }
- }
- prevColor = color;
- }
-
- pixmap = XCreatePixmap( display, rootWindow,
- MATRIX_SIZE, MATRIX_SIZE, screenDepth );
- XPutImage( display, pixmap, BITMAP_colorGC, ditherImage, 0, 0,
- 0, 0, MATRIX_SIZE, MATRIX_SIZE );
- return pixmap;
-}
diff --git a/objects/font.c b/objects/font.c
index f03962f..36d0ce4 100644
--- a/objects/font.c
+++ b/objects/font.c
@@ -10,8 +10,7 @@
#include <stdlib.h>
#include <string.h>
#include <X11/Xatom.h>
-#include "user.h"
-#include "gdi.h"
+#include "font.h"
#include "metafile.h"
#include "callback.h"
#include "stddebug.h"
@@ -55,11 +54,11 @@
} FontNames[32];
int FontSize;
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Font_Init
- */
-void Font_Init( void )
+/***********************************************************************
+ * FONT_Init
+ */
+BOOL FONT_Init( void )
{
char temp[1024];
LPSTR ptr;
@@ -88,8 +87,10 @@
FontNames[6].window = "roman"; FontNames[6].x11 = "*-times";
FontSize = 7;
}
+ return TRUE;
}
+
/***********************************************************************
* FONT_TranslateName
*
@@ -212,11 +213,13 @@
metrics->tmLastChar = xfont->max_char_or_byte2;
metrics->tmDefaultChar = xfont->default_char;
metrics->tmBreakChar = ' ';
- metrics->tmPitchAndFamily = logfont->lfPitchAndFamily;
metrics->tmCharSet = logfont->lfCharSet;
metrics->tmOverhang = 0;
metrics->tmDigitizedAspectX = 1;
metrics->tmDigitizedAspectY = 1;
+ metrics->tmPitchAndFamily = (logfont->lfPitchAndFamily&0xf0)|TMPF_DEVICE;
+ if (logfont->lfPitchAndFamily & FIXED_PITCH)
+ metrics->tmPitchAndFamily |= TMPF_FIXED_PITCH;
if (!xfont->per_char) average = metrics->tmMaxCharWidth;
else
@@ -313,16 +316,29 @@
if (!stockPtr || !stockPtr->fstruct)
{
- fontStruct = FONT_MatchFont( &font->logfont, dc );
+ if (!(fontStruct = FONT_MatchFont( &font->logfont, dc )))
+ {
+ /* If it is not a stock font, we can simply return 0 */
+ if (!stockPtr) return 0;
+ /* Otherwise we must try to find a substitute */
+ dprintf_font(stddeb,"Loading font 'fixed' for %x\n", hfont );
+ font->logfont.lfPitchAndFamily &= ~VARIABLE_PITCH;
+ font->logfont.lfPitchAndFamily |= FIXED_PITCH;
+ fontStruct = XLoadQueryFont( display, "fixed" );
+ if (!fontStruct)
+ {
+ fprintf( stderr, "No system font could be found. Please check your font path.\n" );
+ exit( 1 );
+ }
+ }
}
else
{
fontStruct = stockPtr->fstruct;
- dprintf_font(stddeb,
- "FONT_SelectObject: Loaded font from cache %x %p\n",
+ dprintf_font(stddeb,
+ "FONT_SelectObject: Loaded font from cache %x %p\n",
hfont, fontStruct );
}
- if (!fontStruct) return 0;
/* Free previous font */
@@ -451,8 +467,8 @@
size->cy = abs((dc->u.x.font.fstruct->ascent+dc->u.x.font.fstruct->descent)
* dc->w.WndExtY / dc->w.VportExtY);
- dprintf_font(stddeb,"GetTextExtentPoint(%d '%s' %d %p): returning %d,%d\n",
- hdc, str, count, size, size->cx, size->cy );
+ dprintf_font(stddeb,"GetTextExtentPoint(%d '%*.*s' %d %p): returning %d,%d\n",
+ hdc, count, count, str, count, size, size->cx, size->cy );
return TRUE;
}
@@ -669,19 +685,19 @@
int nRet;
int j, i = 0;
- dprintf_font(stddeb,"EnumFonts(%04X, %08X='%s', %08X, %08X)\n",
+ dprintf_font(stddeb,"EnumFonts(%04X, %p='%s', %p, %p)\n",
hDC, lpFaceName, lpFaceName, lpEnumFunc, lpData);
if (lpEnumFunc == NULL) return 0;
- hLog = USER_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(LOGFONT) + LF_FACESIZE);
- lpLogFont = (LPLOGFONT) USER_HEAP_ADDR(hLog);
+ hLog = GDI_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(LOGFONT) + LF_FACESIZE);
+ lpLogFont = (LPLOGFONT) GDI_HEAP_ADDR(hLog);
if (lpLogFont == NULL) {
dprintf_font(stddeb,"EnumFonts // can't alloc LOGFONT struct !\n");
return 0;
}
- hMet = USER_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(TEXTMETRIC));
- lptm = (LPTEXTMETRIC) USER_HEAP_ADDR(hMet);
+ hMet = GDI_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(TEXTMETRIC));
+ lptm = (LPTEXTMETRIC) GDI_HEAP_ADDR(hMet);
if (lptm == NULL) {
- USER_HEAP_FREE(hLog);
+ GDI_HEAP_FREE(hLog);
dprintf_font(stddeb, "EnumFonts // can't alloc TEXTMETRIC struct !\n");
return 0;
}
@@ -718,7 +734,7 @@
GetTextMetrics(hDC, lptm);
SelectObject(hDC, hOldFont);
DeleteObject(hFont);
- dprintf_font(stddeb,"EnumFonts // i=%d lpLogFont=%08X lptm=%08X\n", i, lpLogFont, lptm);
+ dprintf_font(stddeb,"EnumFonts // i=%d lpLogFont=%p lptm=%p\n", i, lpLogFont, lptm);
#ifdef WINELIB
nRet = (*lpEnumFunc)(lpLogFont, lptm, 0, lpData);
@@ -731,8 +747,8 @@
break;
}
}
- USER_HEAP_FREE(hMet);
- USER_HEAP_FREE(hLog);
+ GDI_HEAP_FREE(hMet);
+ GDI_HEAP_FREE(hLog);
return 0;
}
@@ -753,19 +769,19 @@
int nRet;
int j, i = 0;
- dprintf_font(stddeb,"EnumFontFamilies(%04X, %08X, %08X, %08X)\n",
+ dprintf_font(stddeb,"EnumFontFamilies(%04X, %p, %p, %p)\n",
hDC, lpszFamily, lpEnumFunc, lpData);
if (lpEnumFunc == NULL) return 0;
- hLog = USER_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(LOGFONT) + LF_FACESIZE);
- lpLogFont = (LPLOGFONT) USER_HEAP_ADDR(hLog);
+ hLog = GDI_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(LOGFONT) + LF_FACESIZE);
+ lpLogFont = (LPLOGFONT) GDI_HEAP_ADDR(hLog);
if (lpLogFont == NULL) {
dprintf_font(stddeb,"EnumFontFamilies // can't alloc LOGFONT struct !\n");
return 0;
}
- hMet = USER_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(TEXTMETRIC));
- lptm = (LPTEXTMETRIC) USER_HEAP_ADDR(hMet);
+ hMet = GDI_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(TEXTMETRIC));
+ lptm = (LPTEXTMETRIC) GDI_HEAP_ADDR(hMet);
if (lptm == NULL) {
- USER_HEAP_FREE(hLog);
+ GDI_HEAP_FREE(hLog);
dprintf_font(stddeb,"EnumFontFamilies // can't alloc TEXTMETRIC struct !\n");
return 0;
}
@@ -803,7 +819,7 @@
GetTextMetrics(hDC, lptm);
SelectObject(hDC, hOldFont);
DeleteObject(hFont);
- dprintf_font(stddeb, "EnumFontFamilies // i=%d lpLogFont=%08X lptm=%08X\n", i, lpLogFont, lptm);
+ dprintf_font(stddeb, "EnumFontFamilies // i=%d lpLogFont=%p lptm=%p\n", i, lpLogFont, lptm);
#ifdef WINELIB
nRet = (*lpEnumFunc)(lpLogFont, lptm, 0, lpData);
@@ -816,8 +832,8 @@
break;
}
}
- USER_HEAP_FREE(hMet);
- USER_HEAP_FREE(hLog);
+ GDI_HEAP_FREE(hMet);
+ GDI_HEAP_FREE(hLog);
return 0;
}
diff --git a/objects/gdiobj.c b/objects/gdiobj.c
index c418ec1..3d591d6 100644
--- a/objects/gdiobj.c
+++ b/objects/gdiobj.c
@@ -8,13 +8,16 @@
#include <stdlib.h>
#include <stdio.h>
-#include "user.h"
+#include "selectors.h"
#include "gdi.h"
#include "color.h"
-#include "prototypes.h"
-#include "stddebug.h"
#include "bitmap.h"
+#include "brush.h"
#include "font.h"
+#include "palette.h"
+#include "pen.h"
+#include "region.h"
+#include "stddebug.h"
/* #define DEBUG_GDI */
#include "debug.h"
@@ -27,6 +30,7 @@
#define MAX_OBJ 1024
HANDLE *lpPenBrushList = NULL;
+
/***********************************************************************
* GDI stock objects
*/
@@ -181,9 +185,13 @@
if (!REGION_Init()) return FALSE;
- /* Initialise dithering */
+ /* Initialise brush dithering */
- if (!DITHER_Init()) return FALSE;
+ if (!BRUSH_Init()) return FALSE;
+
+ /* Initialise fonts */
+
+ if (!FONT_Init()) return FALSE;
return TRUE;
}
@@ -312,11 +320,11 @@
switch(header->wMagic)
{
case PEN_MAGIC: return GDI_FreeObject( obj );
- case BRUSH_MAGIC: return BRUSH_DeleteObject( obj, header );
+ case BRUSH_MAGIC: return BRUSH_DeleteObject( obj, (BRUSHOBJ*)header );
case FONT_MAGIC: return GDI_FreeObject( obj );
case PALETTE_MAGIC: return GDI_FreeObject( obj );
- case BITMAP_MAGIC: return BMP_DeleteObject( obj, header );
- case REGION_MAGIC: return REGION_DeleteObject( obj, header );
+ case BITMAP_MAGIC: return BITMAP_DeleteObject( obj, (BITMAPOBJ*)header);
+ case REGION_MAGIC: return REGION_DeleteObject( obj, (RGNOBJ*)header );
}
return FALSE;
}
@@ -359,7 +367,7 @@
case BRUSH_MAGIC:
return BRUSH_GetObject( (BRUSHOBJ *)ptr, count, buffer );
case BITMAP_MAGIC:
- return BMP_GetObject( (BITMAPOBJ *)ptr, count, buffer );
+ return BITMAP_GetObject( (BITMAPOBJ *)ptr, count, buffer );
case FONT_MAGIC:
return FONT_GetObject( (FONTOBJ *)ptr, count, buffer );
case PALETTE_MAGIC:
@@ -440,10 +448,10 @@
switch (nObjType) {
case OBJ_PEN:
wMagic = PEN_MAGIC;
- dprintf_gdi(stddeb,"EnumObjects(%04X, OBJ_PEN, %08X, %08X);\n",
+ dprintf_gdi(stddeb,"EnumObjects(%04X, OBJ_PEN, %p, %p);\n",
hDC, lpEnumFunc, lpData);
- hLog = USER_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(LOGPEN));
- lpLog = (LPSTR) USER_HEAP_ADDR(hLog);
+ hLog = GDI_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(LOGPEN));
+ lpLog = (LPSTR) GDI_HEAP_ADDR(hLog);
if (lpLog == NULL) {
fprintf(stderr,"EnumObjects // Unable to alloc LOGPEN struct !\n");
return 0;
@@ -451,17 +459,17 @@
break;
case OBJ_BRUSH:
wMagic = BRUSH_MAGIC;
- dprintf_gdi(stddeb,"EnumObjects(%04X, OBJ_BRUSH, %08X, %08X);\n",
+ dprintf_gdi(stddeb,"EnumObjects(%04X, OBJ_BRUSH, %p, %p);\n",
hDC, lpEnumFunc, lpData);
- hLog = USER_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(LOGBRUSH));
- lpLog = (LPSTR) USER_HEAP_ADDR(hLog);
+ hLog = GDI_HEAP_ALLOC(GMEM_MOVEABLE, sizeof(LOGBRUSH));
+ lpLog = (LPSTR) GDI_HEAP_ADDR(hLog);
if (lpLog == NULL) {
fprintf(stderr,"EnumObjects // Unable to alloc LOGBRUSH struct !\n");
return 0;
}
break;
default:
- fprintf(stderr,"EnumObjects(%04X, %04X, %08X, %08X); // Unknown OBJ type !\n",
+ fprintf(stderr,"EnumObjects(%04X, %04X, %p, %p); // Unknown OBJ type !\n",
hDC, nObjType, lpEnumFunc, lpData);
return 0;
}
@@ -469,18 +477,18 @@
for (i = 0; i < NB_STOCK_OBJECTS; i++) {
header = StockObjects[i];
if (header->wMagic == wMagic) {
- PEN_GetObject( (PENOBJ *)header, sizeof(LOGPEN), (LPLOGPEN)lpLog);
- BRUSH_GetObject( (BRUSHOBJ *)header, sizeof(LOGBRUSH), (LPLOGBRUSH)lpLog);
- dprintf_gdi(stddeb,"EnumObjects // StockObj lpLog=%08X lpData=%08X\n", lpLog, lpData);
+ PEN_GetObject( (PENOBJ *)header, sizeof(LOGPEN), lpLog);
+ BRUSH_GetObject( (BRUSHOBJ *)header, sizeof(LOGBRUSH),lpLog);
+ dprintf_gdi(stddeb,"EnumObjects // StockObj lpLog=%p lpData=%p\n", lpLog, lpData);
if (header->wMagic == BRUSH_MAGIC) {
dprintf_gdi(stddeb,"EnumObjects // StockBrush lbStyle=%04X\n", ((LPLOGBRUSH)lpLog)->lbStyle);
- dprintf_gdi(stddeb,"EnumObjects // StockBrush lbColor=%08X\n", ((LPLOGBRUSH)lpLog)->lbColor);
+ dprintf_gdi(stddeb,"EnumObjects // StockBrush lbColor=%08lX\n", ((LPLOGBRUSH)lpLog)->lbColor);
dprintf_gdi(stddeb,"EnumObjects // StockBrush lbHatch=%04X\n", ((LPLOGBRUSH)lpLog)->lbHatch);
}
if (header->wMagic == PEN_MAGIC) {
dprintf_gdi(stddeb,"EnumObjects // StockPen lopnStyle=%04X\n", ((LPLOGPEN)lpLog)->lopnStyle);
- dprintf_gdi(stddeb,"EnumObjects // StockPen lopnWidth=%08X\n", ((LPLOGPEN)lpLog)->lopnWidth);
- dprintf_gdi(stddeb,"EnumObjects // StockPen lopnColor=%08X\n", ((LPLOGPEN)lpLog)->lopnColor);
+ dprintf_gdi(stddeb,"EnumObjects // StockPen lopnWidth=%d\n", ((LPLOGPEN)lpLog)->lopnWidth.x);
+ dprintf_gdi(stddeb,"EnumObjects // StockPen lopnColor=%08lX\n", ((LPLOGPEN)lpLog)->lopnColor);
}
nRet = 1;
/*
@@ -492,30 +500,30 @@
*/
dprintf_gdi(stddeb,"EnumObjects // after CallBack16 !\n");
if (nRet == 0) {
- USER_HEAP_FREE(hLog);
+ GDI_HEAP_FREE(hLog);
dprintf_gdi(stddeb,"EnumObjects // EnumEnd requested by application !\n");
return 0;
}
}
}
if (lpPenBrushList == NULL) return 0;
- dprintf_gdi(stddeb,"EnumObjects // Now DC owned objects %08X !\n", header);
+ dprintf_gdi(stddeb,"EnumObjects // Now DC owned objects %p !\n", header);
for (lphObj = lpPenBrushList; *lphObj != 0; ) {
dprintf_gdi(stddeb,"EnumObjects // *lphObj=%04X\n", *lphObj);
header = (GDIOBJHDR *) GDI_HEAP_ADDR(*lphObj++);
if (header->wMagic == wMagic) {
- dprintf_gdi(stddeb,"EnumObjects // DC_Obj lpLog=%08X lpData=%08X\n", lpLog, lpData);
+ dprintf_gdi(stddeb,"EnumObjects // DC_Obj lpLog=%p lpData=%p\n", lpLog, lpData);
if (header->wMagic == BRUSH_MAGIC) {
- BRUSH_GetObject( (BRUSHOBJ *)header, sizeof(LOGBRUSH), (LPLOGBRUSH)lpLog);
+ BRUSH_GetObject( (BRUSHOBJ *)header, sizeof(LOGBRUSH), lpLog);
dprintf_gdi(stddeb,"EnumObjects // DC_Brush lbStyle=%04X\n", ((LPLOGBRUSH)lpLog)->lbStyle);
- dprintf_gdi(stddeb,"EnumObjects // DC_Brush lbColor=%08X\n", ((LPLOGBRUSH)lpLog)->lbColor);
+ dprintf_gdi(stddeb,"EnumObjects // DC_Brush lbColor=%08lX\n", ((LPLOGBRUSH)lpLog)->lbColor);
dprintf_gdi(stddeb,"EnumObjects // DC_Brush lbHatch=%04X\n", ((LPLOGBRUSH)lpLog)->lbHatch);
}
if (header->wMagic == PEN_MAGIC) {
- PEN_GetObject( (PENOBJ *)header, sizeof(LOGPEN), (LPLOGPEN)lpLog);
+ PEN_GetObject( (PENOBJ *)header, sizeof(LOGPEN), lpLog);
dprintf_gdi(stddeb,"EnumObjects // DC_Pen lopnStyle=%04X\n", ((LPLOGPEN)lpLog)->lopnStyle);
- dprintf_gdi(stddeb,"EnumObjects // DC_Pen lopnWidth=%08X\n", ((LPLOGPEN)lpLog)->lopnWidth);
- dprintf_gdi(stddeb,"EnumObjects // DC_Pen lopnColor=%08X\n", ((LPLOGPEN)lpLog)->lopnColor);
+ dprintf_gdi(stddeb,"EnumObjects // DC_Pen lopnWidth=%d\n", ((LPLOGPEN)lpLog)->lopnWidth.x);
+ dprintf_gdi(stddeb,"EnumObjects // DC_Pen lopnColor=%08lX\n", ((LPLOGPEN)lpLog)->lopnColor);
}
/*
#ifdef WINELIB
@@ -527,13 +535,13 @@
nRet = 1;
dprintf_gdi(stddeb,"EnumObjects // after CallBack16 !\n");
if (nRet == 0) {
- USER_HEAP_FREE(hLog);
+ GDI_HEAP_FREE(hLog);
dprintf_gdi(stddeb,"EnumObjects // EnumEnd requested by application !\n");
return 0;
}
}
}
- USER_HEAP_FREE(hLog);
+ GDI_HEAP_FREE(hLog);
dprintf_gdi(stddeb,"EnumObjects // End of enumeration !\n");
return 0;
}
diff --git a/objects/metafile.c b/objects/metafile.c
index debdf23..1ad135e 100644
--- a/objects/metafile.c
+++ b/objects/metafile.c
@@ -7,10 +7,9 @@
*/
#include <string.h>
-#include "windows.h"
#include "gdi.h"
+#include "bitmap.h"
#include "metafile.h"
-#include "prototypes.h"
#include "stddebug.h"
/* #define DEBUG_METAFILE */
#include "debug.h"
@@ -25,8 +24,6 @@
*/
HMETAFILE GetMetaFile(LPSTR lpFilename)
{
-
- DC *dc;
HMETAFILE hmf;
METAFILE *mf;
METAHEADER *mh;
@@ -143,7 +140,6 @@
METAFILE *mf;
METAHEADER *mh;
HMETAFILE hmf;
- char buffer[15];
/* METARECORD *mr = (METARECORD *)&buffer;*/
dprintf_metafile(stddeb,"CloseMetaFile\n");
@@ -804,6 +800,8 @@
*(mr->rdParam + 1) = LOWORD(logbrush->lbColor);
memcpy(mr->rdParam + 2, info, biSize + bmSize);
break;
+ default:
+ return FALSE;
}
if (!MF_WriteRecord(dc->w.hMetaFile, mr, len))
{
@@ -961,6 +959,7 @@
short height, HDC hdcSrc, short xSrc, short ySrc, DWORD rop)
{
fprintf(stdnimp,"MF_BitBlt: not implemented yet\n");
+ return FALSE;
}
@@ -972,4 +971,5 @@
short widthSrc, short heightSrc, DWORD rop)
{
fprintf(stdnimp,"MF_StretchBlt: not implemented yet\n");
+ return FALSE;
}
diff --git a/objects/oembitmap.c b/objects/oembitmap.c
index 883d092..9598653 100644
--- a/objects/oembitmap.c
+++ b/objects/oembitmap.c
@@ -246,7 +246,7 @@
{
fprintf( stderr, "Error %d creating pixmap %d\n",
err, OBM_FIRST+id );
- pixmap = 0;
+ pixmap = width = height = 0;
}
else
{
diff --git a/objects/palette.c b/objects/palette.c
index 5ae0188..050f7a2 100644
--- a/objects/palette.c
+++ b/objects/palette.c
@@ -15,8 +15,8 @@
#endif
#include <X11/Xlib.h>
-#include "gdi.h"
#include "color.h"
+#include "palette.h"
#include "stddebug.h"
/* #define DEBUG_PALETTE */
#include "debug.h"
diff --git a/objects/pen.c b/objects/pen.c
index 2293182..0896fda 100644
--- a/objects/pen.c
+++ b/objects/pen.c
@@ -2,10 +2,9 @@
* GDI pen objects
*
* Copyright 1993 Alexandre Julliard
- *
-static char Copyright[] = "Copyright Alexandre Julliard, 1993";
-*/
-#include "gdi.h"
+ */
+
+#include "pen.h"
#include "metafile.h"
#include "stddebug.h"
#include "color.h"
diff --git a/objects/region.c b/objects/region.c
index f22183c..c83a2c1 100644
--- a/objects/region.c
+++ b/objects/region.c
@@ -8,7 +8,7 @@
#include <stdlib.h>
#include <stdio.h>
-#include "gdi.h"
+#include "region.h"
#include "stddebug.h"
/* #define DEBUG_REGION */
#include "debug.h"
@@ -341,6 +341,7 @@
}
rgnObj = (RGNOBJ *) GDI_HEAP_ADDR( hrgn );
rgnObj->region.type = SIMPLEREGION;
+ rgnObj->region.xrgn = 0;
rgnObj->region.pixmap = 0;
/* Create X region */
@@ -354,7 +355,13 @@
}
xrgn = XPolygonRegion( xpoints, *count,
(mode == WINDING) ? WindingRule : EvenOddRule );
- if (!xrgn) break;
+ if (!xrgn)
+ {
+ if (rgnObj->region.xrgn) XDestroyRegion( rgnObj->region.xrgn );
+ free( xpoints );
+ GDI_FreeObject( hrgn );
+ return 0;
+ }
if (i > 0)
{
Region tmprgn = XCreateRegion();
@@ -367,11 +374,6 @@
}
free( xpoints );
- if (!xrgn)
- {
- GDI_FreeObject( hrgn );
- return 0;
- }
XClipBox( rgnObj->region.xrgn, &rect );
SetRect( &rgnObj->region.box, rect.x, rect.y,
rect.x + rect.width, rect.y + rect.height);
diff --git a/objects/text.c b/objects/text.c
index c28f3b0..186b729 100644
--- a/objects/text.c
+++ b/objects/text.c
@@ -52,7 +52,7 @@
int numspaces;
SIZE size;
int lasttab = 0;
- int wb_i = 0, wb_j = 0, wb_count;
+ int wb_i = 0, wb_j = 0, wb_count = 0;
while (*count)
{
@@ -301,8 +301,8 @@
if (!DC_SetupGCForText( dc )) return TRUE;
font = dc->u.x.font.fstruct;
- dprintf_text(stddeb,"ExtTextOut: %d,%d '%s', %d flags=%d rect=%d,%d,%d,%d\n",
- x, y, str, count, flags,
+ dprintf_text(stddeb,"ExtTextOut: %d,%d '%*.*s', %d flags=%d rect=%d,%d,%d,%d\n",
+ x, y, count, count, str, count, flags,
lprect->left, lprect->top, lprect->right, lprect->bottom );
/* Setup coordinates */
@@ -424,7 +424,7 @@
continue; /* First iteration -> no delta */
}
pitem->delta = dc->w.charExtra;
- if (str[i] == dc->u.x.font.metrics.tmBreakChar)
+ if (str[i] == (char)dc->u.x.font.metrics.tmBreakChar)
pitem->delta += dc->w.breakExtra;
if (lpDx)
{
@@ -565,8 +565,8 @@
LONG TabbedTextOut( HDC hdc, short x, short y, LPSTR lpstr, short count,
short cTabStops, LPINT lpTabPos, short nTabOrg )
{
- dprintf_text( stddeb, "TabbedTextOut: %x %d,%d '%s' %d\n",
- hdc, x, y, lpstr, count );
+ dprintf_text( stddeb, "TabbedTextOut: %x %d,%d '%*.*s' %d\n",
+ hdc, x, y, count, count, lpstr, count );
return TEXT_TabbedTextOut( hdc, x, y, lpstr, count, cTabStops,
lpTabPos, nTabOrg, TRUE );
}
@@ -578,8 +578,8 @@
DWORD GetTabbedTextExtent( HDC hdc, LPSTR lpstr, int count,
int cTabStops, LPINT lpTabPos )
{
- dprintf_text( stddeb, "GetTabbedTextExtent: %x '%s' %d\n",
- hdc, lpstr, count );
+ dprintf_text( stddeb, "GetTabbedTextExtent: %x '%*.*s' %d\n",
+ hdc, count, count, lpstr, count );
return TEXT_TabbedTextOut( hdc, 0, 0, lpstr, count, cTabStops,
lpTabPos, 0, FALSE );
}
diff --git a/rc/sysres.h b/rc/sysres.h
deleted file mode 100644
index 72c0af8..0000000
--- a/rc/sysres.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* sysres.h
- * This File is automatically generated. Do not edit
- */
-#include "resource.h"
-extern unsigned char sysres_MENU_SYSMENU[];
-extern unsigned char sysres_DIALOG_2[];
-extern unsigned char sysres_DIALOG_STOP_MSGBOX[];
-extern unsigned char sysres_DIALOG_QUESTION_MSGBOX[];
-extern unsigned char sysres_DIALOG_EXCLAMATION_MSGBOX[];
-extern unsigned char sysres_DIALOG_SHELL_ABOUT_MSGBOX[];
-extern unsigned char sysres_DIALOG_3[];
-extern unsigned char sysres_DIALOG_4[];
-extern unsigned char sysres_DIALOG_11[];
-extern unsigned char sysres_DIALOG_12[];
-extern unsigned char sysres_DIALOG_5[];
-extern unsigned char sysres_DIALOG_6[];
-extern unsigned char sysres_DIALOG_7[];
-extern unsigned char sysres_DIALOG_8[];
-extern unsigned char sysres_DIALOG_9[];
-extern unsigned char sysres_DIALOG_10[];
-extern struct ResourceTable sysresTable[];
diff --git a/rc/sysresbm.h b/rc/sysresbm.h
deleted file mode 100644
index 98dc1e2..0000000
--- a/rc/sysresbm.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* sysresbm.h
- * This File is automatically generated. Do not edit
- */
-#include "resource.h"
-extern unsigned char sysresbm_CURSOR_32514[];
-extern unsigned char sysresbm_CURSOR_32648[];
-extern unsigned char sysresbm_ICON_32516[];
-extern unsigned char sysresbm_ICON_32515[];
-extern unsigned char sysresbm_ICON_32513[];
-extern unsigned char sysresbm_ICON_32514[];
-extern unsigned char sysresbm_ICON_SYSIDI_STOPICON[];
-extern unsigned char sysresbm_ICON_32512[];
-extern unsigned char sysresbm_ICON_SYSIDI_HANDHAND[];
-extern unsigned char sysresbm_ICON_WINEICON[];
-extern unsigned char sysresbm_ICON_PORTRAIT[];
-extern unsigned char sysresbm_ICON_LANDSCAP[];
-extern unsigned char sysresbm_BITMAP_32754[];
-extern unsigned char sysresbm_BITMAP_32753[];
-extern unsigned char sysresbm_BITMAP_32752[];
-extern unsigned char sysresbm_BITMAP_32751[];
-extern unsigned char sysresbm_BITMAP_32750[];
-extern unsigned char sysresbm_BITMAP_32749[];
-extern unsigned char sysresbm_BITMAP_32748[];
-extern unsigned char sysresbm_BITMAP_32747[];
-extern unsigned char sysresbm_BITMAP_32746[];
-extern unsigned char sysresbm_BITMAP_32745[];
-extern unsigned char sysresbm_BITMAP_32744[];
-extern unsigned char sysresbm_BITMAP_32743[];
-extern unsigned char sysresbm_BITMAP_32742[];
-extern unsigned char sysresbm_BITMAP_32741[];
-extern unsigned char sysresbm_BITMAP_32740[];
-extern unsigned char sysresbm_BITMAP_32739[];
-extern unsigned char sysresbm_BITMAP_32738[];
-extern unsigned char sysresbm_BITMAP_32737[];
-extern unsigned char sysresbm_BITMAP_32736[];
-extern unsigned char sysresbm_BITMAP_32735[];
-extern unsigned char sysresbm_BITMAP_32734[];
-extern unsigned char sysresbm_BITMAP_32767[];
-extern unsigned char sysresbm_BITMAP_32766[];
-extern unsigned char sysresbm_BITMAP_32765[];
-extern unsigned char sysresbm_BITMAP_32764[];
-extern unsigned char sysresbm_BITMAP_32763[];
-extern unsigned char sysresbm_BITMAP_32762[];
-extern unsigned char sysresbm_BITMAP_32761[];
-extern unsigned char sysresbm_BITMAP_32760[];
-extern unsigned char sysresbm_BITMAP_32759[];
-extern unsigned char sysresbm_BITMAP_32758[];
-extern unsigned char sysresbm_BITMAP_32757[];
-extern unsigned char sysresbm_BITMAP_32756[];
-extern unsigned char sysresbm_BITMAP_32755[];
-extern unsigned char sysresbm_BITMAP_32520[];
-extern unsigned char sysresbm_BITMAP_32521[];
-extern unsigned char sysresbm_BITMAP_32522[];
-extern unsigned char sysresbm_BITMAP_32523[];
-extern unsigned char sysresbm_BITMAP_32524[];
-extern unsigned char sysresbm_BITMAP_SMILE[];
-extern unsigned char sysresbm_BITMAP_WINELOGO[];
-extern unsigned char sysresbm_BITMAP_OBMCLOSE[];
-extern struct ResourceTable sysresbmTable[];
diff --git a/tools/build.c b/tools/build.c
index 958995d..9f87253 100644
--- a/tools/build.c
+++ b/tools/build.c
@@ -1,5 +1,4 @@
-static char RCSId[] = "$Id: build.c,v 1.3 1993/07/04 04:04:21 root Exp root $";
-static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
+/* static char Copyright[] = "Copyright Robert J. Amstadt, 1993"; */
#include <stdio.h>
#include <stdlib.h>
@@ -679,8 +678,6 @@
ORDVARDEF *vdp;
int i;
- fprintf(fp, PREFIX "%s_Ordinal_%d:\n", UpperDLLName, i);
-
vdp = odp->additional_data;
for (i = 0; i < vdp->n_values; i++)
{
@@ -697,7 +694,7 @@
fprintf(fp, "\n");
}
-main(int argc, char **argv)
+int main(int argc, char **argv)
{
ORDDEF *odp;
ORDFUNCDEF *fdp;
@@ -796,14 +793,17 @@
break;
case VARTYPE_BYTE:
+ fprintf(fp, PREFIX "%s_Ordinal_%d:\n", UpperDLLName, i);
OutputVariableCode(fp, ".byte", odp);
break;
case VARTYPE_WORD:
+ fprintf(fp, PREFIX "%s_Ordinal_%d:\n", UpperDLLName, i);
OutputVariableCode(fp, ".word", odp);
break;
case VARTYPE_LONG:
+ fprintf(fp, PREFIX "%s_Ordinal_%d:\n", UpperDLLName, i);
OutputVariableCode(fp, ".long", odp);
break;
diff --git a/windows/Imakefile b/windows/Imakefile
index e0306dc..6d5ca0d 100644
--- a/windows/Imakefile
+++ b/windows/Imakefile
@@ -14,7 +14,6 @@
focus.c \
graphics.c \
hook.c \
- icon.c \
keyboard.c \
mapping.c \
mdi.c \
diff --git a/windows/cursor.c b/windows/cursor.c
index 4d3628a..5ba75a7 100644
--- a/windows/cursor.c
+++ b/windows/cursor.c
@@ -12,11 +12,11 @@
#include <unistd.h>
#include <X11/cursorfont.h>
#include <X11/Xlib.h>
-#include "prototypes.h"
#include "windows.h"
#include "win.h"
#include "gdi.h"
#include "library.h"
+#include "neexe.h"
#include "wine.h"
#include "cursor.h"
#include "stddebug.h"
@@ -69,11 +69,10 @@
for (i = 0; i < NB_SYS_CURSORS; i++)
if (system_cursor[i].name == cursor_name)
{
- hCursor = system_cursor[i].cursor;
- break;
+ if (system_cursor[i].cursor) return system_cursor[i].cursor;
+ else break;
}
if (i == NB_SYS_CURSORS) return 0;
- if (hCursor) return hCursor;
}
hCursor = GlobalAlloc(GMEM_MOVEABLE, sizeof(CURSORALLOC) + 1024L);
if (hCursor == (HCURSOR)NULL) return 0;
diff --git a/windows/defwnd.c b/windows/defwnd.c
index b02a371..a8c5319 100644
--- a/windows/defwnd.c
+++ b/windows/defwnd.c
@@ -100,7 +100,7 @@
}
case WM_SETREDRAW:
- if (wParam)
+ if (!wParam)
{
ValidateRect( hwnd, NULL );
wndPtr->flags |= WIN_NO_REDRAW;
diff --git a/windows/dialog.c b/windows/dialog.c
index bd05034..ead08ba 100644
--- a/windows/dialog.c
+++ b/windows/dialog.c
@@ -35,12 +35,18 @@
/* Calculate the dialog base units */
- if (!(hdc = GetDC(GetDesktopWindow()))) return FALSE;
+ if (!(hdc = GetDC( 0 ))) return FALSE;
GetTextMetrics( hdc, &tm );
ReleaseDC( 0, hdc );
xBaseUnit = tm.tmAveCharWidth;
yBaseUnit = tm.tmHeight;
- dprintf_dialog(stddeb, "DIALOG_Init: base units = %d,%d\n", xBaseUnit, yBaseUnit );
+
+ /* Dialog units are based on a proportional system font */
+ /* so we adjust them a bit for a fixed font. */
+ if (tm.tmPitchAndFamily & TMPF_FIXED_PITCH) xBaseUnit = xBaseUnit * 5 / 4;
+
+ dprintf_dialog( stddeb, "DIALOG_Init: base units = %d,%d\n",
+ xBaseUnit, yBaseUnit );
return TRUE;
}
@@ -152,7 +158,7 @@
{
dprintf_dialog(stddeb, "DIALOG %d, %d, %d, %d\n", result->header->x, result->header->y,
result->header->cx, result->header->cy );
- dprintf_dialog(stddeb, " STYLE %08x\n", result->header->style );
+ dprintf_dialog(stddeb, " STYLE %08lx\n", result->header->style );
dprintf_dialog(stddeb, " CAPTION '%s'\n", result->caption );
dprintf_dialog(stddeb, " CLASS '%s'\n", result->className );
if (result->menuName[0] == 0xff)
@@ -271,6 +277,8 @@
ReleaseDC( 0, hdc );
xUnit = tm.tmAveCharWidth;
yUnit = tm.tmHeight;
+ if (tm.tmPitchAndFamily & TMPF_FIXED_PITCH)
+ xBaseUnit = xBaseUnit * 5 / 4; /* See DIALOG_Init() */
}
}
@@ -464,16 +472,6 @@
return DialogBoxIndirectParam( hInst, dlgTemplate, owner, dlgProc, 0 );
}
-/***********************************************************************
- * DialogBoxIndirectPtr
- * like DialogBoxIndirect, but expects pointer to template
- */
-int DialogBoxIndirectPtr( HINSTANCE hInst, LPCSTR dlgTemplate,
- HWND owner, WNDPROC dlgProc)
-{
- return DialogBoxIndirectParamPtr(hInst, dlgTemplate, owner, dlgProc, 0);
-}
-
/***********************************************************************
* DialogBoxIndirectParam (USER.240)
@@ -491,6 +489,7 @@
return -1;
}
+
/***********************************************************************
* DialogBoxIndirectParamPtr
* like DialogBoxIndirectParam, but expects pointer to template
@@ -504,6 +503,15 @@
return -1;
}
+/***********************************************************************
+ * DialogBoxIndirectPtr
+ * like DialogBoxIndirect, but expects pointer to template
+ */
+int DialogBoxIndirectPtr( HINSTANCE hInst, LPCSTR dlgTemplate,
+ HWND owner, WNDPROC dlgProc)
+{
+ return DialogBoxIndirectParamPtr(hInst, dlgTemplate, owner, dlgProc, 0);
+}
/***********************************************************************
* EndDialog (USER.88)
@@ -530,16 +538,16 @@
if ((hwndDlg != msg->hwnd) && !IsChild( hwndDlg, msg->hwnd )) return FALSE;
/* Only the key messages get special processing */
- if ((msg->message == WM_KEYDOWN) ||
- (msg->message == WM_SYSCHAR) ||
- (msg->message == WM_CHAR))
+ if ((msg->message != WM_KEYDOWN) &&
+ (msg->message != WM_SYSCHAR) &&
+ (msg->message != WM_CHAR))
+ return FALSE;
+
+ dlgCode = SendMessage( msg->hwnd, WM_GETDLGCODE, 0, 0 );
+ if (dlgCode & DLGC_WANTMESSAGE)
{
- dlgCode = SendMessage( msg->hwnd, WM_GETDLGCODE, 0, 0 );
- if (dlgCode & DLGC_WANTMESSAGE)
- {
- DispatchMessage( msg );
- return TRUE;
- }
+ DispatchMessage( msg );
+ return TRUE;
}
switch(msg->message)
diff --git a/windows/graphics.c b/windows/graphics.c
index 4213282..cd8013b 100644
--- a/windows/graphics.c
+++ b/windows/graphics.c
@@ -4,8 +4,6 @@
* Copyright 1993, 1994 Alexandre Julliard
*/
-static char Copyright[] = "Copyright Alexandre Julliard, 1993, 1994";
-
#include <math.h>
#include <stdlib.h>
#include <X11/Xlib.h>
@@ -15,7 +13,7 @@
#define PI M_PI
#endif
#include "dc.h"
-#include "gdi.h"
+#include "bitmap.h"
#include "metafile.h"
#include "syscolor.h"
#include "stddebug.h"
@@ -250,6 +248,16 @@
if (bottom < top)
swap_int(&bottom, &top);
+ if ((dc->u.x.pen.style == PS_INSIDEFRAME) &&
+ (dc->u.x.pen.width < right-left-1) &&
+ (dc->u.x.pen.width < bottom-top-1))
+ {
+ left += dc->u.x.pen.width / 2;
+ right -= (dc->u.x.pen.width + 1) / 2;
+ top += dc->u.x.pen.width / 2;
+ bottom -= (dc->u.x.pen.width + 1) / 2;
+ }
+
if (DC_SetupGCForBrush( dc ))
XFillArc( display, dc->u.x.drawable, dc->u.x.gc,
dc->w.DCOrgX + left, dc->w.DCOrgY + top,
@@ -286,7 +294,8 @@
if (bottom < top)
swap_int(&bottom, &top);
- if ((left == right) || (top == bottom)) {
+ if ((left == right) || (top == bottom))
+ {
if (DC_SetupGCForPen( dc ))
XDrawLine(display, dc->u.x.drawable, dc->u.x.gc,
dc->w.DCOrgX + left,
@@ -296,6 +305,16 @@
return TRUE;
}
+ if ((dc->u.x.pen.style == PS_INSIDEFRAME) &&
+ (dc->u.x.pen.width < right-left) &&
+ (dc->u.x.pen.width < bottom-top))
+ {
+ left += dc->u.x.pen.width / 2;
+ right -= (dc->u.x.pen.width + 1) / 2;
+ top += dc->u.x.pen.width / 2;
+ bottom -= (dc->u.x.pen.width + 1) / 2;
+ }
+
if (DC_SetupGCForBrush( dc ))
XFillRectangle( display, dc->u.x.drawable, dc->u.x.gc,
dc->w.DCOrgX + left, dc->w.DCOrgY + top,
@@ -330,7 +349,8 @@
y1 = YLPTODP(dc, top);
x2 = XLPTODP(dc, right - ell_width);
y2 = YLPTODP(dc, bottom - ell_height);
- if (DC_SetupGCForBrush(dc)) {
+ if (DC_SetupGCForBrush( dc ))
+ {
XFillArc(display, dc->u.x.drawable, dc->u.x.gc,
dc->w.DCOrgX + x1, dc->w.DCOrgY + y1,
ell_width, ell_height, 90 * 64, 90 * 64);
@@ -428,7 +448,8 @@
right = XLPTODP( dc, rect->right );
bottom = YLPTODP( dc, rect->bottom );
- if (DC_SetupGCForBrush( dc )) {
+ if (DC_SetupGCForBrush( dc ))
+ {
PatBlt( hdc, rect->left, rect->top, 1,
rect->bottom - rect->top, PATCOPY );
PatBlt( hdc, rect->right - 1, rect->top, 1,
@@ -498,19 +519,6 @@
x = dc->w.DCOrgX + XLPTODP( dc, x );
y = dc->w.DCOrgY + YLPTODP( dc, y );
-#if 0
- if ((x < 0) || (y < 0)) return 0;
-
- if (!(dc->w.flags & DC_MEMORY))
- {
- XWindowAttributes win_attr;
-
- if (!XGetWindowAttributes( display, dc->u.x.drawable, &win_attr ))
- return 0;
- if (win_attr.map_state != IsViewable) return 0;
- if ((x >= win_attr.width) || (y >= win_attr.height)) return 0;
- }
-#endif
image = XGetImage( display, dc->u.x.drawable, x, y,
1, 1, AllPlanes, ZPixmap );
pixel = XGetPixel( image, 0, 0 );
@@ -534,6 +542,8 @@
DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC );
if (!dc) return FALSE;
+ /* FIXME: the region is supposed to be in logical coordinates */
+
/* Modify visible region */
if (!(prevVisRgn = SaveVisRgn( hdc ))) return FALSE;
@@ -627,7 +637,7 @@
* Faster than CreateCompatibleDC() + SelectBitmap() + BitBlt() + DeleteDC().
*/
BOOL GRAPH_DrawBitmap( HDC hdc, HBITMAP hbitmap, int xdest, int ydest,
- int xsrc, int ysrc, int width, int height, int rop )
+ int xsrc, int ysrc, int width, int height )
{
XGCValues val;
BITMAPOBJ *bmp;
@@ -636,7 +646,7 @@
if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return FALSE;
if (!(bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC )))
return FALSE;
- val.function = DC_XROPfunction[(rop >> 16) & 0x0f];
+ val.function = GXcopy;
val.foreground = dc->w.textPixel;
val.background = dc->w.backgroundPixel;
XChangeGC(display, dc->u.x.gc, GCFunction|GCForeground|GCBackground, &val);
@@ -777,7 +787,7 @@
/* MF_MetaPoly(dc, META_POLYGON, pt, count); */
return TRUE;
}
- /* The points should be converted to device coords before */
+ /* FIXME: The points should be converted to device coords before */
/* creating the region. But as CreatePolyPolygonRgn is not */
/* really correct either, it doesn't matter much... */
/* At least the outline will be correct :-) */
diff --git a/windows/hook.c b/windows/hook.c
index 20184bc..0f15595 100644
--- a/windows/hook.c
+++ b/windows/hook.c
@@ -4,8 +4,6 @@
* Copyright 1994 Alexandre Julliard
*/
-static char Copyright[] = "Copyright Alexandre Julliard, 1994";
-
/* Warning!
* HHOOK is not a real handle, but a 32-bit pointer to a HOOKDATA structure.
* This is for compatibility with Windows 3.0 where HHOOK was a HOOKPROC.
diff --git a/windows/icon.c b/windows/icon.c
deleted file mode 100644
index 8b13789..0000000
--- a/windows/icon.c
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/windows/mapping.c b/windows/mapping.c
index b3f96d1..93a6f37 100644
--- a/windows/mapping.c
+++ b/windows/mapping.c
@@ -4,8 +4,6 @@
* Copyright 1993 Alexandre Julliard
*/
-static char Copyright[] = "Copyright Alexandre Julliard, 1993";
-
#include "gdi.h"
#include "metafile.h"
#include "stddebug.h"
diff --git a/windows/mdi.c b/windows/mdi.c
index ed6ca96..43abdf4 100644
--- a/windows/mdi.c
+++ b/windows/mdi.c
@@ -361,6 +361,11 @@
if (ci->flagChildMaximized)
MDIRestoreChild(parent, ci);
+ /* If there aren't any children, don't even bother.
+ */
+ if (ci->nActiveChildren == 0)
+ return 0;
+
GetClientRect(parent, &rect);
spacing = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYFRAME);
ysize = rect.bottom - 8 * spacing;
@@ -406,6 +411,11 @@
if (ci->flagChildMaximized)
MDIRestoreChild(parent, ci);
+ /* If there aren't any children, don't even bother.
+ */
+ if (ci->nActiveChildren == 0)
+ return 0;
+
GetClientRect(parent, &rect);
rows = (int) sqrt((double) ci->nActiveChildren);
columns = ci->nActiveChildren / rows;
diff --git a/windows/message.c b/windows/message.c
index b4d6458..072635e 100644
--- a/windows/message.c
+++ b/windows/message.c
@@ -9,8 +9,6 @@
* one message queue).
*/
-static char Copyright[] = "Copyright Alexandre Julliard, 1993, 1994";
-
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
@@ -844,7 +842,7 @@
while (hwnd) {
if (!(wndPtr = WIN_FindWndPtr(hwnd))) break;
if (wndPtr->dwStyle & WS_POPUP || wndPtr->dwStyle & WS_CAPTION) {
- dprintf_msg(stddeb,"BROADCAST Message to hWnd=%04X m=%04X w=%04X l=%08X !\n",
+ dprintf_msg(stddeb,"BROADCAST Message to hWnd=%04X m=%04X w=%04X l=%08lX !\n",
hwnd, message, wParam, lParam);
PostMessage(hwnd, message, wParam, lParam);
}
diff --git a/windows/nonclient.c b/windows/nonclient.c
index f91eb12..bab7953 100644
--- a/windows/nonclient.c
+++ b/windows/nonclient.c
@@ -3,8 +3,7 @@
*
* Copyright 1994 Alexandre Julliard
*
-static char Copyright[] = "Copyright Alexandre Julliard, 1994";
-*/
+ */
#include "win.h"
#include "class.h"
@@ -38,8 +37,8 @@
/* Some useful macros */
#define HAS_DLGFRAME(style,exStyle) \
- (((style) & WS_DLGFRAME) && \
- (((exStyle) & WS_EX_DLGMODALFRAME) || !((style) & WS_BORDER)))
+ (((exStyle) & WS_EX_DLGMODALFRAME) || \
+ (((style) & WS_DLGFRAME) && !((style) & WS_BORDER)))
#define HAS_THICKFRAME(style) \
(((style) & WS_THICKFRAME) && \
@@ -316,13 +315,18 @@
void NC_DrawSysButton( HWND hwnd, HDC hdc, BOOL down )
{
RECT rect;
+ HDC hdcMem;
+ HBITMAP hbitmap;
WND *wndPtr = WIN_FindWndPtr( hwnd );
+
NC_GetInsideRect( hwnd, &rect );
- GRAPH_DrawBitmap( hdc, hbitmapClose,
- rect.left, rect.top,
- (wndPtr->dwStyle & WS_CHILD) ? SYSMETRICS_CXSIZE : 0, 0,
- SYSMETRICS_CXSIZE, SYSMETRICS_CYSIZE,
- down ? NOTSRCCOPY : SRCCOPY );
+ hdcMem = CreateCompatibleDC( hdc );
+ hbitmap = SelectObject( hdcMem, hbitmapClose );
+ BitBlt( hdc, rect.left, rect.top, SYSMETRICS_CXSIZE, SYSMETRICS_CYSIZE,
+ hdcMem, (wndPtr->dwStyle & WS_CHILD) ? SYSMETRICS_CXSIZE : 0, 0,
+ down ? NOTSRCCOPY : SRCCOPY );
+ SelectObject( hdcMem, hbitmap );
+ DeleteDC( hdcMem );
}
@@ -337,7 +341,7 @@
(down ? hbitmapRestoreD : hbitmapRestore) :
(down ? hbitmapMaximizeD : hbitmapMaximize)),
rect.right - SYSMETRICS_CXSIZE - 1, rect.top,
- 0, 0, SYSMETRICS_CXSIZE+1, SYSMETRICS_CYSIZE, SRCCOPY );
+ 0, 0, SYSMETRICS_CXSIZE+1, SYSMETRICS_CYSIZE );
}
@@ -352,7 +356,7 @@
if (wndPtr->dwStyle & WS_MAXIMIZEBOX) rect.right -= SYSMETRICS_CXSIZE + 1;
GRAPH_DrawBitmap( hdc, (down ? hbitmapMinimizeD : hbitmapMinimize),
rect.right - SYSMETRICS_CXSIZE - 1, rect.top,
- 0, 0, SYSMETRICS_CXSIZE+1, SYSMETRICS_CYSIZE, SRCCOPY );
+ 0, 0, SYSMETRICS_CXSIZE+1, SYSMETRICS_CYSIZE );
}
@@ -544,9 +548,9 @@
dprintf_nonclient(stddeb, "NC_DoNCPaint: %d %d\n", hwnd, hrgn );
if (!wndPtr || !hrgn) return;
- if ((!(wndPtr->dwStyle & (WS_BORDER | WS_DLGFRAME | WS_THICKFRAME))) ||
- (!(wndPtr->dwStyle & WS_VISIBLE)))
- return; /* Nothing to do! */
+ if (!(wndPtr->dwStyle & WS_VISIBLE)) return; /* Nothing to do */
+ if (!(wndPtr->dwStyle & (WS_BORDER | WS_DLGFRAME | WS_THICKFRAME)) &&
+ !(wndPtr->dwExStyle & WS_EX_DLGMODALFRAME)) return; /* Nothing to do */
if (hrgn == 1) hdc = GetDCEx( hwnd, 0, DCX_USESTYLE | DCX_WINDOW );
else
@@ -594,7 +598,8 @@
SelectObject( hdc, sysColorObjects.hpenWindowFrame );
- if ((wndPtr->dwStyle & WS_BORDER) || (wndPtr->dwStyle & WS_DLGFRAME))
+ if ((wndPtr->dwStyle & WS_BORDER) || (wndPtr->dwStyle & WS_DLGFRAME) ||
+ (wndPtr->dwExStyle & WS_EX_DLGMODALFRAME))
{
MoveTo( hdc, 0, 0 );
LineTo( hdc, rect.right-1, 0 );
diff --git a/windows/painting.c b/windows/painting.c
index 16251ca..fe45db7 100644
--- a/windows/painting.c
+++ b/windows/painting.c
@@ -4,8 +4,6 @@
* Copyright 1993 Alexandre Julliard
*/
-static char Copyright[] = "Copyright Alexandre Julliard, 1993";
-
#include <stdio.h>
#include <X11/Xlib.h>
diff --git a/windows/scroll.c b/windows/scroll.c
index 2710c30..4a1a51f 100644
--- a/windows/scroll.c
+++ b/windows/scroll.c
@@ -5,8 +5,6 @@
*
*/
-static char Copyright[] = "Copyright David W. Metcalfe, 1993";
-
#include <stdlib.h>
#include "windows.h"
#include "gdi.h"
diff --git a/windows/syscolor.c b/windows/syscolor.c
index bcf5397..066eb24 100644
--- a/windows/syscolor.c
+++ b/windows/syscolor.c
@@ -6,12 +6,9 @@
*
*/
-static char Copyright[] = "Copyright David W. Metcalfe, 1993";
-static char Copyright2[] = "Copyright Alexandre Julliard, 1994";
-
#include <stdio.h>
#include <stdlib.h>
-#include "windows.h"
+#include "gdi.h"
#include "syscolor.h"
#include "stddebug.h"
/* #define DEBUG_SYSCOLOR */
diff --git a/windows/timer.c b/windows/timer.c
index 9c54240..0d1b0af 100644
--- a/windows/timer.c
+++ b/windows/timer.c
@@ -4,8 +4,6 @@
* Copyright 1993 Alexandre Julliard
*/
-static char Copyright[] = "Copyright Alexandre Julliard, 1993";
-
#include "windows.h"
#include "message.h"
#include "stddebug.h"
diff --git a/windows/utility.c b/windows/utility.c
index 75b779d..ec69566 100644
--- a/windows/utility.c
+++ b/windows/utility.c
@@ -18,7 +18,7 @@
#include "debug.h"
-static char Copyright[] = "Copyright Andrew C. Bulhak, 1993";
+/* static char Copyright[] = "Copyright Andrew C. Bulhak, 1993"; */
/* MulDiv is a simple function that may as well have been
@@ -72,6 +72,7 @@
DebugPrintString(foo);
};
+#if 0
/* UTILITY_qualify(source, dest) takes the format string source and
* changes all the parameters to correspond to Linux integer sizes
* rather than Windows sizes. For example, it converts %i to %hi
@@ -109,6 +110,7 @@
};
*dest = '\0';
};
+#endif
/* UTILITY_argsize() evaluates the size of the argument list that
* accompanies a vsprintf() or wvsprintf() call.
diff --git a/windows/win.c b/windows/win.c
index 28131ec..779fbf7 100644
--- a/windows/win.c
+++ b/windows/win.c
@@ -20,6 +20,7 @@
#include "icon.h"
#include "cursor.h"
#include "event.h"
+#include "message.h"
#include "winpos.h"
#include "color.h"
#include "stddebug.h"
@@ -297,7 +298,7 @@
int wmcreate;
XSetWindowAttributes win_attr;
- dprintf_win(stddeb, "CreateWindowEx: %04X '%s' '%s' %04X %d,%d %dx%d %04X %04X %04X %08X\n",
+ dprintf_win(stddeb, "CreateWindowEx: %08lX '%s' '%s' %08lX %d,%d %dx%d %04X %04X %04X %p\n",
exStyle, className, windowName, style, x, y, width, height,
parent, menu, instance, data);
/* 'soundrec.exe' has negative position !
@@ -444,7 +445,7 @@
GlobalUnlock( hCursor );
}
- dprintf_menu(stddeb,"CreateWindowEx // menu=%04X instance=%04X classmenu=%08X !\n",
+ dprintf_menu(stddeb,"CreateWindowEx // menu=%04X instance=%04X classmenu=%p !\n",
menu, instance, classPtr->wc.lpszMenuName);
if ((style & WS_CAPTION) && (style & WS_CHILD) == 0) {
diff --git a/windows/winpos.c b/windows/winpos.c
index 8a1ebd1..659211e 100644
--- a/windows/winpos.c
+++ b/windows/winpos.c
@@ -4,8 +4,6 @@
* Copyright 1993, 1994 Alexandre Julliard
*/
-static char Copyright[] = "Copyright Alexandre Julliard, 1993, 1994";
-
#include "sysmetrics.h"
#include "user.h"
#include "win.h"