server/protocol.def and array types

Hugh McMaster hugh.mcmaster at masterindexing.com
Tue Sep 17 04:12:17 CDT 2013


I'm testing support for GetConsoleScreenBufferInfoEx.

At the moment, I've extended the screen_buffer struct in server/console.c to look like this:

struct screen_buffer
{
    struct object         obj;           /* object header */
    struct list           entry;         /* entry in list of all screen buffers */
    struct console_input *input;         /* associated console input */
    int                   mode;          /* output mode */
    int                   cursor_size;   /* size of cursor (percentage filled) */
    int                   cursor_visible;/* cursor visibility flag */
    int                   cursor_x;      /* position of cursor */
    int                   cursor_y;      /* position of cursor */
    int                   width;         /* size (w-h) of the screen buffer */
    int                   height;
    int                   max_width;     /* size (w-h) of the window given font size */
    int                   max_height;
    char_info_t          *data;          /* the data for each cell - a width x height matrix */
    unsigned short        attr;          /* default attribute for screen buffer */
    rectangle_t           win;           /* current visible window on the screen buffer *
					  * as seen in wineconsole */
    struct fd            *fd;            /* for bare console, attached output fd */
    unsigned short        popup_attr;    /* the console popup fill attribute */
    BOOL                  fullscreen;    /* indicates whether fullscreen mode is supported */
    COLORREF              colortable[16];/* an array of DWORD values */
};

In server/protocol.def I have:

@REQ(get_console_output_info)
    obj_handle_t handle;        /* handle to the console */
@REPLY
    short int    cursor_size;   /* size of cursor (percentage filled) */
    short int    cursor_visible;/* cursor visibility flag */
    short int    cursor_x;      /* position of cursor (x, y) */
    short int    cursor_y;
    short int    width;         /* width of the screen buffer */
    short int    height;        /* height of the screen buffer */
    short int    attr;          /* default attribute */
    short int    win_left;      /* window actually displayed by renderer */
    short int    win_top;       /* the rect area is expressed within the */
    short int    win_right;     /* boundaries of the screen buffer */
    short int    win_bottom;
    short int    max_width;     /* maximum size (width x height) for the window */
    short int    max_height;
    short int    popup_attr;    /* the console popup fill attribute */
    short int    fullscreen;    /* indicates whether fullscreen mode is supported */
--> type???      colortable;    /* a COLORREF array of DWORD values */
@END

While colortable is a COLORREF array, protocol.def does not allow types such as DWORD, COLORREF, etc.

What type should colortable be given to pass tools/make_requests?



More information about the wine-devel mailing list