Fixed android shutdown crash.
authorArmin Novak <anovak@thinstuff.com>
Fri, 27 Sep 2013 09:41:25 +0000 (11:41 +0200)
committerArmin Novak <anovak@thinstuff.com>
Fri, 27 Sep 2013 09:41:25 +0000 (11:41 +0200)
Added new permissions required for microphone redirection.
Fixed JNI call for microphone redirection.

client/Android/FreeRDPCore/.classpath
client/Android/FreeRDPCore/AndroidManifest.xml.cmake
client/Android/FreeRDPCore/jni/android_freerdp.c
client/Android/aFreeRDP/.classpath

index 5176974..aacc761 100644 (file)
@@ -3,7 +3,5 @@
        <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
-       <classpathentry kind="src" path="src"/>
-       <classpathentry kind="src" path="gen"/>
-       <classpathentry kind="output" path="bin/classes"/>
+       <classpathentry kind="output" path="bin"/>
 </classpath>
index f21e53c..a9adc61 100644 (file)
@@ -11,6 +11,8 @@
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
+  <uses-permission android:name="android.permission.RECORD_AUDIO"/>
        <supports-screens android:anyDensity="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" />
 
        <application>
index 7b89e73..9c5f208 100644 (file)
@@ -12,6 +12,7 @@
 #include "config.h"
 #endif
 
+#include <assert.h>
 #include <jni.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -262,6 +263,8 @@ int android_freerdp_run(freerdp* instance)
        int select_status;
        struct timeval timeout;
 
+       assert(instance);
+
        memset(rfds, 0, sizeof(rfds));
        memset(wfds, 0, sizeof(wfds));
 
@@ -329,6 +332,9 @@ int android_freerdp_run(freerdp* instance)
                                break;
                        }
                }
+               
+               if (freerdp_shall_disconnect(instance))
+                       break;
 
                if (freerdp_check_fds(instance) != TRUE)
                {
@@ -365,6 +371,9 @@ void* android_thread_func(void* param)
        struct thread_data* data;
        data = (struct thread_data*) param;
 
+       assert(data);
+       assert(data->instance);
+
        freerdp* instance = data->instance;
        android_freerdp_run(instance);
        free(data);
@@ -409,6 +418,10 @@ JNIEXPORT jboolean JNICALL jni_freerdp_connect(JNIEnv *env, jclass cls, jint ins
        struct thread_data* data = (struct thread_data*) malloc(sizeof(struct thread_data));
        data->instance = inst;
 
+       assert(inst);
+       assert(data);
+       assert(inst->context);
+
        androidContext* ctx = (androidContext*)inst->context;
        pthread_create(&ctx->thread, 0, android_thread_func, data);
 
@@ -685,7 +698,7 @@ JNIEXPORT void JNICALL jni_freerdp_set_microphone_redirection(JNIEnv *env,
        p = malloc(sizeof(char*));
        p[0] = "audin";
 
-       freerdp_client_add_static_channel(settings, count, p);
+       freerdp_client_add_dynamic_channel(settings, count, p);
 
        free(p);
 }
index 5176974..aacc761 100644 (file)
@@ -3,7 +3,5 @@
        <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
        <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
-       <classpathentry kind="src" path="src"/>
-       <classpathentry kind="src" path="gen"/>
-       <classpathentry kind="output" path="bin/classes"/>
+       <classpathentry kind="output" path="bin"/>
 </classpath>