diff options
author | dec05eba <dec05eba@protonmail.com> | 2025-03-13 01:38:26 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2025-03-13 01:38:26 +0100 |
commit | af5468410376f6b8cb3a0c6e3fb46636e03299f8 (patch) | |
tree | d43bc60461ae593831f3e717bb74266315441c55 /src/capture | |
parent | 92492db788e97db028176c942e9aed047f8f152a (diff) |
Fix screenshot with region not working correctly for some sizes and possibly crashing
Diffstat (limited to 'src/capture')
-rw-r--r-- | src/capture/kms.c | 14 | ||||
-rw-r--r-- | src/capture/nvfbc.c | 13 | ||||
-rw-r--r-- | src/capture/portal.c | 9 | ||||
-rw-r--r-- | src/capture/xcomposite.c | 9 |
4 files changed, 20 insertions, 25 deletions
diff --git a/src/capture/kms.c b/src/capture/kms.c index f0a635e..9693c58 100644 --- a/src/capture/kms.c +++ b/src/capture/kms.c @@ -221,16 +221,14 @@ static int gsr_capture_kms_start(gsr_capture *cap, gsr_capture_metadata *capture if(self->params.output_resolution.x > 0 && self->params.output_resolution.y > 0) { self->params.output_resolution = scale_keep_aspect_ratio(self->capture_size, self->params.output_resolution); - capture_metadata->width = FFALIGN(self->params.output_resolution.x, 2); - capture_metadata->height = FFALIGN(self->params.output_resolution.y, 2); + capture_metadata->width = self->params.output_resolution.x; + capture_metadata->height = self->params.output_resolution.y; } else if(self->params.region_size.x > 0 && self->params.region_size.y > 0) { - self->params.output_resolution = self->params.region_size; - capture_metadata->width = FFALIGN(self->params.region_size.x, 2); - capture_metadata->height = FFALIGN(self->params.region_size.y, 2); + capture_metadata->width = self->params.region_size.x; + capture_metadata->height = self->params.region_size.y; } else { - self->params.output_resolution = self->capture_size; - capture_metadata->width = FFALIGN(self->capture_size.x, 2); - capture_metadata->height = FFALIGN(self->capture_size.y, 2); + capture_metadata->width = self->capture_size.x; + capture_metadata->height = self->capture_size.y; } self->fast_path_failed = self->params.egl->gpu_info.vendor == GSR_GPU_VENDOR_AMD && !gl_driver_version_greater_than(&self->params.egl->gpu_info, 24, 0, 9); diff --git a/src/capture/nvfbc.c b/src/capture/nvfbc.c index c71f69a..5b59806 100644 --- a/src/capture/nvfbc.c +++ b/src/capture/nvfbc.c @@ -323,17 +323,16 @@ static int gsr_capture_nvfbc_start(gsr_capture *cap, gsr_capture_metadata *captu goto error_cleanup; } - capture_metadata->width = FFALIGN(self->tracking_width, 2); - capture_metadata->height = FFALIGN(self->tracking_height, 2); + capture_metadata->width = self->tracking_width; + capture_metadata->height = self->tracking_height; if(self->params.output_resolution.x > 0 && self->params.output_resolution.y > 0) { self->params.output_resolution = scale_keep_aspect_ratio((vec2i){capture_metadata->width, capture_metadata->height}, self->params.output_resolution); - capture_metadata->width = FFALIGN(self->params.output_resolution.x, 2); - capture_metadata->height = FFALIGN(self->params.output_resolution.y, 2); + capture_metadata->width = self->params.output_resolution.x; + capture_metadata->height = self->params.output_resolution.y; } else if(self->params.region_size.x > 0 && self->params.region_size.y > 0) { - self->params.output_resolution = self->params.region_size; - capture_metadata->width = FFALIGN(self->params.region_size.x, 2); - capture_metadata->height = FFALIGN(self->params.region_size.y, 2); + capture_metadata->width = self->params.region_size.x; + capture_metadata->height = self->params.region_size.y; } return 0; diff --git a/src/capture/portal.c b/src/capture/portal.c index cfbfbcd..893c07a 100644 --- a/src/capture/portal.c +++ b/src/capture/portal.c @@ -298,13 +298,12 @@ static int gsr_capture_portal_start(gsr_capture *cap, gsr_capture_metadata *capt } if(self->params.output_resolution.x == 0 && self->params.output_resolution.y == 0) { - self->params.output_resolution = self->capture_size; - capture_metadata->width = FFALIGN(self->capture_size.x, 2); - capture_metadata->height = FFALIGN(self->capture_size.y, 2); + capture_metadata->width = self->capture_size.x; + capture_metadata->height = self->capture_size.y; } else { self->params.output_resolution = scale_keep_aspect_ratio(self->capture_size, self->params.output_resolution); - capture_metadata->width = FFALIGN(self->params.output_resolution.x, 2); - capture_metadata->height = FFALIGN(self->params.output_resolution.y, 2); + capture_metadata->width = self->params.output_resolution.x; + capture_metadata->height = self->params.output_resolution.y; } self->fast_path_failed = self->params.egl->gpu_info.vendor == GSR_GPU_VENDOR_AMD && !gl_driver_version_greater_than(&self->params.egl->gpu_info, 24, 0, 9); diff --git a/src/capture/xcomposite.c b/src/capture/xcomposite.c index 94e691b..2016a31 100644 --- a/src/capture/xcomposite.c +++ b/src/capture/xcomposite.c @@ -113,12 +113,11 @@ static int gsr_capture_xcomposite_start(gsr_capture *cap, gsr_capture_metadata * self->params.egl->glBindTexture(GL_TEXTURE_2D, 0); if(self->params.output_resolution.x == 0 && self->params.output_resolution.y == 0) { - self->params.output_resolution = self->texture_size; - capture_metadata->width = FFALIGN(self->texture_size.x, 2); - capture_metadata->height = FFALIGN(self->texture_size.y, 2); + capture_metadata->width = self->texture_size.x; + capture_metadata->height = self->texture_size.y; } else { - capture_metadata->width = FFALIGN(self->params.output_resolution.x, 2); - capture_metadata->height = FFALIGN(self->params.output_resolution.y, 2); + capture_metadata->width = self->params.output_resolution.x; + capture_metadata->height = self->params.output_resolution.y; } self->fast_path_failed = self->params.egl->gpu_info.vendor == GSR_GPU_VENDOR_AMD && !gl_driver_version_greater_than(&self->params.egl->gpu_info, 24, 0, 9); |