From caf594c90ef1b71ed844b2a9b42c3b3371215d6f Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Sun, 31 Oct 2021 12:11:34 +0100 Subject: [PATCH] Split SDL initialization Initialize SDL_INIT_EVENTS first (very quick) and SDL_INIT_VIDEO after the server (quite long). --- app/src/scrcpy.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/scrcpy.c b/app/src/scrcpy.c index 042cf43c..2235f727 100644 --- a/app/src/scrcpy.c +++ b/app/src/scrcpy.c @@ -258,6 +258,14 @@ scrcpy(struct scrcpy_options *options) { static struct scrcpy scrcpy; struct scrcpy *s = &scrcpy; + // Minimal SDL initialization + if (SDL_Init(SDL_INIT_EVENTS)) { + LOGC("Could not initialize SDL: %s", SDL_GetError()); + return false; + } + + atexit(SDL_Quit); + if (!server_init(&s->server)) { return false; } @@ -307,14 +315,12 @@ scrcpy(struct scrcpy_options *options) { sdl_set_hints(options->render_driver); } - uint32_t flags = options->display ? SDL_INIT_VIDEO : SDL_INIT_EVENTS; - if (SDL_Init(flags)) { + // Initialize SDL video in addition if display is enabled + if (options->display && SDL_Init(SDL_INIT_VIDEO)) { LOGC("Could not initialize SDL: %s", SDL_GetError()); goto end; } - atexit(SDL_Quit); - sdl_configure(options->display, options->disable_screensaver); char device_name[DEVICE_NAME_FIELD_LENGTH];