From 5d90950591e04550d3102cae023b4c2cdbb75279 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 21 May 2017 12:25:04 -0700 Subject: [PATCH] Use LiInterruptConnection to prevent long waits for RTSP timeout --- .../src/main/java/com/limelight/nvstream/NvConnection.java | 3 +++ .../src/main/java/com/limelight/nvstream/jni/MoonBridge.java | 2 ++ .../src/main/jni/moonlight-core/moonlight-common-c | 2 +- moonlight-common/src/main/jni/moonlight-core/simplejni.c | 5 +++++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/moonlight-common/src/main/java/com/limelight/nvstream/NvConnection.java b/moonlight-common/src/main/java/com/limelight/nvstream/NvConnection.java index ac80d2c1..7d4132b7 100644 --- a/moonlight-common/src/main/java/com/limelight/nvstream/NvConnection.java +++ b/moonlight-common/src/main/java/com/limelight/nvstream/NvConnection.java @@ -63,6 +63,9 @@ public class NvConnection { } public void stop() { + // Interrupt any pending connection. This is thread-safe. + MoonBridge.interruptConnection(); + // Moonlight-core is not thread-safe with respect to connection start and stop, so // we must not invoke that functionality in parallel. synchronized (MoonBridge.class) { diff --git a/moonlight-common/src/main/java/com/limelight/nvstream/jni/MoonBridge.java b/moonlight-common/src/main/java/com/limelight/nvstream/jni/MoonBridge.java index 9511b962..13ba2667 100644 --- a/moonlight-common/src/main/java/com/limelight/nvstream/jni/MoonBridge.java +++ b/moonlight-common/src/main/java/com/limelight/nvstream/jni/MoonBridge.java @@ -141,6 +141,8 @@ public class MoonBridge { public static native void stopConnection(); + public static native void interruptConnection(); + public static native void sendMouseMove(short deltaX, short deltaY); public static native void sendMouseButton(byte buttonEvent, byte mouseButton); diff --git a/moonlight-common/src/main/jni/moonlight-core/moonlight-common-c b/moonlight-common/src/main/jni/moonlight-core/moonlight-common-c index 2d7bf5be..92951e13 160000 --- a/moonlight-common/src/main/jni/moonlight-core/moonlight-common-c +++ b/moonlight-common/src/main/jni/moonlight-core/moonlight-common-c @@ -1 +1 @@ -Subproject commit 2d7bf5be828492c2a18b4ea84b526fde60273520 +Subproject commit 92951e1309a4c1f49f1a965eefff367912a07558 diff --git a/moonlight-common/src/main/jni/moonlight-core/simplejni.c b/moonlight-common/src/main/jni/moonlight-core/simplejni.c index 02047698..f323f7a4 100644 --- a/moonlight-common/src/main/jni/moonlight-core/simplejni.c +++ b/moonlight-common/src/main/jni/moonlight-core/simplejni.c @@ -45,6 +45,11 @@ Java_com_limelight_nvstream_jni_MoonBridge_stopConnection(JNIEnv *env, jobject c LiStopConnection(); } +JNIEXPORT void JNICALL +Java_com_limelight_nvstream_jni_MoonBridge_interruptConnection(JNIEnv *env, jobject class) { + LiInterruptConnection(); +} + JNIEXPORT jstring JNICALL Java_com_limelight_nvstream_jni_MoonBridge_getStageName(JNIEnv *env, jobject class, jint stage) { return (*env)->NewStringUTF(env, LiGetStageName(stage));