mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-07-05 12:36:38 -07:00
Do not handle server shutdown as error
When the console is powered off or put into sleep mode during streaming, the remote will disconnect and report the string "Server shutting down". This is expected by the user and thus should not be shown as an error message.
This commit is contained in:
parent
582ec7aa54
commit
6096de8c13
6 changed files with 44 additions and 31 deletions
|
@ -110,9 +110,9 @@ JNIEXPORT jstring JNICALL JNI_FCN(quitReasonToString)(JNIEnv *env, jobject obj,
|
|||
return E->NewStringUTF(env, chiaki_quit_reason_string((ChiakiQuitReason)value));
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL JNI_FCN(quitReasonIsStopped)(JNIEnv *env, jobject obj, jint value)
|
||||
JNIEXPORT jboolean JNICALL JNI_FCN(quitReasonIsError)(JNIEnv *env, jobject obj, jint value)
|
||||
{
|
||||
return value == CHIAKI_QUIT_REASON_STOPPED;
|
||||
return chiaki_quit_reason_is_error(value);
|
||||
}
|
||||
|
||||
JNIEXPORT jobject JNICALL JNI_FCN(videoProfilePreset)(JNIEnv *env, jobject obj, jint resolution_preset, jint fps_preset, jobject codec)
|
||||
|
|
|
@ -83,7 +83,7 @@ private class ChiakiNative
|
|||
}
|
||||
@JvmStatic external fun errorCodeToString(value: Int): String
|
||||
@JvmStatic external fun quitReasonToString(value: Int): String
|
||||
@JvmStatic external fun quitReasonIsStopped(value: Int): Boolean
|
||||
@JvmStatic external fun quitReasonIsError(value: Int): Boolean
|
||||
@JvmStatic external fun videoProfilePreset(resolutionPreset: Int, fpsPreset: Int, codec: Codec): ConnectVideoProfile
|
||||
@JvmStatic external fun sessionCreate(result: CreateResult, connectInfo: ConnectInfo, logFile: String?, logVerbose: Boolean, javaSession: Session)
|
||||
@JvmStatic external fun sessionFree(ptr: Long)
|
||||
|
@ -309,10 +309,7 @@ class QuitReason(val value: Int)
|
|||
{
|
||||
override fun toString() = ChiakiNative.quitReasonToString(value)
|
||||
|
||||
/**
|
||||
* whether the reason is CHIAKI_QUIT_REASON_STOPPED
|
||||
*/
|
||||
val isStopped = ChiakiNative.quitReasonIsStopped(value)
|
||||
val isError = ChiakiNative.quitReasonIsError(value)
|
||||
}
|
||||
|
||||
sealed class Event
|
||||
|
|
|
@ -230,28 +230,33 @@ class StreamActivity : AppCompatActivity(), View.OnSystemUiVisibilityChangeListe
|
|||
{
|
||||
is StreamStateQuit ->
|
||||
{
|
||||
if(!state.reason.isStopped && dialogContents != StreamQuitDialog)
|
||||
if(dialogContents != StreamQuitDialog)
|
||||
{
|
||||
dialog?.dismiss()
|
||||
val reasonStr = state.reasonString
|
||||
val dialog = MaterialAlertDialogBuilder(this)
|
||||
.setMessage(getString(R.string.alert_message_session_quit, state.reason.toString())
|
||||
+ (if(reasonStr != null) "\n$reasonStr" else ""))
|
||||
.setPositiveButton(R.string.action_reconnect) { _, _ ->
|
||||
dialog = null
|
||||
reconnect()
|
||||
}
|
||||
.setOnCancelListener {
|
||||
dialog = null
|
||||
finish()
|
||||
}
|
||||
.setNegativeButton(R.string.action_quit_session) { _, _ ->
|
||||
dialog = null
|
||||
finish()
|
||||
}
|
||||
.create()
|
||||
dialogContents = StreamQuitDialog
|
||||
dialog.show()
|
||||
if(state.reason.isError)
|
||||
{
|
||||
dialog?.dismiss()
|
||||
val reasonStr = state.reasonString
|
||||
val dialog = MaterialAlertDialogBuilder(this)
|
||||
.setMessage(getString(R.string.alert_message_session_quit, state.reason.toString())
|
||||
+ (if(reasonStr != null) "\n$reasonStr" else ""))
|
||||
.setPositiveButton(R.string.action_reconnect) { _, _ ->
|
||||
dialog = null
|
||||
reconnect()
|
||||
}
|
||||
.setOnCancelListener {
|
||||
dialog = null
|
||||
finish()
|
||||
}
|
||||
.setNegativeButton(R.string.action_quit_session) { _, _ ->
|
||||
dialog = null
|
||||
finish()
|
||||
}
|
||||
.create()
|
||||
dialogContents = StreamQuitDialog
|
||||
dialog.show()
|
||||
}
|
||||
else
|
||||
finish()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -201,7 +201,7 @@ void StreamWindow::closeEvent(QCloseEvent *event)
|
|||
|
||||
void StreamWindow::SessionQuit(ChiakiQuitReason reason, const QString &reason_str)
|
||||
{
|
||||
if(reason != CHIAKI_QUIT_REASON_STOPPED)
|
||||
if(chiaki_quit_reason_is_error(reason))
|
||||
{
|
||||
QString m = tr("Chiaki Session has quit") + ":\n" + chiaki_quit_reason_string(reason);
|
||||
if(!reason_str.isEmpty())
|
||||
|
|
|
@ -94,11 +94,17 @@ typedef enum {
|
|||
CHIAKI_QUIT_REASON_CTRL_CONNECT_FAILED,
|
||||
CHIAKI_QUIT_REASON_CTRL_CONNECTION_REFUSED,
|
||||
CHIAKI_QUIT_REASON_STREAM_CONNECTION_UNKNOWN,
|
||||
CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_DISCONNECTED
|
||||
CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_DISCONNECTED,
|
||||
CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_SHUTDOWN, // like REMOTE_DISCONNECTED, but because the server shut down
|
||||
} ChiakiQuitReason;
|
||||
|
||||
CHIAKI_EXPORT const char *chiaki_quit_reason_string(ChiakiQuitReason reason);
|
||||
|
||||
static inline bool chiaki_quit_reason_is_error(ChiakiQuitReason reason)
|
||||
{
|
||||
return reason != CHIAKI_QUIT_REASON_STOPPED && reason != CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_SHUTDOWN;
|
||||
}
|
||||
|
||||
typedef struct chiaki_quit_event_t
|
||||
{
|
||||
ChiakiQuitReason reason;
|
||||
|
|
|
@ -158,6 +158,8 @@ CHIAKI_EXPORT const char *chiaki_quit_reason_string(ChiakiQuitReason reason)
|
|||
return "Unknown Error in Stream Connection";
|
||||
case CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_DISCONNECTED:
|
||||
return "Remote has disconnected from Stream Connection";
|
||||
case CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_SHUTDOWN:
|
||||
return "Remote has disconnected from Stream Connection the because Server shut down";
|
||||
case CHIAKI_QUIT_REASON_NONE:
|
||||
default:
|
||||
return "Unknown";
|
||||
|
@ -505,7 +507,10 @@ ctrl_failed:
|
|||
if(err == CHIAKI_ERR_DISCONNECTED)
|
||||
{
|
||||
CHIAKI_LOGE(session->log, "Remote disconnected from StreamConnection");
|
||||
session->quit_reason = CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_DISCONNECTED;
|
||||
if(!strcmp(session->stream_connection.remote_disconnect_reason, "Server shutting down"))
|
||||
session->quit_reason = CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_SHUTDOWN;
|
||||
else
|
||||
session->quit_reason = CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_DISCONNECTED;
|
||||
session->quit_reason_str = strdup(session->stream_connection.remote_disconnect_reason);
|
||||
}
|
||||
else if(err != CHIAKI_ERR_SUCCESS && err != CHIAKI_ERR_CANCELED)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue