Jacek Caban : server: Move setting current screen_buffer into a helper.
Alexandre Julliard
julliard at winehq.org
Thu Aug 27 15:26:49 CDT 2020
Module: wine
Branch: master
Commit: 8b5e0bdf8b9db3ab19bbabdb2ce591f5fc876ac7
URL: https://source.winehq.org/git/wine.git/?a=commit;h=8b5e0bdf8b9db3ab19bbabdb2ce591f5fc876ac7
Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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:
More information about the wine-cvs
mailing list