Jacek Caban : win32u: Use NtUserSelectPalette instead of GDISelectPalette.

Alexandre Julliard julliard at winehq.org
Fri Dec 3 15:18:59 CST 2021


Module: wine
Branch: master
Commit: f359c7f60c08751a11c5d8dd4396881edbb793d6
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f359c7f60c08751a11c5d8dd4396881edbb793d6

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Dec  3 12:56:43 2021 +0100

win32u: Use NtUserSelectPalette instead of GDISelectPalette.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/dc.c              |  3 +--
 dlls/win32u/dc.c             |  4 ++--
 dlls/win32u/gdiobj.c         |  2 +-
 dlls/win32u/ntgdi_private.h  |  1 -
 dlls/win32u/palette.c        |  8 +++++---
 dlls/win32u/win32u.spec      |  3 +--
 dlls/win32u/win32u_private.h |  4 +---
 dlls/win32u/wrappers.c       | 10 +++++-----
 8 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index 705593ac6f7..ea8047a4285 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -2097,8 +2097,7 @@ static UINT WINAPI realize_palette( HDC hdc )
 
 /* Pointers to USER implementation of SelectPalette/RealizePalette */
 /* they will be patched by USER on startup */
-extern HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg );
-HPALETTE (WINAPI *pfnSelectPalette)( HDC hdc, HPALETTE hpal, WORD bkgnd ) = GDISelectPalette;
+HPALETTE (WINAPI *pfnSelectPalette)( HDC hdc, HPALETTE hpal, WORD bkgnd ) = NtUserSelectPalette;
 UINT (WINAPI *pfnRealizePalette)( HDC hdc ) = realize_palette;
 
 /***********************************************************************
diff --git a/dlls/win32u/dc.c b/dlls/win32u/dc.c
index 1456eb1b887..3aae73779e9 100644
--- a/dlls/win32u/dc.c
+++ b/dlls/win32u/dc.c
@@ -481,7 +481,7 @@ static BOOL reset_dc_state( HDC hdc )
     NtGdiSelectFont( hdc, get_stock_object( SYSTEM_FONT ));
     NtGdiSelectPen( hdc, get_stock_object( BLACK_PEN ));
     NtGdiSetVirtualResolution( hdc, 0, 0, 0, 0 );
-    GDISelectPalette( hdc, get_stock_object( DEFAULT_PALETTE ), FALSE );
+    NtUserSelectPalette( hdc, get_stock_object( DEFAULT_PALETTE ), FALSE );
     NtGdiSetBoundsRect( hdc, NULL, DCB_DISABLE );
     NtGdiAbortPath( hdc );
 
@@ -689,7 +689,7 @@ BOOL WINAPI NtGdiRestoreDC( HDC hdc, INT level )
     NtGdiSelectPen( hdc, dcs->hPen );
     set_bk_color( dc, dcs->attr->background_color);
     set_text_color( dc, dcs->attr->text_color);
-    GDISelectPalette( hdc, dcs->hPalette, FALSE );
+    NtUserSelectPalette( hdc, dcs->hPalette, FALSE );
 
     dc->saved_dc  = dcs->saved_dc;
     dcs->saved_dc = 0;
diff --git a/dlls/win32u/gdiobj.c b/dlls/win32u/gdiobj.c
index 3dc87509313..796ae460a17 100644
--- a/dlls/win32u/gdiobj.c
+++ b/dlls/win32u/gdiobj.c
@@ -1183,12 +1183,12 @@ static struct unix_funcs unix_funcs =
     NtUserIsClipboardFormatAvailable,
     NtUserMapVirtualKeyEx,
     NtUserScrollDC,
+    NtUserSelectPalette,
     NtUserShowCursor,
     NtUserToUnicodeEx,
     NtUserUnregisterHotKey,
     NtUserVkKeyScanEx,
 
-    GDISelectPalette,
     GetDCHook,
     MirrorRgn,
     SetDCHook,
diff --git a/dlls/win32u/ntgdi_private.h b/dlls/win32u/ntgdi_private.h
index 0244882ce3e..534687cb60b 100644
--- a/dlls/win32u/ntgdi_private.h
+++ b/dlls/win32u/ntgdi_private.h
@@ -399,7 +399,6 @@ extern BOOL PATH_RestorePath( DC *dst, DC *src ) DECLSPEC_HIDDEN;
 extern POINT *GDI_Bezier( const POINT *Points, INT count, INT *nPtsOut ) DECLSPEC_HIDDEN;
 
 /* palette.c */
-extern HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg) DECLSPEC_HIDDEN;
 extern HPALETTE PALETTE_Init(void) DECLSPEC_HIDDEN;
 extern UINT get_palette_entries( HPALETTE hpalette, UINT start, UINT count,
                                  PALETTEENTRY *entries ) DECLSPEC_HIDDEN;
diff --git a/dlls/win32u/palette.c b/dlls/win32u/palette.c
index b59a196caff..3aeda89851f 100644
--- a/dlls/win32u/palette.c
+++ b/dlls/win32u/palette.c
@@ -513,15 +513,17 @@ static BOOL PALETTE_DeleteObject( HGDIOBJ handle )
 
 
 /***********************************************************************
- *           GDISelectPalette    (Not a Windows API)
+ *           NtUserSelectPalette    (win32u.@)
  */
-HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg)
+HPALETTE WINAPI NtUserSelectPalette( HDC hdc, HPALETTE hpal, WORD bkg )
 {
     HPALETTE ret = 0;
     DC *dc;
 
     TRACE("%p %p\n", hdc, hpal );
 
+    /* FIXME: move primary palette handling from user32 */
+
     if (get_gdi_object_type(hpal) != NTGDI_OBJ_PAL)
     {
       WARN("invalid selected palette %p\n",hpal);
@@ -531,7 +533,7 @@ HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg)
     {
         ret = dc->hPalette;
         dc->hPalette = hpal;
-        if (!wBkg) hPrimaryPalette = hpal;
+        if (!bkg) hPrimaryPalette = hpal;
         release_dc_ptr( dc );
     }
     return ret;
diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec
index 8d1a1bbb234..786d2c47b28 100644
--- a/dlls/win32u/win32u.spec
+++ b/dlls/win32u/win32u.spec
@@ -1157,7 +1157,7 @@
 @ stub NtUserSBGetParms
 @ stdcall NtUserScrollDC(long long long ptr ptr long ptr)
 @ stub NtUserScrollWindowEx
-@ stub NtUserSelectPalette
+@ stdcall NtUserSelectPalette(long long long)
 @ stub NtUserSendEventMessage
 @ stub NtUserSendInput
 @ stub NtUserSendInteractiveControlHapticsReport
@@ -1324,7 +1324,6 @@
 @ stdcall GetDCHook(long ptr)
 @ stdcall SetDCHook(long ptr long)
 @ stdcall SetHookFlags(long long)
-@ stdcall GDISelectPalette(long long long)
 @ cdecl __wine_make_gdi_object_system(long long)
 @ cdecl __wine_set_visible_region(long long ptr ptr ptr)
 
diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h
index d6454b7ad47..648d8cc003a 100644
--- a/dlls/win32u/win32u_private.h
+++ b/dlls/win32u/win32u_private.h
@@ -215,6 +215,7 @@ struct unix_funcs
     UINT     (WINAPI *pNtUserMapVirtualKeyEx)( UINT code, UINT type, HKL layout );
     BOOL     (WINAPI *pNtUserScrollDC)( HDC hdc, INT dx, INT dy, const RECT *scroll, const RECT *clip,
                                         HRGN ret_update_rgn, RECT *update_rect );
+    HPALETTE (WINAPI *pNtUserSelectPalette)( HDC hdc, HPALETTE hpal, WORD bkg );
     INT      (WINAPI *pNtUserShowCursor)( BOOL show );
     INT      (WINAPI *pNtUserToUnicodeEx)( UINT virt, UINT scan, const BYTE *state,
                                            WCHAR *str, int size, UINT flags, HKL layout );
@@ -222,7 +223,6 @@ struct unix_funcs
     WORD     (WINAPI *pNtUserVkKeyScanEx)( WCHAR chr, HKL layout );
 
     /* Wine-specific functions */
-    HPALETTE (WINAPI *pGDISelectPalette)( HDC hdc, HPALETTE hpal, WORD bkg );
     DWORD_PTR (WINAPI *pGetDCHook)( HDC hdc, DCHOOKPROC *proc );
     BOOL (WINAPI *pMirrorRgn)( HWND hwnd, HRGN hrgn );
     BOOL (WINAPI *pSetDCHook)( HDC hdc, DCHOOKPROC proc, DWORD_PTR data );
@@ -241,8 +241,6 @@ struct unix_funcs
                                       struct window_surface *surface );
 };
 
-HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD wBkg );
-
 extern RECT get_virtual_screen_rect(void) DECLSPEC_HIDDEN;
 
 extern void wrappers_init( unixlib_handle_t handle ) DECLSPEC_HIDDEN;
diff --git a/dlls/win32u/wrappers.c b/dlls/win32u/wrappers.c
index 1ea45e42c21..5eefd48a635 100644
--- a/dlls/win32u/wrappers.c
+++ b/dlls/win32u/wrappers.c
@@ -681,6 +681,11 @@ BOOL WINAPI NtUserScrollDC( HDC hdc, INT dx, INT dy, const RECT *scroll, const R
     return unix_funcs->pNtUserScrollDC( hdc, dx, dy, scroll, clip, ret_update_rgn, update_rect );
 }
 
+HPALETTE WINAPI NtUserSelectPalette( HDC hdc, HPALETTE hpal, WORD bkg )
+{
+    return unix_funcs->pNtUserSelectPalette( hdc, hpal, bkg );
+}
+
 INT WINAPI NtUserShowCursor( BOOL show )
 {
     return unix_funcs->pNtUserShowCursor( show );
@@ -702,11 +707,6 @@ WORD WINAPI NtUserVkKeyScanEx( WCHAR chr, HKL layout )
     return unix_funcs->pNtUserVkKeyScanEx( chr, layout );
 }
 
-HPALETTE WINAPI GDISelectPalette( HDC hdc, HPALETTE hpal, WORD bkg )
-{
-    return unix_funcs->pGDISelectPalette( hdc, hpal, bkg );
-}
-
 DWORD_PTR WINAPI GetDCHook( HDC hdc, DCHOOKPROC *proc )
 {
     return unix_funcs->pGetDCHook( hdc, proc );




More information about the wine-cvs mailing list