Message Box on Session Quit

This commit is contained in:
Florian Märkl 2019-08-03 14:26:54 +02:00
commit f886995295
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
8 changed files with 87 additions and 14 deletions

View file

@ -63,9 +63,12 @@ typedef enum {
CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_IN_USE,
CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_CRASH,
CHIAKI_QUIT_REASON_CTRL_UNKNOWN,
CHIAKI_QUIT_REASON_CTRL_CONNECTION_REFUSED
CHIAKI_QUIT_REASON_CTRL_CONNECTION_REFUSED,
CHIAKI_QUIT_REASON_STREAM_CONNECTION_UNKNOWN
} ChiakiQuitReason;
CHIAKI_EXPORT const char *chiaki_quit_reason_string(ChiakiQuitReason reason);
typedef struct chiaki_quit_event_t
{
ChiakiQuitReason reason;
@ -78,8 +81,7 @@ typedef struct chiaki_audio_stream_info_event_t
typedef enum {
CHIAKI_EVENT_QUIT,
CHIAKI_EVENT_AUDIO_STREAM_INFO
CHIAKI_EVENT_QUIT
} ChiakiEventType;
typedef struct chiaki_event_t
@ -88,7 +90,6 @@ typedef struct chiaki_event_t
union
{
ChiakiQuitEvent quit;
ChiakiAudioStreamInfoEvent audio_stream_info;
};
} ChiakiEvent;

View file

@ -326,7 +326,7 @@ static ChiakiErrorCode ctrl_connect(ChiakiCtrl *ctrl)
{
int errsv = errno;
CHIAKI_LOGE(&session->log, "Ctrl connect failed: %s", strerror(errsv));
ctrl_failed(ctrl, errsv == ECONNREFUSED ? CHIAKI_QUIT_REASON_SESSION_REQUEST_CONNECTION_REFUSED : CHIAKI_QUIT_REASON_CTRL_UNKNOWN);
ctrl_failed(ctrl, errsv == ECONNREFUSED ? CHIAKI_QUIT_REASON_CTRL_CONNECTION_REFUSED : CHIAKI_QUIT_REASON_CTRL_UNKNOWN);
close(sock);
return CHIAKI_ERR_NETWORK;
}

View file

@ -43,6 +43,31 @@
#define SESSION_EXPECT_TIMEOUT_MS 5000
CHIAKI_EXPORT const char *chiaki_quit_reason_string(ChiakiQuitReason reason)
{
switch(reason)
{
case CHIAKI_QUIT_REASON_STOPPED:
return "Stopped";
case CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN:
return "Unknown Session Request Error";
case CHIAKI_QUIT_REASON_SESSION_REQUEST_CONNECTION_REFUSED:
return "Connection Refused in Session Request";
case CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_IN_USE:
return "Remote Play on Console is already in use";
case CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_CRASH:
return "Remote Play on Console has crashed";
case CHIAKI_QUIT_REASON_CTRL_UNKNOWN:
return "Unknown Ctrl Error";
case CHIAKI_QUIT_REASON_CTRL_CONNECTION_REFUSED:
return "Connection Refused in Ctrl";
case CHIAKI_QUIT_REASON_STREAM_CONNECTION_UNKNOWN:
return "Unknown Error in Stream Connection";
case CHIAKI_QUIT_REASON_NONE:
default:
return "Unknown";
}
}
static void *session_thread_func(void *arg);
@ -291,9 +316,15 @@ static void *session_thread_func(void *arg)
err = chiaki_stream_connection_run(&session->stream_connection);
chiaki_mutex_lock(&session->state_mutex);
if(err != CHIAKI_ERR_SUCCESS && err != CHIAKI_ERR_CANCELED)
{
CHIAKI_LOGE(&session->log, "StreamConnection run failed");
session->quit_reason = CHIAKI_QUIT_REASON_STREAM_CONNECTION_UNKNOWN;
}
else
{
CHIAKI_LOGI(&session->log, "StreamConnection completed successfully");
session->quit_reason = CHIAKI_QUIT_REASON_STOPPED;
}
chiaki_video_receiver_free(session->video_receiver);
session->video_receiver = NULL;