mirror of
https://repo.dec05eba.com/gpu-screen-recorder
synced 2026-03-31 09:07:13 +09:00
Print correct regions when region is invalid
This commit is contained in:
10
src/main.cpp
10
src/main.cpp
@@ -2225,6 +2225,12 @@ static gsr_capture* create_monitor_capture(const args_parser &arg_parser, gsr_eg
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void monitor_output_callback_print_region(const gsr_monitor *monitor, void *userdata) {
|
||||||
|
const vec2i monitor_position = monitor->logical_pos;
|
||||||
|
const vec2i monitor_size = monitor->logical_size;
|
||||||
|
fprintf(stderr, " \"%.*s\" (%dx%d+%d+%d)\n", monitor->name_len, monitor->name, monitor_size.x, monitor_size.y, monitor_position.x, monitor_position.y);
|
||||||
|
}
|
||||||
|
|
||||||
static std::string region_get_data(gsr_egl *egl, vec2i *region_size, vec2i *region_position) {
|
static std::string region_get_data(gsr_egl *egl, vec2i *region_size, vec2i *region_position) {
|
||||||
vec2i monitor_pos = {0, 0};
|
vec2i monitor_pos = {0, 0};
|
||||||
vec2i monitor_size = {0, 0};
|
vec2i monitor_size = {0, 0};
|
||||||
@@ -2232,12 +2238,12 @@ static std::string region_get_data(gsr_egl *egl, vec2i *region_size, vec2i *regi
|
|||||||
std::string window = get_monitor_by_region_center(egl, *region_position, *region_size, &monitor_pos, &monitor_size, &monitor_scale_inverted);
|
std::string window = get_monitor_by_region_center(egl, *region_position, *region_size, &monitor_pos, &monitor_size, &monitor_scale_inverted);
|
||||||
if(window.empty()) {
|
if(window.empty()) {
|
||||||
const bool is_x11 = gsr_window_get_display_server(egl->window) == GSR_DISPLAY_SERVER_X11;
|
const bool is_x11 = gsr_window_get_display_server(egl->window) == GSR_DISPLAY_SERVER_X11;
|
||||||
const gsr_connection_type connection_type = is_x11 ? GSR_CONNECTION_X11 : GSR_CONNECTION_DRM;
|
const gsr_connection_type connection_type = is_x11 ? GSR_CONNECTION_X11 : GSR_CONNECTION_WAYLAND;
|
||||||
fprintf(stderr, "gsr error: the region %dx%d+%d+%d doesn't match any monitor. Available monitors and their regions:\n", region_size->x, region_size->y, region_position->x, region_position->y);
|
fprintf(stderr, "gsr error: the region %dx%d+%d+%d doesn't match any monitor. Available monitors and their regions:\n", region_size->x, region_size->y, region_position->x, region_position->y);
|
||||||
|
|
||||||
MonitorOutputCallbackUserdata userdata;
|
MonitorOutputCallbackUserdata userdata;
|
||||||
userdata.window = egl->window;
|
userdata.window = egl->window;
|
||||||
for_each_active_monitor_output(egl->window, egl->card_path, connection_type, monitor_output_callback_print, &userdata);
|
for_each_active_monitor_output(egl->window, egl->card_path, connection_type, monitor_output_callback_print_region, &userdata);
|
||||||
_exit(51);
|
_exit(51);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user