diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 99bcfae9cc2..8a8a0edb987 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 4038e481b59..7bb679a836e 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 f566e0d5f6b..b1b816f2d1c 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 41c54247014..c7a13d85630 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 fbe522adf83..e141f934cef 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; }