Cleaned up a few USER dependencies.
diff --git a/if1632/thunk.c b/if1632/thunk.c
index 6a9f353..6fb6d22 100644
--- a/if1632/thunk.c
+++ b/if1632/thunk.c
@@ -190,6 +190,10 @@
GETADDR( DispatchMessageA );
GETADDR( RedrawWindow );
GETADDR( WaitForInputIdle );
+ GETADDR( MsgWaitForMultipleObjects );
+ GETADDR( WindowFromDC );
+ GETADDR( GetForegroundWindow );
+ GETADDR( IsChild );
GETADDR( MessageBoxA );
GETADDR( MessageBoxW );
#undef GETADDR
diff --git a/include/callback.h b/include/callback.h
index 3ca0052..a0bea6a 100644
--- a/include/callback.h
+++ b/include/callback.h
@@ -100,6 +100,12 @@
void WINAPI (*UserYield16)( void );
WORD WINAPI (*DestroyIcon32)( HGLOBAL16 handle, UINT16 flags );
DWORD WINAPI (*WaitForInputIdle)( HANDLE hProcess, DWORD dwTimeOut );
+ DWORD WINAPI (*MsgWaitForMultipleObjects)( DWORD nCount, HANDLE *pHandles,
+ BOOL fWaitAll, DWORD dwMilliseconds,
+ DWORD dwWakeMask );
+ HWND WINAPI (*WindowFromDC)( HDC hDC );
+ HWND WINAPI (*GetForegroundWindow)(void);
+ BOOL WINAPI (*IsChild)( HWND parent, HWND child );
INT WINAPI (*MessageBoxA)( HWND hWnd, LPCSTR text, LPCSTR title, UINT type );
INT WINAPI (*MessageBoxW)( HWND hwnd, LPCWSTR text, LPCWSTR title, UINT type );
diff --git a/include/keyboard.h b/include/keyboard.h
index 7ad803e..1f1bc5b 100644
--- a/include/keyboard.h
+++ b/include/keyboard.h
@@ -31,7 +31,6 @@
extern BOOL KEYBOARD_GetBeepActive(void);
extern void KEYBOARD_SetBeepActive(BOOL bActivate);
-extern void KEYBOARD_Beep(void);
extern void KEYBOARD_SendEvent(BYTE bVk, BYTE bScan, DWORD dwFlags, DWORD posX, DWORD posY, DWORD time);
diff --git a/loader/dos/dosvm.c b/loader/dos/dosvm.c
index 755ce81..b5fd544 100644
--- a/loader/dos/dosvm.c
+++ b/loader/dos/dosvm.c
@@ -431,7 +431,7 @@
break;
}
/* nothing yet, block while waiting for something to do */
- waitret=MsgWaitForMultipleObjects(objc,objs,FALSE,INFINITE,QS_ALLINPUT);
+ waitret=Callout.MsgWaitForMultipleObjects(objc,objs,FALSE,INFINITE,QS_ALLINPUT);
if (waitret==(DWORD)-1) {
ERR_(module)("dosvm wait error=%ld\n",GetLastError());
}
diff --git a/misc/main.c b/misc/main.c
index bb803e9..68ec23a 100644
--- a/misc/main.c
+++ b/misc/main.c
@@ -29,7 +29,6 @@
#include "winnls.h"
#include "console.h"
#include "monitor.h"
-#include "keyboard.h"
#include "gdi.h"
#include "user.h"
#include "windef.h"
@@ -586,31 +585,13 @@
}
/***********************************************************************
- * MessageBeep16 (USER.104)
- */
-void WINAPI MessageBeep16( UINT16 i )
-{
- MessageBeep( i );
-}
-
-
-/***********************************************************************
- * MessageBeep (USER32.390)
- */
-BOOL WINAPI MessageBeep( UINT i )
-{
- KEYBOARD_Beep();
- return TRUE;
-}
-
-
-/***********************************************************************
* Beep (KERNEL32.11)
*/
BOOL WINAPI Beep( DWORD dwFreq, DWORD dwDur )
{
+ static char beep = '\a';
/* dwFreq and dwDur are ignored by Win95 */
- KEYBOARD_Beep();
+ if (isatty(2)) write( 2, &beep, 1 );
return TRUE;
}
diff --git a/objects/bitmap.c b/objects/bitmap.c
index a637ddc..4b8de05 100644
--- a/objects/bitmap.c
+++ b/objects/bitmap.c
@@ -16,11 +16,9 @@
#include "global.h"
#include "cursoricon.h"
#include "debugtools.h"
-#include "monitor.h"
#include "wine/winuser16.h"
-DEFAULT_DEBUG_CHANNEL(bitmap)
-DECLARE_DEBUG_CHANNEL(resource)
+DEFAULT_DEBUG_CHANNEL(bitmap);
BITMAP_DRIVER *BITMAP_Driver = NULL;
@@ -74,7 +72,10 @@
HBITMAP16 WINAPI CreateUserDiscardableBitmap16( WORD dummy,
INT16 width, INT16 height )
{
- return CreateUserBitmap16( width, height, 1, MONITOR_GetDepth(&MONITOR_PrimaryMonitor), NULL );
+ HDC hdc = CreateDCA( "DISPLAY", NULL, NULL, NULL );
+ HBITMAP16 ret = CreateCompatibleBitmap16( hdc, width, height );
+ DeleteDC( hdc );
+ return ret;
}
diff --git a/objects/dib.c b/objects/dib.c
index ff65521..4947f12 100644
--- a/objects/dib.c
+++ b/objects/dib.c
@@ -10,10 +10,9 @@
#include "callback.h"
#include "dc.h"
#include "debugtools.h"
-#include "monitor.h"
#include "palette.h"
-DEFAULT_DEBUG_CHANNEL(bitmap)
+DEFAULT_DEBUG_CHANNEL(bitmap);
/***********************************************************************
* DIB_GetDIBWidthBytes
@@ -849,8 +848,14 @@
/* Now create the bitmap */
- handle = fColor ? CreateBitmap( width, height, 1, MONITOR_GetDepth(&MONITOR_PrimaryMonitor), NULL ) :
- CreateBitmap( width, height, 1, 1, NULL );
+ if (fColor)
+ {
+ HDC tmpdc = CreateDCA( "DISPLAY", NULL, NULL, NULL );
+ handle = CreateCompatibleBitmap( tmpdc, width, height );
+ DeleteDC( tmpdc );
+ }
+ else handle = CreateBitmap( width, height, 1, 1, NULL );
+
if (!handle) return 0;
if (init == CBM_INIT)
diff --git a/objects/palette.c b/objects/palette.c
index 9e9050d..16e3d26 100644
--- a/objects/palette.c
+++ b/objects/palette.c
@@ -19,6 +19,7 @@
#include "color.h"
#include "palette.h"
#include "debugtools.h"
+#include "callback.h"
#include "winerror.h"
DEFAULT_DEBUG_CHANNEL(palette)
@@ -766,25 +767,17 @@
HPALETTE hPal, /* [in] Handle of logical color palette */
BOOL bForceBackground) /* [in] Foreground/background mode */
{
- WORD wBkgPalette = 1;
- PALETTEOBJ* lpt = (PALETTEOBJ*) GDI_GetObjPtr( hPal, PALETTE_MAGIC );
+ WORD wBkgPalette = 1;
- TRACE("dc=%04x,pal=%04x,force=%i\n", hDC, hPal, bForceBackground);
- if( !lpt ) return 0;
-
- TRACE(" entries = %d\n", lpt->logpalette.palNumEntries);
- GDI_HEAP_UNLOCK( hPal );
-
- if( hPal != STOCK_DEFAULT_PALETTE )
+ if (!bForceBackground && (hPal != STOCK_DEFAULT_PALETTE))
{
- HWND hWnd = WindowFromDC( hDC );
- HWND hActive = GetActiveWindow();
-
- /* set primary palette if it's related to current active */
-
- if((!hWnd || (hActive == hWnd || IsChild16(hActive,hWnd))) &&
- !bForceBackground )
- wBkgPalette = 0;
+ HWND hwnd = Callout.WindowFromDC( hDC );
+ if (hwnd)
+ {
+ HWND hForeground = Callout.GetForegroundWindow();
+ /* set primary palette if it's related to current active */
+ if (hForeground == hwnd || Callout.IsChild(hForeground,hwnd)) wBkgPalette = 0;
+ }
}
return GDISelectPalette16( hDC, hPal, wBkgPalette);
}
@@ -824,8 +817,8 @@
/* Send palette change notification */
HWND hWnd;
- if( (hWnd = WindowFromDC( hDC )) )
- SendMessage16( HWND_BROADCAST, WM_PALETTECHANGED, hWnd, 0L);
+ if( (hWnd = Callout.WindowFromDC( hDC )) )
+ Callout.SendMessageA( HWND_BROADCAST, WM_PALETTECHANGED, hWnd, 0L);
}
GDI_HEAP_UNLOCK( hDC );
@@ -843,13 +836,13 @@
if (!(dc = (DC *) GDI_GetObjPtr( hDC, DC_MAGIC ))) return 0;
- hWnd = WindowFromDC( hDC );
+ hWnd = Callout.WindowFromDC( hDC );
/* Docs say that we have to remap current drawable pixel by pixel
* but it would take forever given the speed of XGet/PutPixel.
*/
- if (hWnd && dc->w.devCaps->sizePalette )
- InvalidateRect( hWnd, NULL, FALSE );
+ if (hWnd && dc->w.devCaps->sizePalette )
+ Callout.RedrawWindow( hWnd, NULL, 0, RDW_INVALIDATE );
GDI_HEAP_UNLOCK( hDC );
diff --git a/windows/keyboard.c b/windows/keyboard.c
index d9c1407..ccfe803 100644
--- a/windows/keyboard.c
+++ b/windows/keyboard.c
@@ -274,10 +274,18 @@
}
/***********************************************************************
- * KEYBOARD_Beep
+ * MessageBeep16 (USER.104)
*/
-void KEYBOARD_Beep(void)
+void WINAPI MessageBeep16( UINT16 i )
{
- USER_Driver->pBeep();
+ MessageBeep( i );
}
+/***********************************************************************
+ * MessageBeep (USER32.390)
+ */
+BOOL WINAPI MessageBeep( UINT i )
+{
+ USER_Driver->pBeep();
+ return TRUE;
+}