From e70a1efa43edc96ca11cfcb20a2e38af63c3d083 Mon Sep 17 00:00:00 2001 From: columbarius Date: Wed, 25 May 2022 19:23:18 +0200 Subject: [PATCH] screencast: skip duplicated format-modifier pairs --- src/screencast/wlr_screencast.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/screencast/wlr_screencast.c b/src/screencast/wlr_screencast.c index cbc4c56..375d0c9 100644 --- a/src/screencast/wlr_screencast.c +++ b/src/screencast/wlr_screencast.c @@ -548,8 +548,15 @@ static void wlr_remove_output(struct xdpw_wlr_output *out) { static void wlr_format_modifier_pair_add(struct xdpw_screencast_context *ctx, uint32_t format, uint64_t modifier) { - struct xdpw_format_modifier_pair *fm_pair = calloc(1, sizeof(struct xdpw_format_modifier_pair)); + struct xdpw_format_modifier_pair *fm_pair; + wl_list_for_each(fm_pair, &ctx->format_modifier_pairs, link) { + if (fm_pair->fourcc == format && fm_pair->modifier == modifier) { + logprint(TRACE, "wlroots: skipping duplicated format %u (%lu)", fm_pair->fourcc, fm_pair->modifier); + return; + } + } + fm_pair = calloc(1, sizeof(struct xdpw_format_modifier_pair)); fm_pair->fourcc = format; fm_pair->modifier = modifier;