win32u: Use NtUserCallOneParam instead of GDIRealizePalette.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
72e3c91380
commit
41eac6e25c
|
@ -22,7 +22,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gdi_private.h"
|
#include "gdi_private.h"
|
||||||
#include "winternl.h"
|
#include "ntuser.h"
|
||||||
#include "ddrawgdi.h"
|
#include "ddrawgdi.h"
|
||||||
#include "winnls.h"
|
#include "winnls.h"
|
||||||
|
|
||||||
|
@ -2090,12 +2090,16 @@ BOOL WINAPI ScaleWindowExtEx( HDC hdc, INT x_num, INT x_denom,
|
||||||
return NtGdiScaleWindowExtEx( hdc, x_num, x_denom, y_num, y_denom, size );
|
return NtGdiScaleWindowExtEx( hdc, x_num, x_denom, y_num, y_denom, size );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static UINT WINAPI realize_palette( HDC hdc )
|
||||||
|
{
|
||||||
|
return NtUserCallOneParam( HandleToUlong(hdc), NtUserRealizePalette );
|
||||||
|
}
|
||||||
|
|
||||||
/* Pointers to USER implementation of SelectPalette/RealizePalette */
|
/* Pointers to USER implementation of SelectPalette/RealizePalette */
|
||||||
/* they will be patched by USER on startup */
|
/* they will be patched by USER on startup */
|
||||||
extern HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg );
|
extern HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg );
|
||||||
extern UINT WINAPI GDIRealizePalette( HDC hdc );
|
|
||||||
HPALETTE (WINAPI *pfnSelectPalette)( HDC hdc, HPALETTE hpal, WORD bkgnd ) = GDISelectPalette;
|
HPALETTE (WINAPI *pfnSelectPalette)( HDC hdc, HPALETTE hpal, WORD bkgnd ) = GDISelectPalette;
|
||||||
UINT (WINAPI *pfnRealizePalette)( HDC hdc ) = GDIRealizePalette;
|
UINT (WINAPI *pfnRealizePalette)( HDC hdc ) = realize_palette;
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* SelectPalette (GDI32.@)
|
* SelectPalette (GDI32.@)
|
||||||
|
|
|
@ -1168,6 +1168,7 @@ static struct unix_funcs unix_funcs =
|
||||||
NtGdiUpdateColors,
|
NtGdiUpdateColors,
|
||||||
NtGdiWidenPath,
|
NtGdiWidenPath,
|
||||||
NtUserActivateKeyboardLayout,
|
NtUserActivateKeyboardLayout,
|
||||||
|
NtUserCallOneParam,
|
||||||
NtUserCallTwoParam,
|
NtUserCallTwoParam,
|
||||||
NtUserChangeDisplaySettings,
|
NtUserChangeDisplaySettings,
|
||||||
NtUserCountClipboardFormats,
|
NtUserCountClipboardFormats,
|
||||||
|
@ -1187,7 +1188,6 @@ static struct unix_funcs unix_funcs =
|
||||||
NtUserUnregisterHotKey,
|
NtUserUnregisterHotKey,
|
||||||
NtUserVkKeyScanEx,
|
NtUserVkKeyScanEx,
|
||||||
|
|
||||||
GDIRealizePalette,
|
|
||||||
GDISelectPalette,
|
GDISelectPalette,
|
||||||
GetDCHook,
|
GetDCHook,
|
||||||
MirrorRgn,
|
MirrorRgn,
|
||||||
|
|
|
@ -403,6 +403,7 @@ extern HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg) DECL
|
||||||
extern HPALETTE PALETTE_Init(void) DECLSPEC_HIDDEN;
|
extern HPALETTE PALETTE_Init(void) DECLSPEC_HIDDEN;
|
||||||
extern UINT get_palette_entries( HPALETTE hpalette, UINT start, UINT count,
|
extern UINT get_palette_entries( HPALETTE hpalette, UINT start, UINT count,
|
||||||
PALETTEENTRY *entries ) DECLSPEC_HIDDEN;
|
PALETTEENTRY *entries ) DECLSPEC_HIDDEN;
|
||||||
|
extern UINT realize_palette( HDC hdc ) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
/* pen.c */
|
/* pen.c */
|
||||||
extern HPEN create_pen( INT style, INT width, COLORREF color ) DECLSPEC_HIDDEN;
|
extern HPEN create_pen( INT style, INT width, COLORREF color ) DECLSPEC_HIDDEN;
|
||||||
|
|
|
@ -539,16 +539,17 @@ HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg)
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* GDIRealizePalette (Not a Windows API)
|
* realize_palette
|
||||||
*/
|
*/
|
||||||
UINT WINAPI GDIRealizePalette( HDC hdc )
|
UINT realize_palette( HDC hdc )
|
||||||
{
|
{
|
||||||
UINT realized = 0;
|
UINT realized = 0;
|
||||||
DC* dc = get_dc_ptr( hdc );
|
DC* dc = get_dc_ptr( hdc );
|
||||||
|
|
||||||
|
TRACE( "%p\n", hdc );
|
||||||
if (!dc) return 0;
|
if (!dc) return 0;
|
||||||
|
|
||||||
TRACE("%p...\n", hdc );
|
/* FIXME: move primary palette handling from user32 */
|
||||||
|
|
||||||
if( dc->hPalette == get_stock_object( DEFAULT_PALETTE ))
|
if( dc->hPalette == get_stock_object( DEFAULT_PALETTE ))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1657,6 +1657,24 @@ void sysparams_init(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NtUserCallOneParam (win32u.@)
|
||||||
|
*/
|
||||||
|
ULONG_PTR WINAPI NtUserCallOneParam( ULONG_PTR arg, ULONG code )
|
||||||
|
{
|
||||||
|
switch(code)
|
||||||
|
{
|
||||||
|
case NtUserRealizePalette:
|
||||||
|
return realize_palette( UlongToHandle(arg) );
|
||||||
|
default:
|
||||||
|
FIXME( "invalid code %u\n", code );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NtUserCallTwoParam (win32u.@)
|
||||||
|
*/
|
||||||
ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code )
|
ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code )
|
||||||
{
|
{
|
||||||
switch(code)
|
switch(code)
|
||||||
|
|
|
@ -779,7 +779,7 @@
|
||||||
@ stub NtUserCallMsgFilter
|
@ stub NtUserCallMsgFilter
|
||||||
@ stub NtUserCallNextHookEx
|
@ stub NtUserCallNextHookEx
|
||||||
@ stub NtUserCallNoParam
|
@ stub NtUserCallNoParam
|
||||||
@ stub NtUserCallOneParam
|
@ stdcall NtUserCallOneParam(long long)
|
||||||
@ stdcall NtUserCallTwoParam(long long long)
|
@ stdcall NtUserCallTwoParam(long long long)
|
||||||
@ stub NtUserCanBrokerForceForeground
|
@ stub NtUserCanBrokerForceForeground
|
||||||
@ stub NtUserChangeClipboardChain
|
@ stub NtUserChangeClipboardChain
|
||||||
|
@ -1325,7 +1325,6 @@
|
||||||
@ stdcall SetDCHook(long ptr long)
|
@ stdcall SetDCHook(long ptr long)
|
||||||
@ stdcall SetHookFlags(long long)
|
@ stdcall SetHookFlags(long long)
|
||||||
@ stdcall GDISelectPalette(long long long)
|
@ stdcall GDISelectPalette(long long long)
|
||||||
@ stdcall GDIRealizePalette(long)
|
|
||||||
@ cdecl __wine_make_gdi_object_system(long long)
|
@ cdecl __wine_make_gdi_object_system(long long)
|
||||||
@ cdecl __wine_set_visible_region(long long ptr ptr ptr)
|
@ cdecl __wine_set_visible_region(long long ptr ptr ptr)
|
||||||
|
|
||||||
|
|
|
@ -195,6 +195,7 @@ struct unix_funcs
|
||||||
BOOL (WINAPI *pNtGdiUpdateColors)( HDC hdc );
|
BOOL (WINAPI *pNtGdiUpdateColors)( HDC hdc );
|
||||||
BOOL (WINAPI *pNtGdiWidenPath)( HDC hdc );
|
BOOL (WINAPI *pNtGdiWidenPath)( HDC hdc );
|
||||||
HKL (WINAPI *pNtUserActivateKeyboardLayout)( HKL layout, UINT flags );
|
HKL (WINAPI *pNtUserActivateKeyboardLayout)( HKL layout, UINT flags );
|
||||||
|
ULONG_PTR (WINAPI *pNtUserCallOneParam)( ULONG_PTR arg, ULONG code );
|
||||||
ULONG_PTR (WINAPI *pNtUserCallTwoParam)( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code );
|
ULONG_PTR (WINAPI *pNtUserCallTwoParam)( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code );
|
||||||
LONG (WINAPI *pNtUserChangeDisplaySettings)( UNICODE_STRING *devname, DEVMODEW *devmode, HWND hwnd,
|
LONG (WINAPI *pNtUserChangeDisplaySettings)( UNICODE_STRING *devname, DEVMODEW *devmode, HWND hwnd,
|
||||||
DWORD flags, void *lparam );
|
DWORD flags, void *lparam );
|
||||||
|
@ -221,7 +222,6 @@ struct unix_funcs
|
||||||
WORD (WINAPI *pNtUserVkKeyScanEx)( WCHAR chr, HKL layout );
|
WORD (WINAPI *pNtUserVkKeyScanEx)( WCHAR chr, HKL layout );
|
||||||
|
|
||||||
/* Wine-specific functions */
|
/* Wine-specific functions */
|
||||||
UINT (WINAPI *pGDIRealizePalette)( HDC hdc );
|
|
||||||
HPALETTE (WINAPI *pGDISelectPalette)( HDC hdc, HPALETTE hpal, WORD bkg );
|
HPALETTE (WINAPI *pGDISelectPalette)( HDC hdc, HPALETTE hpal, WORD bkg );
|
||||||
DWORD_PTR (WINAPI *pGetDCHook)( HDC hdc, DCHOOKPROC *proc );
|
DWORD_PTR (WINAPI *pGetDCHook)( HDC hdc, DCHOOKPROC *proc );
|
||||||
BOOL (WINAPI *pMirrorRgn)( HWND hwnd, HRGN hrgn );
|
BOOL (WINAPI *pMirrorRgn)( HWND hwnd, HRGN hrgn );
|
||||||
|
@ -241,7 +241,6 @@ struct unix_funcs
|
||||||
struct window_surface *surface );
|
struct window_surface *surface );
|
||||||
};
|
};
|
||||||
|
|
||||||
UINT WINAPI GDIRealizePalette( HDC hdc );
|
|
||||||
HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg );
|
HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg );
|
||||||
|
|
||||||
extern RECT get_virtual_screen_rect(void) DECLSPEC_HIDDEN;
|
extern RECT get_virtual_screen_rect(void) DECLSPEC_HIDDEN;
|
||||||
|
|
|
@ -601,6 +601,11 @@ HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags )
|
||||||
return unix_funcs->pNtUserActivateKeyboardLayout( layout, flags );
|
return unix_funcs->pNtUserActivateKeyboardLayout( layout, flags );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ULONG_PTR WINAPI NtUserCallOneParam( ULONG_PTR arg, ULONG code )
|
||||||
|
{
|
||||||
|
return unix_funcs->pNtUserCallOneParam( arg, code );
|
||||||
|
}
|
||||||
|
|
||||||
ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code )
|
ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code )
|
||||||
{
|
{
|
||||||
return unix_funcs->pNtUserCallTwoParam( arg1, arg2, code );
|
return unix_funcs->pNtUserCallTwoParam( arg1, arg2, code );
|
||||||
|
@ -697,11 +702,6 @@ WORD WINAPI NtUserVkKeyScanEx( WCHAR chr, HKL layout )
|
||||||
return unix_funcs->pNtUserVkKeyScanEx( chr, layout );
|
return unix_funcs->pNtUserVkKeyScanEx( chr, layout );
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT WINAPI GDIRealizePalette( HDC hdc )
|
|
||||||
{
|
|
||||||
return unix_funcs->pGDIRealizePalette( hdc );
|
|
||||||
}
|
|
||||||
|
|
||||||
HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD bkg )
|
HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD bkg )
|
||||||
{
|
{
|
||||||
return unix_funcs->pGDISelectPalette( hdc, hpal, bkg );
|
return unix_funcs->pGDISelectPalette( hdc, hpal, bkg );
|
||||||
|
|
|
@ -39,6 +39,12 @@ struct enum_display_monitor_params
|
||||||
LPARAM lparam;
|
LPARAM lparam;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* NtUserCallOneParam codes, not compatible with Windows */
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
NtUserRealizePalette,
|
||||||
|
};
|
||||||
|
|
||||||
/* NtUserCallTwoParam codes, not compatible with Windows */
|
/* NtUserCallTwoParam codes, not compatible with Windows */
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
@ -78,6 +84,7 @@ C_ASSERT( sizeof(struct user_thread_info) <= sizeof(((TEB *)0)->Win32ClientInfo)
|
||||||
HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags );
|
HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags );
|
||||||
BOOL WINAPI NtUserAddClipboardFormatListener( HWND hwnd );
|
BOOL WINAPI NtUserAddClipboardFormatListener( HWND hwnd );
|
||||||
BOOL WINAPI NtUserAttachThreadInput( DWORD from, DWORD to, BOOL attach );
|
BOOL WINAPI NtUserAttachThreadInput( DWORD from, DWORD to, BOOL attach );
|
||||||
|
ULONG_PTR WINAPI NtUserCallOneParam( ULONG_PTR arg, ULONG code );
|
||||||
ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code );
|
ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code );
|
||||||
LONG WINAPI NtUserChangeDisplaySettings( UNICODE_STRING *devname, DEVMODEW *devmode, HWND hwnd,
|
LONG WINAPI NtUserChangeDisplaySettings( UNICODE_STRING *devname, DEVMODEW *devmode, HWND hwnd,
|
||||||
DWORD flags, void *lparam );
|
DWORD flags, void *lparam );
|
||||||
|
@ -128,6 +135,7 @@ BOOL WINAPI NtUserRemoveClipboardFormatListener( HWND hwnd );
|
||||||
HANDLE WINAPI NtUserRemoveProp( HWND hwnd, const WCHAR *str );
|
HANDLE WINAPI NtUserRemoveProp( HWND hwnd, const WCHAR *str );
|
||||||
BOOL WINAPI NtUserScrollDC( HDC hdc, INT dx, INT dy, const RECT *scroll, const RECT *clip,
|
BOOL WINAPI NtUserScrollDC( HDC hdc, INT dx, INT dy, const RECT *scroll, const RECT *clip,
|
||||||
HRGN ret_update_rgn, RECT *update_rect );
|
HRGN ret_update_rgn, RECT *update_rect );
|
||||||
|
HPALETTE WINAPI NtUserSelectPalette( HDC hdc, HPALETTE palette, WORD force_background );
|
||||||
BOOL WINAPI NtUserSetKeyboardState( BYTE *state );
|
BOOL WINAPI NtUserSetKeyboardState( BYTE *state );
|
||||||
BOOL WINAPI NtUserSetProcessWindowStation( HWINSTA handle );
|
BOOL WINAPI NtUserSetProcessWindowStation( HWINSTA handle );
|
||||||
BOOL WINAPI NtUserSetProp( HWND hwnd, const WCHAR *str, HANDLE handle );
|
BOOL WINAPI NtUserSetProp( HWND hwnd, const WCHAR *str, HANDLE handle );
|
||||||
|
|
Loading…
Reference in New Issue