From: Rémi Bernon rbernon@codeweavers.com
--- dlls/win32u/dce.c | 15 +++-------- dlls/win32u/input.c | 47 +++++++---------------------------- dlls/win32u/message.c | 5 +--- dlls/win32u/window.c | 31 ++++------------------- dlls/wineandroid.drv/window.c | 5 +--- dlls/winex11.drv/event.c | 5 +--- dlls/winex11.drv/mouse.c | 5 +--- dlls/winex11.drv/window.c | 5 +--- include/wine/server.h | 26 +++++++++++++++++++ 9 files changed, 49 insertions(+), 95 deletions(-)
diff --git a/dlls/win32u/dce.c b/dlls/win32u/dce.c index 57a3ae59eff..2458b65d1de 100644 --- a/dlls/win32u/dce.c +++ b/dlls/win32u/dce.c @@ -417,17 +417,10 @@ static void update_visible_region( struct dce *dce ) data->rdh.nCount = reply_size / sizeof(RECT); data->rdh.nRgnSize = reply_size; vis_rgn = NtGdiExtCreateRegion( NULL, data->rdh.dwSize + data->rdh.nRgnSize, data ); - - top_win = wine_server_ptr_handle( reply->top_win ); - win_rect.left = reply->win_rect.left; - win_rect.top = reply->win_rect.top; - win_rect.right = reply->win_rect.right; - win_rect.bottom = reply->win_rect.bottom; - top_rect.left = reply->top_rect.left; - top_rect.top = reply->top_rect.top; - top_rect.right = reply->top_rect.right; - top_rect.bottom = reply->top_rect.bottom; - paint_flags = reply->paint_flags; + top_win = wine_server_ptr_handle( reply->top_win ); + win_rect = wine_server_get_rect( reply->win_rect ); + top_rect = wine_server_get_rect( reply->top_rect ); + paint_flags = reply->paint_flags; } else size = reply->total_size; } diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c index b305e00b1a3..cddcfd22081 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c @@ -2219,10 +2219,7 @@ BOOL WINAPI NtUserCreateCaret( HWND hwnd, HBITMAP bitmap, int width, int height if ((ret = !wine_server_call_err( req ))) { prev = wine_server_ptr_handle( reply->previous ); - r.left = reply->old_rect.left; - r.top = reply->old_rect.top; - r.right = reply->old_rect.right; - r.bottom = reply->old_rect.bottom; + r = wine_server_get_rect( reply->old_rect ); old_state = reply->old_state; hidden = reply->old_hide; } @@ -2262,10 +2259,7 @@ BOOL destroy_caret(void) if ((ret = !wine_server_call_err( req ))) { prev = wine_server_ptr_handle( reply->previous ); - r.left = reply->old_rect.left; - r.top = reply->old_rect.top; - r.right = reply->old_rect.right; - r.bottom = reply->old_rect.bottom; + r = wine_server_get_rect( reply->old_rect ); old_state = reply->old_state; hidden = reply->old_hide; } @@ -2352,10 +2346,7 @@ BOOL set_caret_pos( int x, int y ) if ((ret = !wine_server_call_err( req ))) { hwnd = wine_server_ptr_handle( reply->full_handle ); - r.left = reply->old_rect.left; - r.top = reply->old_rect.top; - r.right = reply->old_rect.right; - r.bottom = reply->old_rect.bottom; + r = wine_server_get_rect( reply->old_rect ); old_state = reply->old_state; hidden = reply->old_hide; } @@ -2394,10 +2385,7 @@ BOOL WINAPI NtUserShowCaret( HWND hwnd ) if ((ret = !wine_server_call_err( req ))) { hwnd = wine_server_ptr_handle( reply->full_handle ); - r.left = reply->old_rect.left; - r.top = reply->old_rect.top; - r.right = reply->old_rect.right; - r.bottom = reply->old_rect.bottom; + r = wine_server_get_rect( reply->old_rect ); hidden = reply->old_hide; } } @@ -2432,10 +2420,7 @@ BOOL WINAPI NtUserHideCaret( HWND hwnd ) if ((ret = !wine_server_call_err( req ))) { hwnd = wine_server_ptr_handle( reply->full_handle ); - r.left = reply->old_rect.left; - r.top = reply->old_rect.top; - r.right = reply->old_rect.right; - r.bottom = reply->old_rect.bottom; + r = wine_server_get_rect( reply->old_rect ); old_state = reply->old_state; hidden = reply->old_hide; } @@ -2467,10 +2452,7 @@ void toggle_caret( HWND hwnd ) if ((ret = !wine_server_call( req ))) { hwnd = wine_server_ptr_handle( reply->full_handle ); - r.left = reply->old_rect.left; - r.top = reply->old_rect.top; - r.right = reply->old_rect.right; - r.bottom = reply->old_rect.bottom; + r = wine_server_get_rect( reply->old_rect ); hidden = reply->old_hide; } } @@ -2550,10 +2532,7 @@ BOOL clip_fullscreen_window( HWND hwnd, BOOL reset ) SERVER_START_REQ( set_cursor ) { req->flags = SET_CURSOR_CLIP | SET_CURSOR_FSCLIP; - req->clip.left = monitor_info.rcMonitor.left; - req->clip.top = monitor_info.rcMonitor.top; - req->clip.right = monitor_info.rcMonitor.right; - req->clip.bottom = monitor_info.rcMonitor.bottom; + req->clip = wine_server_rectangle( monitor_info.rcMonitor ); ret = !wine_server_call( req ); } SERVER_END_REQ; @@ -2584,12 +2563,7 @@ BOOL get_clip_cursor( RECT *rect ) { req->flags = 0; if ((ret = !wine_server_call( req ))) - { - rect->left = reply->new_clip.left; - rect->top = reply->new_clip.top; - rect->right = reply->new_clip.right; - rect->bottom = reply->new_clip.bottom; - } + *rect = wine_server_get_rect( reply->new_clip ); } SERVER_END_REQ;
@@ -2664,10 +2638,7 @@ BOOL WINAPI NtUserClipCursor( const RECT *rect ) if (rect) { req->flags = SET_CURSOR_CLIP; - req->clip.left = rect->left; - req->clip.top = rect->top; - req->clip.right = rect->right; - req->clip.bottom = rect->bottom; + req->clip = wine_server_rectangle( *rect ); } else req->flags = SET_CURSOR_NOCLIP;
diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c index 877be545810..0f0fe22db33 100644 --- a/dlls/win32u/message.c +++ b/dlls/win32u/message.c @@ -2160,10 +2160,7 @@ BOOL WINAPI NtUserGetGUIThreadInfo( DWORD id, GUITHREADINFO *info ) info->hwndMenuOwner = wine_server_ptr_handle( reply->menu_owner ); info->hwndMoveSize = wine_server_ptr_handle( reply->move_size ); info->hwndCaret = wine_server_ptr_handle( reply->caret ); - info->rcCaret.left = reply->rect.left; - info->rcCaret.top = reply->rect.top; - info->rcCaret.right = reply->rect.right; - info->rcCaret.bottom = reply->rect.bottom; + info->rcCaret = wine_server_get_rect( reply->rect ); if (reply->menu_owner) info->flags |= GUI_INMENUMODE; if (reply->move_size) info->flags |= GUI_INMOVESIZE; if (reply->caret) info->flags |= GUI_CARETBLINKING; diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index 0122ac2e4f7..06067a95892 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -1667,20 +1667,8 @@ other_process: req->dpi = dpi; if ((ret = !wine_server_call_err( req ))) { - if (window_rect) - { - window_rect->left = reply->window.left; - window_rect->top = reply->window.top; - window_rect->right = reply->window.right; - window_rect->bottom = reply->window.bottom; - } - if (client_rect) - { - client_rect->left = reply->client.left; - client_rect->top = reply->client.top; - client_rect->right = reply->client.right; - client_rect->bottom = reply->client.bottom; - } + if (window_rect) *window_rect = wine_server_get_rect( reply->window ); + if (client_rect) *client_rect = wine_server_get_rect( reply->client ); } } SERVER_END_REQ; @@ -1743,10 +1731,7 @@ static NTSTATUS get_window_region( HWND hwnd, BOOL surface, HRGN *region, RECT * data->rdh.nCount = reply_size / sizeof(RECT); data->rdh.nRgnSize = reply_size; *region = NtGdiExtCreateRegion( NULL, data->rdh.dwSize + data->rdh.nRgnSize, data ); - visible->left = reply->visible_rect.left; - visible->top = reply->visible_rect.top; - visible->right = reply->visible_rect.right; - visible->bottom = reply->visible_rect.bottom; + *visible = wine_server_get_rect( reply->visible_rect ); } } else size = reply->total_size; @@ -1861,14 +1846,8 @@ static BOOL apply_window_pos( HWND hwnd, HWND insert_after, UINT swp_flags, req->handle = wine_server_user_handle( hwnd ); req->previous = wine_server_user_handle( insert_after ); req->swp_flags = swp_flags; - req->window.left = window_rect->left; - req->window.top = window_rect->top; - req->window.right = window_rect->right; - req->window.bottom = window_rect->bottom; - req->client.left = client_rect->left; - req->client.top = client_rect->top; - req->client.right = client_rect->right; - req->client.bottom = client_rect->bottom; + req->window = wine_server_rectangle( *window_rect ); + req->client = wine_server_rectangle( *client_rect ); if (!EqualRect( window_rect, &visible_rect ) || new_surface || valid_rects) { extra_rects[0] = extra_rects[1] = visible_rect; diff --git a/dlls/wineandroid.drv/window.c b/dlls/wineandroid.drv/window.c index 19900c7e509..5e095288f91 100644 --- a/dlls/wineandroid.drv/window.c +++ b/dlls/wineandroid.drv/window.c @@ -499,10 +499,7 @@ static int process_events( DWORD mask ) SERVER_START_REQ( update_window_zorder ) { req->window = wine_server_user_handle( event->data.motion.hwnd ); - req->rect.left = rect.left; - req->rect.top = rect.top; - req->rect.right = rect.right; - req->rect.bottom = rect.bottom; + req->rect = wine_server_rectangle( rect ); wine_server_call( req ); } SERVER_END_REQ; diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 3e9e0254c91..2bc80cea5e9 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -922,10 +922,7 @@ static BOOL X11DRV_Expose( HWND hwnd, XEvent *xev ) SERVER_START_REQ( update_window_zorder ) { req->window = wine_server_user_handle( hwnd ); - req->rect.left = abs_rect.left; - req->rect.top = abs_rect.top; - req->rect.right = abs_rect.right; - req->rect.bottom = abs_rect.bottom; + req->rect = wine_server_rectangle( abs_rect ); wine_server_call( req ); } SERVER_END_REQ; diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c index 7293480b635..1196986424d 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c @@ -564,10 +564,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU SERVER_START_REQ( update_window_zorder ) { req->window = wine_server_user_handle( hwnd ); - req->rect.left = rect.left; - req->rect.top = rect.top; - req->rect.right = rect.right; - req->rect.bottom = rect.bottom; + req->rect = wine_server_rectangle( rect ); wine_server_call( req ); } SERVER_END_REQ; diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index f2ffbebcc7c..925c5d7e61b 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -2001,10 +2001,7 @@ void X11DRV_SetDesktopWindow( HWND hwnd ) req->handle = wine_server_user_handle( hwnd ); req->previous = 0; req->swp_flags = SWP_NOZORDER; - req->window.left = rect.left; - req->window.top = rect.top; - req->window.right = rect.right; - req->window.bottom = rect.bottom; + req->window = wine_server_rectangle( rect ); req->client = req->window; wine_server_call( req ); } diff --git a/include/wine/server.h b/include/wine/server.h index 87b43c7e63f..081c71492fa 100644 --- a/include/wine/server.h +++ b/include/wine/server.h @@ -118,6 +118,32 @@ static inline void *wine_server_get_ptr( client_ptr_t ptr ) return (void *)(ULONG_PTR)ptr; }
+/* convert a server rectangle_t to a RECT */ +static inline RECT wine_server_get_rect( rectangle_t rectangle ) +{ + RECT rect = + { + .left = rectangle.left, + .top = rectangle.top, + .right = rectangle.right, + .bottom = rectangle.bottom, + }; + return rect; +} + +/* convert a RECT to a server rectangle_t */ +static inline rectangle_t wine_server_rectangle( RECT rect ) +{ + rectangle_t rectangle = + { + .left = rect.left, + .top = rect.top, + .right = rect.right, + .bottom = rect.bottom, + }; + return rectangle; +} +
/* macros for server requests */