Module: wine Branch: master Commit: 8b5e0bdf8b9db3ab19bbabdb2ce591f5fc876ac7 URL: https://source.winehq.org/git/wine.git/?a=commit;h=8b5e0bdf8b9db3ab19bbabdb2...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Aug 27 15:03:43 2020 +0200
server: Move setting current screen_buffer into a helper.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
server/console.c | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-)
diff --git a/server/console.c b/server/console.c index 2c2978fc0c..00ad37ef35 100644 --- a/server/console.c +++ b/server/console.c @@ -594,11 +594,14 @@ static void disconnect_console_server( struct console_server *server ) } }
-static void generate_sb_initial_events( struct console_input *console_input ) +static void set_active_screen_buffer( struct console_input *console_input, struct screen_buffer *screen_buffer ) { - struct screen_buffer *screen_buffer = console_input->active; struct condrv_renderer_event evt;
+ if (console_input->active == screen_buffer) return; + if (console_input->active) release_object( console_input->active ); + console_input->active = (struct screen_buffer *)grab_object( screen_buffer ); + evt.event = CONSOLE_RENDERER_SB_RESIZE_EVENT; evt.u.resize.width = screen_buffer->width; evt.u.resize.height = screen_buffer->height; @@ -689,11 +692,7 @@ static struct object *create_console_output( struct console_input *console_input memcpy( &screen_buffer->data[i * screen_buffer->width], screen_buffer->data, screen_buffer->width * sizeof(char_info_t) );
- if (!console_input->active) - { - console_input->active = (struct screen_buffer*)grab_object( screen_buffer ); - generate_sb_initial_events( console_input ); - } + if (!console_input->active) set_active_screen_buffer( console_input, screen_buffer ); return &screen_buffer->obj; }
@@ -1270,21 +1269,6 @@ static void screen_buffer_destroy( struct object *obj ) assert( obj->ops == &screen_buffer_ops );
list_remove( &screen_buffer->entry ); - - if (screen_buffer->input && screen_buffer->input->active == screen_buffer) - { - struct screen_buffer *sb; - - screen_buffer->input->active = NULL; - LIST_FOR_EACH_ENTRY( sb, &screen_buffer_list, struct screen_buffer, entry ) - { - if (sb->input == screen_buffer->input) - { - sb->input->active = sb; - break; - } - } - } if (screen_buffer->fd) release_object( screen_buffer->fd ); free( screen_buffer->data ); free( screen_buffer->font.face_name ); @@ -1958,12 +1942,7 @@ static int screen_buffer_ioctl( struct fd *fd, ioctl_code_t code, struct async * return 0; }
- if (screen_buffer != screen_buffer->input->active) - { - if (screen_buffer->input->active) release_object( screen_buffer->input->active ); - screen_buffer->input->active = (struct screen_buffer *)grab_object( screen_buffer ); - generate_sb_initial_events( screen_buffer->input ); - } + set_active_screen_buffer( screen_buffer->input, screen_buffer ); return 1;
case IOCTL_CONDRV_FILL_OUTPUT: