Skip to content

Commit

Permalink
Report server connection state
Browse files Browse the repository at this point in the history
We must distinguish 3 cases for await_for_server():
 - an error occurred
 - no error occurred, the device is connected
 - no error occurred, the device is not connected (user requested to
   quit)

For this purpose, use an additional output parameter to indicate if the
device is connected (only set when no error occurs).

Refs #3085 <#3085>
  • Loading branch information
rom1v committed Mar 6, 2022
1 parent 8d91cda commit 1f4c801
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions app/src/scrcpy.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,19 +168,22 @@ event_loop(struct scrcpy *s) {
return false;
}

// Return true on success, false on error
static bool
await_for_server(void) {
await_for_server(bool *connected) {
SDL_Event event;
while (SDL_WaitEvent(&event)) {
switch (event.type) {
case SDL_QUIT:
LOGD("User requested to quit");
return false;
*connected = false;
return true;
case EVENT_SERVER_CONNECTION_FAILED:
LOGE("Server connection failed");
return false;
case EVENT_SERVER_CONNECTED:
LOGD("Server connected");
*connected = true;
return true;
default:
break;
Expand Down Expand Up @@ -351,7 +354,14 @@ scrcpy(struct scrcpy_options *options) {
sdl_configure(options->display, options->disable_screensaver);

// Await for server without blocking Ctrl+C handling
if (!await_for_server()) {
bool connected;
if (!await_for_server(&connected)) {
goto end;
}

if (!connected) {
// This is not an error, user requested to quit
ret = true;
goto end;
}

Expand Down

0 comments on commit 1f4c801

Please sign in to comment.