mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2025-07-21 03:52:48 +00:00
Fix failure to quit games on GFE 3.10
This commit is contained in:
parent
a53444148e
commit
66536aa755
@ -433,7 +433,7 @@ public class NvHTTP {
|
|||||||
// has the semantics that its name would indicate. To contain the effects of this change as much
|
// has the semantics that its name would indicate. To contain the effects of this change as much
|
||||||
// as possible, we'll force the current game to zero if the server isn't in a streaming session.
|
// as possible, we'll force the current game to zero if the server isn't in a streaming session.
|
||||||
String serverState = getXmlString(serverInfo, "state");
|
String serverState = getXmlString(serverInfo, "state");
|
||||||
if (serverState != null && !serverState.endsWith("_SERVER_AVAILABLE")) {
|
if (serverState != null && serverState.endsWith("_SERVER_BUSY")) {
|
||||||
String game = getXmlString(serverInfo, "currentgame");
|
String game = getXmlString(serverInfo, "currentgame");
|
||||||
return Integer.parseInt(game);
|
return Integer.parseInt(game);
|
||||||
}
|
}
|
||||||
@ -442,19 +442,6 @@ public class NvHTTP {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isCurrentClient(String serverInfo) throws XmlPullParserException, IOException {
|
|
||||||
String currentClient = getXmlString(serverInfo, "CurrentClient");
|
|
||||||
if (currentClient != null) {
|
|
||||||
return !currentClient.equals("0");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// For versions of GFE that lack this field, we'll assume we are
|
|
||||||
// the current client. If we're not, we'll get a response error that
|
|
||||||
// will let us know.
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public NvApp getAppById(int appId) throws IOException, XmlPullParserException {
|
public NvApp getAppById(int appId) throws IOException, XmlPullParserException {
|
||||||
LinkedList<NvApp> appList = getAppList();
|
LinkedList<NvApp> appList = getAppList();
|
||||||
for (NvApp appFromList : appList) {
|
for (NvApp appFromList : appList) {
|
||||||
@ -638,16 +625,20 @@ public class NvHTTP {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean quitApp() throws IOException, XmlPullParserException {
|
public boolean quitApp() throws IOException, XmlPullParserException {
|
||||||
// First check if this client is allowed to quit the app. Newer GFE versions
|
String xmlStr = openHttpConnectionToString(baseUrlHttps + "/cancel?" + buildUniqueIdUuidString(), false);
|
||||||
// will just return success even if quitting fails if we're not the original requestor.
|
String cancel = getXmlString(xmlStr, "cancel");
|
||||||
if (!isCurrentClient(getServerInfo())) {
|
if (Integer.parseInt(cancel) == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Newer GFE versions will just return success even if quitting fails
|
||||||
|
// if we're not the original requestor.
|
||||||
|
if (getCurrentGame(getServerInfo()) != 0) {
|
||||||
// Generate a synthetic GfeResponseException letting the caller know
|
// Generate a synthetic GfeResponseException letting the caller know
|
||||||
// that they can't kill someone else's stream.
|
// that they can't kill someone else's stream.
|
||||||
throw new GfeHttpResponseException(599, "");
|
throw new GfeHttpResponseException(599, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
String xmlStr = openHttpConnectionToString(baseUrlHttps + "/cancel?" + buildUniqueIdUuidString(), false);
|
return true;
|
||||||
String cancel = getXmlString(xmlStr, "cancel");
|
|
||||||
return Integer.parseInt(cancel) != 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user