From cc56634e910ccfb3090ca48a5155c94600f50bdc Mon Sep 17 00:00:00 2001 From: fryshorts Date: Tue, 18 Nov 2014 22:41:11 +0100 Subject: [PATCH] linux-xshm: Handle missing screens. This adds a check to the screen enumeration in order to handle missing screens by adding them to the list but disabling them. --- plugins/linux-capture/xshm-input.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/linux-capture/xshm-input.c b/plugins/linux-capture/xshm-input.c index 3de08f0b3..6cd305278 100644 --- a/plugins/linux-capture/xshm-input.c +++ b/plugins/linux-capture/xshm-input.c @@ -260,6 +260,7 @@ static bool xshm_server_changed(obs_properties_t *props, UNUSED_PARAMETER(p); bool advanced = obs_data_get_bool(settings, "advanced"); + int_fast32_t old_screen = obs_data_get_int(settings, "screen"); const char *server = obs_data_get_string(settings, "server"); obs_property_t *screens = obs_properties_get(props, "screen"); @@ -296,6 +297,16 @@ static bool xshm_server_changed(obs_properties_t *props, obs_property_list_add_int(screens, screen_info.array, i); } + /* handle missing screen */ + if (old_screen + 1 > count) { + dstr_printf(&screen_info, "Screen %"PRIuFAST32" (not found)", + old_screen); + size_t index = obs_property_list_add_int(screens, + screen_info.array, old_screen); + obs_property_list_item_disable(screens, index, true); + + } + dstr_free(&screen_info); XCloseDisplay(dpy); -- GitLab