From bc602c3060692f3c6e9b1cca2a3eaa9299f4d6b6 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 11 Feb 2013 17:14:17 +0100 Subject: [PATCH] server: Return the window paint flags in the get_visible_region request. --- include/wine/server_protocol.h | 4 +++- server/protocol.def | 1 + server/request.h | 5 +++-- server/trace.c | 1 + server/window.c | 1 + 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 99bcfae9cc..8a8a0edb98 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -3415,8 +3415,10 @@ struct get_visible_region_reply user_handle_t top_win; rectangle_t top_rect; rectangle_t win_rect; + unsigned int paint_flags; data_size_t total_size; /* VARARG(region,rectangles); */ + char __pad_52[4]; }; @@ -5715,6 +5717,6 @@ union generic_reply struct set_suspend_context_reply set_suspend_context_reply; }; -#define SERVER_PROTOCOL_VERSION 438 +#define SERVER_PROTOCOL_VERSION 439 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/protocol.def b/server/protocol.def index 4038e481b5..7bb679a836 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -2460,6 +2460,7 @@ enum coords_relative user_handle_t top_win; /* top window to clip against */ rectangle_t top_rect; /* top window visible rect with screen coords */ rectangle_t win_rect; /* window rect in screen coords */ + unsigned int paint_flags; /* paint flags (from SET_WINPOS_* flags) */ data_size_t total_size; /* total size of the resulting region */ VARARG(region,rectangles); /* list of rectangles for the region (in screen coords) */ @END diff --git a/server/request.h b/server/request.h index f566e0d5f6..b1b816f2d1 100644 --- a/server/request.h +++ b/server/request.h @@ -1626,8 +1626,9 @@ C_ASSERT( sizeof(struct get_visible_region_request) == 24 ); C_ASSERT( FIELD_OFFSET(struct get_visible_region_reply, top_win) == 8 ); C_ASSERT( FIELD_OFFSET(struct get_visible_region_reply, top_rect) == 12 ); C_ASSERT( FIELD_OFFSET(struct get_visible_region_reply, win_rect) == 28 ); -C_ASSERT( FIELD_OFFSET(struct get_visible_region_reply, total_size) == 44 ); -C_ASSERT( sizeof(struct get_visible_region_reply) == 48 ); +C_ASSERT( FIELD_OFFSET(struct get_visible_region_reply, paint_flags) == 44 ); +C_ASSERT( FIELD_OFFSET(struct get_visible_region_reply, total_size) == 48 ); +C_ASSERT( sizeof(struct get_visible_region_reply) == 56 ); C_ASSERT( FIELD_OFFSET(struct get_surface_region_request, window) == 12 ); C_ASSERT( sizeof(struct get_surface_region_request) == 16 ); C_ASSERT( FIELD_OFFSET(struct get_surface_region_reply, visible_rect) == 8 ); diff --git a/server/trace.c b/server/trace.c index 41c5424701..c7a13d8563 100644 --- a/server/trace.c +++ b/server/trace.c @@ -2926,6 +2926,7 @@ static void dump_get_visible_region_reply( const struct get_visible_region_reply fprintf( stderr, " top_win=%08x", req->top_win ); dump_rectangle( ", top_rect=", &req->top_rect ); dump_rectangle( ", win_rect=", &req->win_rect ); + fprintf( stderr, ", paint_flags=%08x", req->paint_flags ); fprintf( stderr, ", total_size=%u", req->total_size ); dump_varargs_rectangles( ", region=", cur_size ); } diff --git a/server/window.c b/server/window.c index fbe522adf8..e141f934ce 100644 --- a/server/window.c +++ b/server/window.c @@ -2434,6 +2434,7 @@ DECL_HANDLER(get_visible_region) reply->win_rect.right = win->client_rect.right - win->client_rect.left; reply->win_rect.bottom = win->client_rect.bottom - win->client_rect.top; } + reply->paint_flags = win->paint_flags & PAINT_CLIENT_FLAGS; }