From 94a26fb83166b4cd7fc1a7ec3c4af6195569a03c Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 26 Sep 2014 20:50:34 -0700 Subject: [PATCH 1/7] Force CPU decoding to low performance to make the experience less horrible --- src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java b/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java index 7521ad0c..76db5fb7 100644 --- a/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java +++ b/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java @@ -93,7 +93,7 @@ public class AndroidCpuDecoderRenderer implements VideoDecoderRenderer { public boolean setup(int width, int height, int redrawRate, Object renderTarget, int drFlags) { this.targetFps = redrawRate; - int perfLevel = findOptimalPerformanceLevel(); + int perfLevel = LOW_PERF; //findOptimalPerformanceLevel(); int threadCount; int avcFlags = 0; From a3106bffca1ce1e0e53458c476e098d10a6f7b13 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 27 Sep 2014 15:42:12 -0700 Subject: [PATCH 2/7] Speed up initial discovery by generating a new keypair while discovering machines. --- src/com/limelight/PcView.java | 4 ++++ .../limelight/binding/crypto/AndroidCryptoProvider.java | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/com/limelight/PcView.java b/src/com/limelight/PcView.java index ae22092a..04dbf8ab 100644 --- a/src/com/limelight/PcView.java +++ b/src/com/limelight/PcView.java @@ -6,6 +6,7 @@ import java.net.InetAddress; import java.net.UnknownHostException; import com.limelight.binding.PlatformBinding; +import com.limelight.binding.crypto.AndroidCryptoProvider; import com.limelight.computers.ComputerManagerListener; import com.limelight.computers.ComputerManagerService; import com.limelight.nvstream.http.ComputerDetails; @@ -59,6 +60,9 @@ public class PcView extends Activity { // Start updates startComputerUpdates(); + + // Force a keypair to be generated early to avoid discovery delays + new AndroidCryptoProvider(PcView.this).getClientCertificate(); } }.start(); } diff --git a/src/com/limelight/binding/crypto/AndroidCryptoProvider.java b/src/com/limelight/binding/crypto/AndroidCryptoProvider.java index 4df63dca..242749f3 100644 --- a/src/com/limelight/binding/crypto/AndroidCryptoProvider.java +++ b/src/com/limelight/binding/crypto/AndroidCryptoProvider.java @@ -51,6 +51,8 @@ public class AndroidCryptoProvider implements LimelightCryptoProvider { private RSAPrivateKey key; private byte[] pemCertBytes; + private static Object globalCryptoLock = new Object(); + static { // Install the Bouncy Castle provider Security.addProvider(new BouncyCastleProvider()); @@ -208,7 +210,7 @@ public class AndroidCryptoProvider implements LimelightCryptoProvider { public X509Certificate getClientCertificate() { // Use a lock here to ensure only one guy will be generating or loading // the certificate and key at a time - synchronized (this) { + synchronized (globalCryptoLock) { // Return a loaded cert if we have one if (cert != null) { return cert; @@ -235,7 +237,7 @@ public class AndroidCryptoProvider implements LimelightCryptoProvider { public RSAPrivateKey getClientPrivateKey() { // Use a lock here to ensure only one guy will be generating or loading // the certificate and key at a time - synchronized (this) { + synchronized (globalCryptoLock) { // Return a loaded key if we have one if (key != null) { return key; @@ -260,7 +262,7 @@ public class AndroidCryptoProvider implements LimelightCryptoProvider { } public byte[] getPemEncodedClientCertificate() { - synchronized (this) { + synchronized (globalCryptoLock) { // Call our helper function to do the cert loading/generation for us getClientCertificate(); From 36664133f8b3b7b823a41e6fa9e955f3dc5cd43c Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 27 Sep 2014 15:43:43 -0700 Subject: [PATCH 3/7] Speed up PC polling by only trying once if the remote and local IPs are the same --- src/com/limelight/computers/ComputerManagerService.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/com/limelight/computers/ComputerManagerService.java b/src/com/limelight/computers/ComputerManagerService.java index c82596c0..009cc143 100644 --- a/src/com/limelight/computers/ComputerManagerService.java +++ b/src/com/limelight/computers/ComputerManagerService.java @@ -342,7 +342,7 @@ public class ComputerManagerService extends Service { polledDetails = tryPollIp(details.remoteIp); } - if (polledDetails == null) { + if (polledDetails == null && !details.localIp.equals(details.remoteIp)) { // Failed, so let's try the fallback if (!localFirst) { polledDetails = tryPollIp(details.localIp); @@ -356,7 +356,8 @@ public class ComputerManagerService extends Service { polledDetails.reachability = !localFirst ? ComputerDetails.Reachability.LOCAL : ComputerDetails.Reachability.REMOTE; } - } else { + } + else if (polledDetails != null) { polledDetails.reachability = localFirst ? ComputerDetails.Reachability.LOCAL : ComputerDetails.Reachability.REMOTE; } From 31b0bcf0414b69d15cfb5b97757337f6d126a56d Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 27 Sep 2014 15:45:37 -0700 Subject: [PATCH 4/7] Fix manually adding PCs --- src/com/limelight/computers/ComputerManagerService.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/limelight/computers/ComputerManagerService.java b/src/com/limelight/computers/ComputerManagerService.java index 009cc143..456d32df 100644 --- a/src/com/limelight/computers/ComputerManagerService.java +++ b/src/com/limelight/computers/ComputerManagerService.java @@ -402,7 +402,12 @@ public class ComputerManagerService extends Service { public void run() { boolean newPc = (details.name == null); - if (stopped) { + // This is called from addComputerManually() where we don't + // want to block the initial poll if polling is disabled, so + // we explicitly let this through if we've never seen this + // PC before. This path won't be triggered normally when polling + // is disabled because the mDNS discovery is stopped. + if (stopped && !newPc) { return; } From 080dcd92d706873d834a8ec8a0c3bb605c2ccf83 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 27 Sep 2014 15:45:54 -0700 Subject: [PATCH 5/7] Suppress a warning --- src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java b/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java index 76db5fb7..498bb114 100644 --- a/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java +++ b/src/com/limelight/binding/video/AndroidCpuDecoderRenderer.java @@ -38,6 +38,7 @@ public class AndroidCpuDecoderRenderer implements VideoDecoderRenderer { private int cpuCount = Runtime.getRuntime().availableProcessors(); + @SuppressWarnings("unused") private int findOptimalPerformanceLevel() { StringBuilder cpuInfo = new StringBuilder(); BufferedReader br = null; From 6677949614fadfe3f15ef3891698faca1ff5a237 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 27 Sep 2014 15:49:59 -0700 Subject: [PATCH 6/7] Update common jar --- libs/limelight-common.jar | Bin 418249 -> 418126 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/libs/limelight-common.jar b/libs/limelight-common.jar index dafe56adc217d136f53d51e3992a499f887b7549..78eb0bd489e45d4b0885c2a9b5f9f06f257aaa52 100644 GIT binary patch delta 30620 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̞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 W*!-9RU8d_KvdOT`a$#d&U;qHY(aJ^u From 13b80eda8a0739580a8cab553bba7be9365091c0 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 27 Sep 2014 19:32:10 -0700 Subject: [PATCH 7/7] Use a common cleanup function and stop input capturing after closing the connection to allow captured devices to accept the "Connection Failed" dialog --- src/com/limelight/Game.java | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/com/limelight/Game.java b/src/com/limelight/Game.java index 61b30507..4ba30d7a 100644 --- a/src/com/limelight/Game.java +++ b/src/com/limelight/Game.java @@ -286,7 +286,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, Dialog.closeDialogs(); displayedFailureDialog = true; - conn.stop(); + stopConnection(); int averageEndToEndLat = decoderRenderer.getAverageEndToEndLatency(); int averageDecoderLat = decoderRenderer.getAverageDecoderLatency(); @@ -304,10 +304,6 @@ public class Game extends Activity implements SurfaceHolder.Callback, if (message != null) { Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } - - if (evdevWatcher != null) { - evdevWatcher.shutdown(); - } finish(); } @@ -572,6 +568,19 @@ public class Game extends Activity implements SurfaceHolder.Callback, @Override public void stageComplete(Stage stage) { } + + private void stopConnection() { + if (connecting || connected) { + conn.stop(); + connecting = connected = false; + } + + // Close the Evdev watcher to allow use of captured input devices + if (evdevWatcher != null) { + evdevWatcher.shutdown(); + evdevWatcher = null; + } + } @Override public void stageFailed(Stage stage) { @@ -583,8 +592,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, if (!displayedFailureDialog) { displayedFailureDialog = true; Dialog.displayDialog(this, "Connection Error", "Starting "+stage.getName()+" failed", true); - conn.stop(); - connecting = false; + stopConnection(); } } @@ -593,9 +601,9 @@ public class Game extends Activity implements SurfaceHolder.Callback, if (!displayedFailureDialog) { displayedFailureDialog = true; e.printStackTrace(); + Dialog.displayDialog(this, "Connection Terminated", "The connection failed unexpectedly", true); - conn.stop(); - connected = false; + stopConnection(); } } @@ -657,8 +665,7 @@ public class Game extends Activity implements SurfaceHolder.Callback, @Override public void surfaceDestroyed(SurfaceHolder holder) { if (connected) { - conn.stop(); - connected = false; + stopConnection(); } }