From 7a68fcf62634c35e56bb83d82409a33c28d6bb03 Mon Sep 17 00:00:00 2001 From: Jay Sorg Date: Mon, 1 Oct 2012 11:08:13 -0700 Subject: [PATCH 1/2] win32: fix for 100% cpu, reset event --- libfreerdp/core/transport.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libfreerdp/core/transport.c b/libfreerdp/core/transport.c index c75b544f6..1073eb95f 100644 --- a/libfreerdp/core/transport.c +++ b/libfreerdp/core/transport.c @@ -390,6 +390,9 @@ int transport_check_fds(rdpTransport** ptransport) STREAM* received; rdpTransport* transport = *ptransport; +#ifdef _WIN32 + WSAResetEvent(transport->tcp->wsa_event); +#endif wait_obj_clear(transport->recv_event); status = transport_read_nonblocking(transport); From 7ef2ba88b468205fc958b9ae54e38daf15a4b6d1 Mon Sep 17 00:00:00 2001 From: Jay Sorg Date: Mon, 1 Oct 2012 12:09:28 -0700 Subject: [PATCH 2/2] win32: increate the MsgWaitForMultipleObjects timeout since the main loop is working right --- client/Windows/wfreerdp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/Windows/wfreerdp.c b/client/Windows/wfreerdp.c index 6bc8a59ea..17fc9a9ed 100644 --- a/client/Windows/wfreerdp.c +++ b/client/Windows/wfreerdp.c @@ -526,7 +526,7 @@ int wfreerdp_run(freerdp* instance) } /* do the wait */ - if (MsgWaitForMultipleObjects(fds_count, fds, FALSE, 1, QS_ALLINPUT) == WAIT_FAILED) + if (MsgWaitForMultipleObjects(fds_count, fds, FALSE, 1000, QS_ALLINPUT) == WAIT_FAILED) { printf("wfreerdp_run: WaitForMultipleObjects failed: 0x%04X\n", GetLastError()); break;