Different apps support and bug resolved

There was a bug that prevented the app from running again if it was
minimized. My solution is try to quit it before starting it again.
This commit is contained in:
s0ckz 2014-05-30 20:05:46 -03:00
parent 8e9d605248
commit 636c5f17f5
3 changed files with 49 additions and 19 deletions

View File

@ -134,7 +134,7 @@ public class NvConnection {
}
}
private boolean startSteamBigPicture() throws XmlPullParserException, IOException
private boolean startApp() throws XmlPullParserException, IOException
{
NvHTTP h = new NvHTTP(hostAddr, getMacAddressString(), localDeviceName);
@ -154,18 +154,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()) {
if (h.getCurrentGame() == app.getAppId() && !h.resumeApp()) {
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) {
@ -176,13 +179,34 @@ 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 {
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());
@ -190,8 +214,8 @@ public class NvConnection {
listener.displayMessage("Failed to launch application");
return false;
}
LimeLog.info("Launched new game session");
}
return true;
}
@ -247,7 +271,7 @@ public class NvConnection {
switch (currentStage)
{
case LAUNCH_APP:
success = startSteamBigPicture();
success = startApp();
break;
case RTSP_HANDSHAKE:

View File

@ -1,11 +1,13 @@
package com.limelight.nvstream;
public class StreamConfiguration {
private String app;
private int width, height;
private int refreshRate;
private int bitrate;
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;
@ -27,4 +29,8 @@ public class StreamConfiguration {
public int getBitrate() {
return bitrate;
}
public String getApp() {
return app;
}
}

View File

@ -109,12 +109,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;