aboutsummaryrefslogtreecommitdiff
path: root/src/capture
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2025-03-13 01:38:26 +0100
committerdec05eba <dec05eba@protonmail.com>2025-03-13 01:38:26 +0100
commitaf5468410376f6b8cb3a0c6e3fb46636e03299f8 (patch)
treed43bc60461ae593831f3e717bb74266315441c55 /src/capture
parent92492db788e97db028176c942e9aed047f8f152a (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.c14
-rw-r--r--src/capture/nvfbc.c13
-rw-r--r--src/capture/portal.c9
-rw-r--r--src/capture/xcomposite.c9
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);