diff --git a/xrdp/xrdp_encoder.c b/xrdp/xrdp_encoder.c index b4840b09..c2892b76 100644 --- a/xrdp/xrdp_encoder.c +++ b/xrdp/xrdp_encoder.c @@ -470,12 +470,12 @@ process_enc_rfx(struct xrdp_encoder *self, XRDP_ENC_DATA *enc) tc_mutex_lock(mutex); fifo_add_item(fifo_processed, enc_done); tc_mutex_unlock(mutex); - /* signal completion for main thread */ - g_set_wait_obj(event_processed); - } while (!finished); + /* signal completion for main thread */ + g_set_wait_obj(event_processed); + return 0; } #endif diff --git a/xrdp/xrdp_process.c b/xrdp/xrdp_process.c index bf0555d6..c40613dc 100644 --- a/xrdp/xrdp_process.c +++ b/xrdp/xrdp_process.c @@ -306,6 +306,8 @@ xrdp_process_main_loop(struct xrdp_process *self) } /* Run end in module */ xrdp_process_mod_end(self); + xrdp_wm_delete(self->wm); + self->wm = NULL; libxrdp_exit(self->session); self->session = 0; self->status = -1;