From 946a4448aff65ff19bb989f66f94173683ea18ac Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Sun, 30 Jul 2000 13:50:27 +0000 Subject: [PATCH] Cleaned up a few USER dependencies. --- if1632/thunk.c | 4 ++++ include/callback.h | 6 ++++++ include/keyboard.h | 1 - loader/dos/dosvm.c | 2 +- misc/main.c | 23 ++--------------------- objects/bitmap.c | 9 +++++---- objects/dib.c | 13 +++++++++---- objects/palette.c | 37 +++++++++++++++---------------------- windows/keyboard.c | 14 +++++++++++--- 9 files changed, 53 insertions(+), 56 deletions(-) diff --git a/if1632/thunk.c b/if1632/thunk.c index 6a9f3531fb1..6fb6d22b73c 100644 --- a/if1632/thunk.c +++ b/if1632/thunk.c @@ -190,6 +190,10 @@ void THUNK_InitCallout(void) 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 3ca00524835..a0bea6a573f 100644 --- a/include/callback.h +++ b/include/callback.h @@ -100,6 +100,12 @@ typedef struct 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 7ad803ed423..1f1bc5b92d3 100644 --- a/include/keyboard.h +++ b/include/keyboard.h @@ -31,7 +31,6 @@ VOID WINAPI KEYBOARD_Disable(VOID); 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 755ce811221..b5fd5446b0f 100644 --- a/loader/dos/dosvm.c +++ b/loader/dos/dosvm.c @@ -431,7 +431,7 @@ void DOSVM_Wait( int read_pipe, HANDLE hObject ) 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 bb803e9b377..68ec23a7c74 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" @@ -585,32 +584,14 @@ void MAIN_WineInit(void) atexit(called_at_exit); } -/*********************************************************************** - * 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 a637ddc8bd6..4b8de05e519 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 CreateUserBitmap16( INT16 width, INT16 height, UINT16 planes, 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 ff655214ed1..4947f122d97 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 @@ HBITMAP WINAPI CreateDIBitmap( HDC hdc, const BITMAPINFOHEADER *header, /* 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 9e9050d10b2..16e3d262ef4 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 WINAPI SelectPalette( 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 @@ UINT WINAPI RealizePalette( /* 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 @@ INT16 WINAPI UpdateColors16( HDC16 hDC ) 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 d9c14072d88..ccfe803decc 100644 --- a/windows/keyboard.c +++ b/windows/keyboard.c @@ -274,10 +274,18 @@ void KEYBOARD_SetBeepActive(BOOL bActivate) } /*********************************************************************** - * 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; +}