From: Armin Novak Date: Thu, 5 Sep 2013 11:39:24 +0000 (+0200) Subject: Fixed thread handling. X-Git-Tag: 1.2.0-beta1+android7~186^2~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e828cef9813dc5be125bfa4692d2bd2f5a8b74f9;p=platform%2Fupstream%2Ffreerdp.git Fixed thread handling. --- diff --git a/server/X11/xf_peer.c b/server/X11/xf_peer.c index 7b08eff..de63973 100644 --- a/server/X11/xf_peer.c +++ b/server/X11/xf_peer.c @@ -21,6 +21,7 @@ #include "config.h" #endif +#include #include #include #include @@ -175,6 +176,17 @@ int xf_xshm_init(xfInfo* xfi) return 0; } +void xf_info_free(xfInfo *info) +{ + assert(NULL != info); + + if (info->display) + XCloseDisplay(info->display); + + freerdp_clrconv_free(info->clrconv); + free(info); +} + xfInfo* xf_info_init() { int i; @@ -313,6 +325,11 @@ void xf_peer_context_free(freerdp_peer* client, xfPeerContext* context) { if (context) { + xf_info_free(context->info); + + CloseHandle(context->updateReadyEvent); + CloseHandle(context->updateSentEvent); + Stream_Free(context->s, TRUE); rfx_context_free(context->rfx_context); } @@ -508,6 +525,8 @@ static void* xf_peer_main_loop(void* arg) struct timeval timeout; freerdp_peer* client = (freerdp_peer*) arg; + assert(NULL != client); + ZeroMemory(rfds, sizeof(rfds)); ZeroMemory(&timeout, sizeof(struct timeval)); @@ -598,6 +617,8 @@ static void* xf_peer_main_loop(void* arg) freerdp_peer_context_free(client); freerdp_peer_free(client); + ExitThread(0); + return NULL; }