[PATCH 2/5] server: Add support for additional fields in get_console_output_info.

Gijs Vermeulen gijsvrm at codeweavers.com
Wed Sep 4 07:42:40 CDT 2019


Signed-off-by: Gijs Vermeulen <gijsvrm at codeweavers.com>
---
 server/console.c    | 14 ++++++++++++--
 server/protocol.def |  4 ++++
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/server/console.c b/server/console.c
index e93dec2501..4500e23e13 100644
--- a/server/console.c
+++ b/server/console.c
@@ -1745,6 +1745,8 @@ DECL_HANDLER(set_console_output_info)
 DECL_HANDLER(get_console_output_info)
 {
     struct screen_buffer *screen_buffer;
+    void *data;
+    data_size_t total;
 
     if ((screen_buffer = (struct screen_buffer *)get_handle_obj( current->process, req->handle,
                                                                  FILE_READ_PROPERTIES, &screen_buffer_ops)))
@@ -1765,8 +1767,16 @@ DECL_HANDLER(get_console_output_info)
         reply->max_height     = screen_buffer->max_height;
         reply->font_width     = screen_buffer->font.width;
         reply->font_height    = screen_buffer->font.height;
-        set_reply_data( screen_buffer->color_map,
-                        min( sizeof(screen_buffer->color_map), get_reply_max_size() ));
+        reply->font_weight    = screen_buffer->font.weight;
+        reply->font_pitch_family = screen_buffer->font.pitch_family;
+        reply->face_namelen   = screen_buffer->font.face_name ? strlenW( screen_buffer->font.face_name ) * sizeof(WCHAR) : 0;
+        total = min( reply->face_namelen + sizeof(screen_buffer->color_map), get_reply_max_size() );
+        if (total)
+        {
+            data = set_reply_data_size( total );
+            if (screen_buffer->font.face_name) memcpy( data, screen_buffer->font.face_name, reply->face_namelen );
+            memcpy( (char *)data + reply->face_namelen, screen_buffer->color_map, total - reply->face_namelen );
+        }
         release_object( screen_buffer );
     }
 }
diff --git a/server/protocol.def b/server/protocol.def
index 6030a0152c..1f64395284 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -1671,6 +1671,10 @@ struct console_renderer_event
     short int    max_height;
     short int    font_width;    /* font size (width x height) */
     short int    font_height;
+    short int    font_weight;   /* font weight */
+    short int    font_pitch_family; /* font pitch & family */
+    data_size_t  face_namelen;  /* length of face name in bytes */
+    VARARG(face_name,unicode_str,face_namelen); /* font face name */
     VARARG(colors,uints);       /* color table */
 @END
 
-- 
2.23.0




More information about the wine-devel mailing list