From f2aea91ccfc547ab5e589b2fe8d40ef556fb60d3 Mon Sep 17 00:00:00 2001 From: Martin Fleisz Date: Wed, 22 May 2013 01:48:43 -0700 Subject: [PATCH] Android/iOS: Fixes for using RemoteFX with Bitmap Cache V3 --- .../Android/FreeRDPCore/jni/android_freerdp.c | 21 ++++++++++++++----- client/iOS/Models/RDPSession.m | 9 +++++--- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/client/Android/FreeRDPCore/jni/android_freerdp.c b/client/Android/FreeRDPCore/jni/android_freerdp.c index 51a6a4695..2d8ea7f8b 100644 --- a/client/Android/FreeRDPCore/jni/android_freerdp.c +++ b/client/Android/FreeRDPCore/jni/android_freerdp.c @@ -258,6 +258,8 @@ int android_freerdp_run(freerdp* instance) void* wfds[32]; fd_set rfds_set; fd_set wfds_set; + int select_status; + struct timeval timeout; memset(rfds, 0, sizeof(rfds)); memset(wfds, 0, sizeof(wfds)); @@ -269,7 +271,7 @@ int android_freerdp_run(freerdp* instance) } ((androidContext*)instance->context)->is_connected = TRUE; - while (1) + while (!freerdp_shall_disconnect(instance)) { rcount = 0; wcount = 0; @@ -307,7 +309,14 @@ int android_freerdp_run(freerdp* instance) if (max_fds == 0) break; - if (select(max_fds + 1, &rfds_set, &wfds_set, NULL, NULL) == -1) + timeout.tv_sec = 1; + timeout.tv_usec = 0; + + select_status = select(max_fds + 1, &rfds_set, NULL, NULL, &timeout); + + if (select_status == 0) + continue; + else if (select_status == -1) { /* these are not really errors */ if (!((errno == EAGAIN) || @@ -495,9 +504,6 @@ JNIEXPORT void JNICALL jni_freerdp_set_connection_info(JNIEnv *env, jclass cls, settings->ConsoleSession = (console == JNI_TRUE) ? TRUE : FALSE; settings->SoftwareGdi = TRUE; - - /* enable NSCodec */ - settings->NSCodec = TRUE; settings->BitmapCacheV3Enabled = TRUE; switch ((int) security) @@ -561,6 +567,11 @@ JNIEXPORT void JNICALL jni_freerdp_set_performance_flags( settings->LargePointerFlag = TRUE; settings->FrameMarkerCommandEnabled = TRUE; } + else + { + /* enable NSCodec if we don't use remotefx */ + settings->NSCodec = TRUE; + } /* store performance settings */ if (disableWallpaper == JNI_TRUE) diff --git a/client/iOS/Models/RDPSession.m b/client/iOS/Models/RDPSession.m index d43f27959..df924e29f 100644 --- a/client/iOS/Models/RDPSession.m +++ b/client/iOS/Models/RDPSession.m @@ -101,9 +101,12 @@ NSString* TSXSessionDidFailToConnectNotification = @"TSXSessionDidFailToConnect" settings->FrameMarkerCommandEnabled = TRUE; settings->FrameAcknowledge = 10; } - - // enable NSCodec - settings->NSCodec = TRUE; + else + { + // enable NSCodec if remotefx is not used + settings->NSCodec = TRUE; + } + settings->BitmapCacheV3Enabled = TRUE; // Performance flags