diff options
| author | dec05eba <dec05eba@protonmail.com> | 2026-07-14 22:29:27 +0200 |
|---|---|---|
| committer | dec05eba <dec05eba@protonmail.com> | 2026-07-14 22:29:27 +0200 |
| commit | 775bb08013536b38bcfed897164ae6e0b5f5a983 (patch) | |
| tree | 5c0c3ddc81311714af97333a6a508ee3cdfd4d30 | |
| parent | e7b3c5b5cc8aafe267bf096af7f7b10c3a357795 (diff) | |
Move kde lights to main
| -rw-r--r-- | include/capture/kms.h | 2 | ||||
| -rw-r--r-- | src/capture/kms.c | 10 | ||||
| -rw-r--r-- | src/main.cpp | 10 |
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"); |
