aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp13
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)