This looks like a mistake and it could explain and hopefully fix https://bugs.winehq.org/show_bug.cgi?id=56406.
From: Rémi Bernon rbernon@codeweavers.com
--- server/winstation.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/server/winstation.c b/server/winstation.c index 4672cf65e56..3af4c365ec3 100644 --- a/server/winstation.c +++ b/server/winstation.c @@ -349,6 +349,8 @@ static void desktop_destroy( struct object *obj ) struct desktop *desktop = (struct desktop *)obj; struct winstation *winstation = desktop->winstation;
+ list_remove( &desktop->entry ); + if (desktop == winstation->input_desktop) { struct desktop *other, *found = NULL; @@ -363,7 +365,6 @@ static void desktop_destroy( struct object *obj ) if (desktop->msg_window) free_window_handle( desktop->msg_window ); if (desktop->global_hooks) release_object( desktop->global_hooks ); if (desktop->close_timeout) remove_timeout_user( desktop->close_timeout ); - list_remove( &desktop->entry ); release_object( desktop->winstation ); }