diff --git a/app/src/cli.c b/app/src/cli.c index 2ae0ced2..c7eebb0a 100644 --- a/app/src/cli.c +++ b/app/src/cli.c @@ -1993,10 +1993,10 @@ parse_args_with_getopt(struct scrcpy_cli_args *args, int argc, char *argv[], return false; #endif case OPT_LIST_ENCODERS: - opts->list_encoders = true; + opts->list |= SC_OPTION_LIST_ENCODERS; break; case OPT_LIST_DISPLAYS: - opts->list_displays = true; + opts->list |= SC_OPTION_LIST_DISPLAYS; break; case OPT_REQUIRE_AUDIO: opts->require_audio = true; diff --git a/app/src/options.c b/app/src/options.c index 530e003b..b633d762 100644 --- a/app/src/options.c +++ b/app/src/options.c @@ -79,7 +79,6 @@ const struct scrcpy_options scrcpy_options_default = { .video = true, .audio = true, .require_audio = false, - .list_encoders = false, - .list_displays = false, .kill_adb_on_close = false, + .list = 0, }; diff --git a/app/src/options.h b/app/src/options.h index 1f36ad7f..e1f693bc 100644 --- a/app/src/options.h +++ b/app/src/options.h @@ -179,9 +179,10 @@ struct scrcpy_options { bool video; bool audio; bool require_audio; - bool list_encoders; - bool list_displays; bool kill_adb_on_close; +#define SC_OPTION_LIST_ENCODERS 0x1 +#define SC_OPTION_LIST_DISPLAYS 0x2 + uint8_t list; }; extern const struct scrcpy_options scrcpy_options_default; diff --git a/app/src/scrcpy.c b/app/src/scrcpy.c index f2893230..5f0158f1 100644 --- a/app/src/scrcpy.c +++ b/app/src/scrcpy.c @@ -379,9 +379,8 @@ scrcpy(struct scrcpy_options *options) { .tcpip_dst = options->tcpip_dst, .cleanup = options->cleanup, .power_on = options->power_on, - .list_encoders = options->list_encoders, - .list_displays = options->list_displays, .kill_adb_on_close = options->kill_adb_on_close, + .list = options->list, }; static const struct sc_server_callbacks cbs = { @@ -399,7 +398,7 @@ scrcpy(struct scrcpy_options *options) { server_started = true; - if (options->list_encoders || options->list_displays) { + if (options->list) { bool ok = await_for_server(NULL); ret = ok ? SCRCPY_EXIT_SUCCESS : SCRCPY_EXIT_FAILURE; goto end; diff --git a/app/src/server.c b/app/src/server.c index e49831fd..d52b164b 100644 --- a/app/src/server.c +++ b/app/src/server.c @@ -311,10 +311,10 @@ execute_server(struct sc_server *server, // By default, power_on is true ADD_PARAM("power_on=false"); } - if (params->list_encoders) { + if (params->list & SC_OPTION_LIST_ENCODERS) { ADD_PARAM("list_encoders=true"); } - if (params->list_displays) { + if (params->list & SC_OPTION_LIST_DISPLAYS) { ADD_PARAM("list_displays=true"); } @@ -896,7 +896,7 @@ run_server(void *data) { // If --list-* is passed, then the server just prints the requested data // then exits. - if (params->list_encoders || params->list_displays) { + if (params->list) { sc_pid pid = execute_server(server, params); if (pid == SC_PROCESS_NONE) { goto error_connection_failed; diff --git a/app/src/server.h b/app/src/server.h index adba2652..04955974 100644 --- a/app/src/server.h +++ b/app/src/server.h @@ -56,9 +56,8 @@ struct sc_server_params { bool select_tcpip; bool cleanup; bool power_on; - bool list_encoders; - bool list_displays; bool kill_adb_on_close; + uint8_t list; }; struct sc_server { diff --git a/server/src/main/java/com/genymobile/scrcpy/Options.java b/server/src/main/java/com/genymobile/scrcpy/Options.java index 49de0567..59820ea7 100644 --- a/server/src/main/java/com/genymobile/scrcpy/Options.java +++ b/server/src/main/java/com/genymobile/scrcpy/Options.java @@ -153,6 +153,10 @@ public class Options { return powerOn; } + public boolean getList() { + return listEncoders || listDisplays; + } + public boolean getListEncoders() { return listEncoders; } diff --git a/server/src/main/java/com/genymobile/scrcpy/Server.java b/server/src/main/java/com/genymobile/scrcpy/Server.java index 0f73a19b..1b56b859 100644 --- a/server/src/main/java/com/genymobile/scrcpy/Server.java +++ b/server/src/main/java/com/genymobile/scrcpy/Server.java @@ -195,7 +195,7 @@ public final class Server { Ln.initLogLevel(options.getLogLevel()); - if (options.getListEncoders() || options.getListDisplays()) { + if (options.getList()) { if (options.getCleanup()) { CleanUp.unlinkSelf(); }