diff options
author | dec05eba <dec05eba@protonmail.com> | 2025-05-03 22:50:44 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2025-05-03 22:50:44 +0200 |
commit | 2ca5f3361c341dee5087a109a721103dd95869ff (patch) | |
tree | 47d4a28c3f574644af003bbd9f15f6b7506326dc | |
parent | 200c32f08ab687a774aa92722328ce8f7f2b59d4 (diff) |
Dont list region capture option if not monitors are available for capture
-rw-r--r-- | src/main.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp index 39bb77e..a2ce24e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1779,10 +1779,11 @@ static bool monitor_capture_use_drm(const gsr_window *window, gsr_gpu_vendor ven typedef struct { const gsr_window *window; + int num_monitors; } capture_options_callback; static void output_monitor_info(const gsr_monitor *monitor, void *userdata) { - const capture_options_callback *options = (capture_options_callback*)userdata; + capture_options_callback *options = (capture_options_callback*)userdata; if(gsr_window_get_display_server(options->window) == GSR_DISPLAY_SERVER_WAYLAND) { vec2i monitor_size = monitor->size; gsr_monitor_rotation monitor_rotation = GSR_MONITOR_ROT_0; @@ -1794,6 +1795,7 @@ static void output_monitor_info(const gsr_monitor *monitor, void *userdata) { } else { printf("%.*s|%dx%d\n", monitor->name_len, monitor->name, monitor->size.x, monitor->size.y); } + ++options->num_monitors; } static void list_supported_capture_options(const gsr_window *window, const char *card_path, bool list_monitors) { @@ -1802,16 +1804,19 @@ static void list_supported_capture_options(const gsr_window *window, const char puts("window"); puts("focused"); } - puts("region"); + capture_options_callback options; + options.window = window; + options.num_monitors = 0; if(list_monitors) { - capture_options_callback options; - options.window = window; const bool is_x11 = gsr_window_get_display_server(window) == GSR_DISPLAY_SERVER_X11; const gsr_connection_type connection_type = is_x11 ? GSR_CONNECTION_X11 : GSR_CONNECTION_DRM; for_each_active_monitor_output(window, card_path, connection_type, output_monitor_info, &options); } + if(options.num_monitors > 0) + puts("region"); + #ifdef GSR_PORTAL // Desktop portal capture on x11 doesn't seem to be hardware accelerated if(!wayland) |