[1/3] server: Add field for window display affinity.

Andrew Wesie awesie at gmail.com
Fri Jun 23 18:01:52 CDT 2017


Signed-off-by: Andrew Wesie <awesie at gmail.com>
---
 include/wine/server_protocol.h | 9 ++++++---
 server/protocol.def            | 3 +++
 server/request.h               | 4 +++-
 server/window.c                | 4 ++++
 4 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index d31579c..f442a94 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -47,7 +47,7 @@ struct reply_header
 
 struct request_max_size
 {
-    int pad[16];
+    int pad[18];
 };
 
 #define FIRST_USER_HANDLE 0x0020
@@ -3465,6 +3465,8 @@ struct set_window_info_request
     int            extra_offset;
     data_size_t    extra_size;
     lparam_t       extra_value;
+    unsigned int   affinity;
+    char __pad_68[4];
 };
 struct set_window_info_reply
 {
@@ -3475,7 +3477,7 @@ struct set_window_info_reply
     lparam_t       old_user_data;
     lparam_t       old_extra_value;
     unsigned int   old_id;
-    char __pad_44[4];
+    unsigned int   old_affinity;
 };
 #define SET_WIN_STYLE     0x01
 #define SET_WIN_EXSTYLE   0x02
@@ -3484,6 +3486,7 @@ struct set_window_info_reply
 #define SET_WIN_USERDATA  0x10
 #define SET_WIN_EXTRA     0x20
 #define SET_WIN_UNICODE   0x40
+#define SET_WIN_AFFINITY  0x80
 
 
 
@@ -6419,6 +6422,6 @@ union generic_reply
     struct terminate_job_reply terminate_job_reply;
 };
 
-#define SERVER_PROTOCOL_VERSION 533
+#define SERVER_PROTOCOL_VERSION 534
 
 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/server/protocol.def b/server/protocol.def
index 1f88c6a..d53df49 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -2506,6 +2506,7 @@ enum message_type
     int            extra_offset;  /* offset to set in extra bytes */
     data_size_t    extra_size;    /* size to set in extra bytes */
     lparam_t       extra_value;   /* value to set in extra bytes */
+    unsigned int   affinity;      /* window display affinity */
 @REPLY
     unsigned int   old_style;     /* old window style */
     unsigned int   old_ex_style;  /* old window extended style */
@@ -2513,6 +2514,7 @@ enum message_type
     lparam_t       old_user_data; /* old user-specific data */
     lparam_t       old_extra_value; /* old value in extra bytes */
     unsigned int   old_id;        /* old window id */
+    unsigned int   old_affinity;  /* old window display affinity */
 @END
 #define SET_WIN_STYLE     0x01
 #define SET_WIN_EXSTYLE   0x02
@@ -2521,6 +2523,7 @@ enum message_type
 #define SET_WIN_USERDATA  0x10
 #define SET_WIN_EXTRA     0x20
 #define SET_WIN_UNICODE   0x40
+#define SET_WIN_AFFINITY  0x80
 
 
 /* Set the parent of a window */
diff --git a/server/request.h b/server/request.h
index 30d2234..d51085a 100644
--- a/server/request.h
+++ b/server/request.h
@@ -1674,13 +1674,15 @@ C_ASSERT( FIELD_OFFSET(struct set_window_info_request, user_data) == 40 );
 C_ASSERT( FIELD_OFFSET(struct set_window_info_request, extra_offset) == 48 );
 C_ASSERT( FIELD_OFFSET(struct set_window_info_request, extra_size) == 52 );
 C_ASSERT( FIELD_OFFSET(struct set_window_info_request, extra_value) == 56 );
-C_ASSERT( sizeof(struct set_window_info_request) == 64 );
+C_ASSERT( FIELD_OFFSET(struct set_window_info_request, affinity) == 64 );
+C_ASSERT( sizeof(struct set_window_info_request) == 72 );
 C_ASSERT( FIELD_OFFSET(struct set_window_info_reply, old_style) == 8 );
 C_ASSERT( FIELD_OFFSET(struct set_window_info_reply, old_ex_style) == 12 );
 C_ASSERT( FIELD_OFFSET(struct set_window_info_reply, old_instance) == 16 );
 C_ASSERT( FIELD_OFFSET(struct set_window_info_reply, old_user_data) == 24 );
 C_ASSERT( FIELD_OFFSET(struct set_window_info_reply, old_extra_value) == 32 );
 C_ASSERT( FIELD_OFFSET(struct set_window_info_reply, old_id) == 40 );
+C_ASSERT( FIELD_OFFSET(struct set_window_info_reply, old_affinity) == 44 );
 C_ASSERT( sizeof(struct set_window_info_reply) == 48 );
 C_ASSERT( FIELD_OFFSET(struct set_parent_request, handle) == 12 );
 C_ASSERT( FIELD_OFFSET(struct set_parent_request, parent) == 16 );
diff --git a/server/window.c b/server/window.c
index f35d6f6..6d83a1b 100644
--- a/server/window.c
+++ b/server/window.c
@@ -83,6 +83,7 @@ struct window
     unsigned int     color_key;       /* color key for a layered window */
     unsigned int     alpha;           /* alpha value for a layered window */
     unsigned int     layered_flags;   /* flags for a layered window */
+    unsigned int     affinity;        /* window display affinity */
     lparam_t         user_data;       /* user-specific data */
     WCHAR           *text;            /* window caption text */
     unsigned int     paint_flags;     /* various painting flags */
@@ -485,6 +486,7 @@ static struct window *create_window( struct window *parent, struct window *owner
     win->is_unicode     = 1;
     win->is_linked      = 0;
     win->is_layered     = 0;
+    win->affinity       = 0;
     win->user_data      = 0;
     win->text           = NULL;
     win->paint_flags    = 0;
@@ -2072,6 +2074,7 @@ DECL_HANDLER(set_window_info)
     reply->old_id        = win->id;
     reply->old_instance  = win->instance;
     reply->old_user_data = win->user_data;
+    reply->old_affinity  = win->affinity;
     if (req->flags & SET_WIN_STYLE) win->style = req->style;
     if (req->flags & SET_WIN_EXSTYLE)
     {
@@ -2084,6 +2087,7 @@ DECL_HANDLER(set_window_info)
     if (req->flags & SET_WIN_INSTANCE) win->instance = req->instance;
     if (req->flags & SET_WIN_UNICODE) win->is_unicode = req->is_unicode;
     if (req->flags & SET_WIN_USERDATA) win->user_data = req->user_data;
+    if (req->flags & SET_WIN_AFFINITY) win->affinity = req->affinity;
     if (req->flags & SET_WIN_EXTRA) memcpy( win->extra_bytes + req->extra_offset,
                                             &req->extra_value, req->extra_size );
 
-- 
2.7.4




More information about the wine-patches mailing list