aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2026-07-14 22:29:27 +0200
committerdec05eba <dec05eba@protonmail.com>2026-07-14 22:29:27 +0200
commit775bb08013536b38bcfed897164ae6e0b5f5a983 (patch)
tree5c0c3ddc81311714af97333a6a508ee3cdfd4d30
parente7b3c5b5cc8aafe267bf096af7f7b10c3a357795 (diff)
Move kde lights to main
-rw-r--r--include/capture/kms.h2
-rw-r--r--src/capture/kms.c10
-rw-r--r--src/main.cpp10
3 files changed, 13 insertions, 9 deletions
diff --git a/include/capture/kms.h b/include/capture/kms.h
index deb12a0..5c4eae4 100644
--- a/include/capture/kms.h
+++ b/include/capture/kms.h
@@ -3,12 +3,14 @@
#include "capture.h"
#include "../cursor.h"
+#include "../kde_night_light.h"
#include "../../kms/kms_shared.h"
typedef struct {
gsr_egl *egl;
gsr_cursor *x11_cursor;
gsr_kms_response *kms_response;
+ gsr_kde_night_light *kde_night_light; /* optional */
const char *display_to_capture; /* A copy is made of this */
bool hdr;
bool record_cursor;
diff --git a/src/capture/kms.c b/src/capture/kms.c
index 73fe5dd..31d4b17 100644
--- a/src/capture/kms.c
+++ b/src/capture/kms.c
@@ -58,7 +58,6 @@ typedef struct {
uint32_t gamma_lut_property_id;
uint64_t gamma_lut_blob_id;
- gsr_kde_night_light *kde_night_light;
bool night_light_message_shown;
bool hdr_luminance_message_shown;
float hdr_video_max_luminance;
@@ -101,11 +100,6 @@ static void gsr_capture_kms_stop(gsr_capture_kms *self) {
self->drm_card_fd = -1;
}
- if(self->kde_night_light) {
- gsr_kde_night_light_destroy(self->kde_night_light);
- self->kde_night_light = NULL;
- }
-
// if(self->drm_fd > 0) {
// close(self->drm_fd);
// self->drm_fd = -1;
@@ -184,8 +178,6 @@ static int gsr_capture_kms_start(gsr_capture *cap, gsr_capture_metadata *capture
self->is_x11 = gsr_window_get_display_server(self->params.egl->window) == GSR_DISPLAY_SERVER_X11;
const gsr_connection_type connection_type = self->is_x11 ? GSR_CONNECTION_X11 : GSR_CONNECTION_DRM;
- if(!self->is_x11)
- self->kde_night_light = gsr_kde_night_light_create();
MonitorCallbackUserdata monitor_callback_userdata = {
&self->monitor_id,
@@ -429,7 +421,7 @@ static void gsr_capture_kms_update_hdr_color_transforms(gsr_capture_kms *self, g
gsr_color_conversion_enable_gamma_lut(color_conversion, plane_is_hdr && self->gamma_lut_blob_id != 0);
float night_light_matrix[9];
- const bool night_light = self->kde_night_light && gsr_kde_night_light_get_inverse_matrix(self->kde_night_light, night_light_matrix);
+ const bool night_light = self->params.kde_night_light && gsr_kde_night_light_get_inverse_matrix(self->params.kde_night_light, night_light_matrix);
if(night_light && !self->night_light_message_shown) {
self->night_light_message_shown = true;
fprintf(stderr, "gsr info: gsr_capture_kms_update_hdr_color_transforms: night light is active, removing the night light tint from the capture\n");
diff --git a/src/main.cpp b/src/main.cpp
index c574141..852a3c4 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -2124,6 +2124,8 @@ static std::string get_monitor_by_region_center(const gsr_egl *egl, vec2i region
static gsr_kms_client kms_client;
static bool kms_client_initialized = false;
static gsr_kms_response kms_response;
+static gsr_kde_night_light *kde_night_light = nullptr;
+static bool kde_night_light_initialized = false;
static gsr_cursor x11_cursor;
static Display *x11_cursor_display = NULL;
@@ -2150,11 +2152,17 @@ static gsr_capture* create_monitor_capture(const args_parser &arg_parser, gsr_eg
_exit(kms_init_res < 0 ? 1 : kms_init_res);
}
+ if(!kde_night_light_initialized && gsr_window_get_display_server(egl->window) == GSR_DISPLAY_SERVER_WAYLAND) {
+ kde_night_light_initialized = true;
+ kde_night_light = gsr_kde_night_light_create();
+ }
+
gsr_capture_kms_params kms_params;
memset(&kms_params, 0, sizeof(kms_params));
kms_params.egl = egl;
kms_params.x11_cursor = &x11_cursor;
kms_params.kms_response = &kms_response;
+ kms_params.kde_night_light = kde_night_light;
kms_params.display_to_capture = capture_source.name.c_str();
kms_params.record_cursor = arg_parser.record_cursor;
kms_params.hdr = video_codec_is_hdr(arg_parser.video_codec);
@@ -4789,6 +4797,8 @@ int main(int argc, char **argv) {
gsr_kms_client_deinit(&kms_client);
}
+ gsr_kde_night_light_destroy(kde_night_light);
+
if(!arg_parser.is_replaying && arg_parser.recording_saved_script)
run_recording_saved_script_async(arg_parser.recording_saved_script, arg_parser.filename, "regular");