Merge branch 'master' of github.com:s0ckz/limelight-common

Conflicts:
	src/com/limelight/nvstream/StreamConfiguration.java
This commit is contained in:
Cameron Gutman 2014-06-29 12:25:10 -07:00
commit ef1f44f873
4 changed files with 53 additions and 21 deletions

View File

@ -1 +1,2 @@
*.class
/bin

View File

@ -160,7 +160,7 @@ public class NvConnection {
}
}
private boolean startSteamBigPicture() throws XmlPullParserException, IOException
private boolean startApp() throws XmlPullParserException, IOException
{
NvHTTP h = new NvHTTP(hostAddr, getMacAddressString(), localDeviceName, cryptoProvider);
@ -174,18 +174,21 @@ public class NvConnection {
return false;
}
NvApp app = h.getSteamApp();
NvApp app = h.getApp(config.getApp());
if (app == null) {
listener.displayMessage("Steam not found in GFE app list");
listener.displayMessage("The app " + config.getApp() + " is not in GFE app list");
return false;
}
// If there's a game running, resume it
if (h.getCurrentGame() != 0) {
try {
if (!h.resumeApp(riKey)) {
if (h.getCurrentGame() == app.getAppId() && !h.resumeApp(riKey)) {
listener.displayMessage("Failed to resume existing session");
return false;
} else if (h.getCurrentGame() != app.getAppId()) {
listener.displayMessage("Another app was running. Quitting it");
return quitAndLaunch(h, app);
}
} catch (GfeHttpResponseException e) {
if (e.getErrorCode() == 470) {
@ -196,22 +199,43 @@ public class NvConnection {
"device or the PC itself and try again. (Error code: "+e.getErrorCode()+")");
return false;
}
else {
else if (e.getErrorCode() == 525) {
listener.displayMessage("The application is minimized. Trying to quit it");
return quitAndLaunch(h, app);
} else {
throw e;
}
}
LimeLog.info("Resumed existing game session");
return true;
}
else {
// Launch the app since it's not running
int gameSessionId = h.launchApp(app.getAppId(), config.getWidth(),
config.getHeight(), config.getRefreshRate(), riKey);
if (gameSessionId == 0) {
listener.displayMessage("Failed to launch application");
return false;
}
LimeLog.info("Launched new game session");
return launchNotRunningApp(h, app);
}
}
protected boolean quitAndLaunch(NvHTTP h, NvApp app) throws IOException,
XmlPullParserException {
if (!h.quitApp()) {
listener.displayMessage("Failed to quit previous session! You must quit it manually");
return false;
} else {
return launchNotRunningApp(h, app);
}
}
private boolean launchNotRunningApp(NvHTTP h, NvApp app)
throws IOException, XmlPullParserException {
// Launch the app since it's not running
int gameSessionId = h.launchApp(app.getAppId(), config.getWidth(),
config.getHeight(), config.getRefreshRate(), riKey);
if (gameSessionId == 0) {
listener.displayMessage("Failed to launch application");
return false;
}
LimeLog.info("Launched new game session");
return true;
}
@ -265,7 +289,7 @@ public class NvConnection {
switch (currentStage)
{
case LAUNCH_APP:
success = startSteamBigPicture();
success = startApp();
break;
case RTSP_HANDSHAKE:

View File

@ -1,12 +1,14 @@
package com.limelight.nvstream;
public class StreamConfiguration {
private String app;
private int width, height;
private int refreshRate;
private int bitrate;
private int maxPacketSize;
public StreamConfiguration(int width, int height, int refreshRate, int bitrate) {
public StreamConfiguration(String app, int width, int height, int refreshRate, int bitrate) {
this.app = app;
this.width = width;
this.height = height;
this.refreshRate = refreshRate;
@ -14,7 +16,8 @@ public class StreamConfiguration {
this.maxPacketSize = 1024;
}
public StreamConfiguration(int width, int height, int refreshRate, int bitrate, int maxPacketSize) {
public StreamConfiguration(String app, int width, int height, int refreshRate, int bitrate, int maxPacketSize) {
this.app = app;
this.width = width;
this.height = height;
this.refreshRate = refreshRate;
@ -41,4 +44,8 @@ public class StreamConfiguration {
public int getMaxPacketSize() {
return maxPacketSize;
}
public String getApp() {
return app;
}
}

View File

@ -140,12 +140,12 @@ public class NvHTTP {
return Integer.parseInt(game);
}
public NvApp getSteamApp() throws IOException,
public NvApp getApp(String app) throws IOException,
XmlPullParserException {
LinkedList<NvApp> appList = getAppList();
for (NvApp app : appList) {
if (app.getAppName().equals("Steam")) {
return app;
for (NvApp appFromList : appList) {
if (appFromList.getAppName().equals(app)) {
return appFromList;
}
}
return null;