From 369596a82b57ed8814d065b7feec50dfae13434d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Wed, 21 Aug 2024 15:31:57 +0200 Subject: [PATCH] kms/update: Add meta_kms_update_get/set_sync_fd MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v2: * Use g_steal_fd in meta_kms_update_merge_from. (Jonas Ã…dahl) Part-of: --- src/backends/native/meta-kms-update.c | 25 +++++++++++++++++++++++++ src/backends/native/meta-kms-update.h | 7 +++++++ 2 files changed, 32 insertions(+) diff --git a/src/backends/native/meta-kms-update.c b/src/backends/native/meta-kms-update.c index fc605bec1..a5da81f0c 100644 --- a/src/backends/native/meta-kms-update.c +++ b/src/backends/native/meta-kms-update.c @@ -20,6 +20,8 @@ #include "backends/native/meta-kms-update.h" #include "backends/native/meta-kms-update-private.h" +#include + #include "backends/meta-display-config-shared.h" #include "backends/native/meta-kms-connector.h" #include "backends/native/meta-kms-crtc.h" @@ -51,6 +53,8 @@ struct _MetaKmsUpdate gboolean needs_modeset; MetaKmsImplDevice *impl_device; + + int sync_fd; }; void @@ -1136,6 +1140,8 @@ meta_kms_update_merge_from (MetaKmsUpdate *update, merge_custom_page_flip_from (update, other_update); merge_page_flip_listeners_from (update, other_update); merge_result_listeners_from (update, other_update); + + meta_kms_update_set_sync_fd (update, g_steal_fd (&other_update->sync_fd)); } gboolean @@ -1152,6 +1158,7 @@ meta_kms_update_new (MetaKmsDevice *device) update = g_new0 (MetaKmsUpdate, 1); update->device = device; update->is_latchable = TRUE; + update->sync_fd = -1; return update; } @@ -1175,6 +1182,7 @@ meta_kms_update_free (MetaKmsUpdate *update) g_list_free_full (update->crtc_color_updates, (GDestroyNotify) meta_kms_crtc_color_updates_free); g_clear_pointer (&update->custom_page_flip, meta_kms_custom_page_flip_free); + g_clear_fd (&update->sync_fd, NULL); g_free (update); } @@ -1200,6 +1208,23 @@ meta_kms_update_get_latch_crtc (MetaKmsUpdate *update) return update->latch_crtc; } +int +meta_kms_update_get_sync_fd (MetaKmsUpdate *update) +{ + return update->sync_fd; +} + +void +meta_kms_update_set_sync_fd (MetaKmsUpdate *update, + int sync_fd) +{ + if (update->sync_fd == sync_fd) + return; + + g_clear_fd (&update->sync_fd, NULL); + update->sync_fd = sync_fd; +} + gboolean meta_kms_update_is_empty (MetaKmsUpdate *update) { diff --git a/src/backends/native/meta-kms-update.h b/src/backends/native/meta-kms-update.h index b74adbde2..42c15b865 100644 --- a/src/backends/native/meta-kms-update.h +++ b/src/backends/native/meta-kms-update.h @@ -157,6 +157,13 @@ void meta_kms_update_set_crtc_gamma (MetaKmsUpdate *update, MetaKmsCrtc *crtc, const MetaGammaLut *gamma); +int +meta_kms_update_get_sync_fd (MetaKmsUpdate *update); + +void +meta_kms_update_set_sync_fd (MetaKmsUpdate *update, + int sync_fd); + void meta_kms_plane_assignment_set_fb_damage (MetaKmsPlaneAssignment *plane_assignment, const int *rectangles, int n_rectangles);