From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364023; cv=none; d=zohomail.com; s=zohoarc; b=mzFTEkmW5oVRwnne3w9fshuwtLXWqKw3BOuvI0FZjI+UsVqm0aO80asBGiHn1SfrhJ7Yva8iB3nFnuwlVPS9KM/xYLn4jqQAkOkCXisbclLLHKLZ89ZSEfI22aY0XBdhRnx/5R7/dUmcmwMFRtimab3k2Yxyf/g/lEy0uCkgYew= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364023; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DTwO7gzGMoGFPz1x9+2GvNTlpfFwIa7tMHQwc8A7sI8=; b=SSdHbt/xHtTCxyE8IYajzYRvgGMuSDyaq2GUS0m6owcTlDnmO3o6j+HV092URgvXo4jD1Nau1E/c2alBaFYwvdE79EV20k5Ur0btRKksGQm3bIBGFFlMd9MdcZvJdC4igyf0EQpKSi6wmtw9MJBrqds7QzqTM23K9YNrQuPOid0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177736402301567.00641578820296; Tue, 28 Apr 2026 01:13:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdZR-0005tu-Nu; Tue, 28 Apr 2026 04:13:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZK-0005sr-6A for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:22 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZI-0005io-NF for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:21 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-277-8COA24F5NRKrC9Elq7bW3g-1; Tue, 28 Apr 2026 04:13:16 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 58AD31956059; Tue, 28 Apr 2026 08:13:15 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2FD4E180047F; Tue, 28 Apr 2026 08:13:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777363998; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DTwO7gzGMoGFPz1x9+2GvNTlpfFwIa7tMHQwc8A7sI8=; b=XGpu1waqaSYQaSEfhTmMJ6tPFAuFaCmYDe7OiW5C1mA9xLnZ1DP/cI0xpv3Ae3mhTqRXuF A8KKLgeO5qvKi9vSlgeJ+R2Iw1qg5pg8WaxcNoBGf39bwT1f0qXxUlxKYNA3ZO+zlWpcrw NRYWzOXKjNDX6SbdbyQNTeyr3xgQMMQ= X-MC-Unique: 8COA24F5NRKrC9Elq7bW3g-1 X-Mimecast-MFC-AGG-ID: 8COA24F5NRKrC9Elq7bW3g_1777363995 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 01/15] ui: move FONT_WIDTH/HEIGHT to vgafont.h Date: Tue, 28 Apr 2026 12:12:48 +0400 Message-ID: <20260428081303.990973-2-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364026290154100 From: Marc-Andr=C3=A9 Lureau Since those values are related to the VGA font, it make sense to move them here. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Marc-Andr=C3=A9 Lureau --- ui/console-priv.h | 5 ----- ui/vgafont.h | 6 +++++- ui/console-vc.c | 1 + ui/console.c | 1 + 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ui/console-priv.h b/ui/console-priv.h index 8bcdb79d914..39798c3e9d7 100644 --- a/ui/console-priv.h +++ b/ui/console-priv.h @@ -9,11 +9,6 @@ #include "qemu/coroutine.h" #include "qemu/timer.h" =20 -#include "vgafont.h" - -#define FONT_HEIGHT 16 -#define FONT_WIDTH 8 - struct QemuConsole { Object parent; =20 diff --git a/ui/vgafont.h b/ui/vgafont.h index 54aeeb7d192..d24b5d47a95 100644 --- a/ui/vgafont.h +++ b/ui/vgafont.h @@ -6,6 +6,10 @@ =20 #include =20 -extern const uint8_t vgafont16[256 * 16]; +/* supports only vga 8x16 */ +#define FONT_WIDTH 8 +#define FONT_HEIGHT 16 + +extern const uint8_t vgafont16[256 * FONT_HEIGHT]; =20 #endif diff --git a/ui/console-vc.c b/ui/console-vc.c index 107294af1cc..6163e21d2c6 100644 --- a/ui/console-vc.c +++ b/ui/console-vc.c @@ -10,6 +10,7 @@ #include "qemu/option.h" #include "qemu/queue.h" #include "ui/console.h" +#include "ui/vgafont.h" =20 #include "pixman.h" #include "trace.h" diff --git a/ui/console.c b/ui/console.c index a7bd22515b9..9606da7b1a6 100644 --- a/ui/console.c +++ b/ui/console.c @@ -24,6 +24,7 @@ =20 #include "qemu/osdep.h" #include "ui/console.h" +#include "ui/vgafont.h" #include "hw/core/qdev.h" #include "qapi/error.h" #include "qapi/qapi-commands-ui.h" --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364026; cv=none; d=zohomail.com; s=zohoarc; b=GfTzvVvewG3UjX3pVbqYOUxh6cjq78/QekX1SfHrVMGthAIWOcBDCwijcrXhiT+8o1D4f2X6xdnScZ4N/ThBUkycUrqz9BRq4bAjpTcYd31LlAvFJeJD43WVMd6n/E6Sn3MpahE/YH9Bq/1ug3jcd3yVYXyAyB+yqConmbn3LXE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364026; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/PujuF2PwJndAYCY+IHOvOEQ/FdCeDUOkyw1iu1Rcpk=; b=QZt4ZZX5HSts6uU6KhIogN83Myx9MKWIp0ojaEGFgvCQ0e2KnY69iIZzYC3g1yB2aqLn5O/8J+sfz7Y0GPbS2KSMH6Pyr93KzpNpyoCw5qG1FdUbHlC9QK1J0EV5J6awZFUBowoxs74Lutmp4daSN6mKlXeaBBavWrIEpehkoZM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777364026218738.4879673790309; Tue, 28 Apr 2026 01:13:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdZS-0005uE-4M; Tue, 28 Apr 2026 04:13:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZQ-0005tN-IQ for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:28 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZO-0005nd-F4 for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:28 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-17-YdsvrIshPRe7q6_5PGN0GA-1; Tue, 28 Apr 2026 04:13:22 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 445E01800605; Tue, 28 Apr 2026 08:13:21 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id F241E180047F; Tue, 28 Apr 2026 08:13:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364005; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/PujuF2PwJndAYCY+IHOvOEQ/FdCeDUOkyw1iu1Rcpk=; b=FAc2VV9LOO9vPBAZvIF+5pZFDWaEsIih7N5adiE+ceMkaHDXyZjlBfpUv3mirA6BlRYCzA NE/KGWR0bFiAVa6neKEIfSyf1FcjOMvk4Rh+fgkI97wWQrENkCN0sks5S/BiRNIToWP52U rWe6QGiD7Vk+JOOYpE9Evii0GLzd/qU= X-MC-Unique: YdsvrIshPRe7q6_5PGN0GA-1 X-Mimecast-MFC-AGG-ID: YdsvrIshPRe7q6_5PGN0GA_1777364001 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 02/15] ui: move DisplaySurface functions to display-surface.c Date: Tue, 28 Apr 2026 12:12:49 +0400 Message-ID: <20260428081303.990973-3-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364028062154100 From: Marc-Andr=C3=A9 Lureau Extract DisplaySurface creation and destruction functions from console.c into their own file to reduce the size of console.c and improve code organization. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Marc-Andr=C3=A9 Lureau --- ui/console.c | 96 -------------------------------------- ui/display-surface.c | 107 +++++++++++++++++++++++++++++++++++++++++++ ui/meson.build | 1 + 3 files changed, 108 insertions(+), 96 deletions(-) create mode 100644 ui/display-surface.c diff --git a/ui/console.c b/ui/console.c index 9606da7b1a6..475a72aa08f 100644 --- a/ui/console.c +++ b/ui/console.c @@ -505,102 +505,6 @@ qemu_graphic_console_init(Object *obj) { } =20 -void qemu_displaysurface_set_share_handle(DisplaySurface *surface, - qemu_pixman_shareable handle, - uint32_t offset) -{ - assert(surface->share_handle =3D=3D SHAREABLE_NONE); - - surface->share_handle =3D handle; - surface->share_handle_offset =3D offset; - -} - -DisplaySurface *qemu_create_displaysurface(int width, int height) -{ - trace_displaysurface_create(width, height); - - return qemu_create_displaysurface_from( - width, height, - PIXMAN_x8r8g8b8, - width * 4, NULL - ); -} - -DisplaySurface *qemu_create_displaysurface_from(int width, int height, - pixman_format_code_t forma= t, - int linesize, uint8_t *dat= a) -{ - DisplaySurface *surface =3D g_new0(DisplaySurface, 1); - - trace_displaysurface_create_from(surface, width, height, format); - surface->share_handle =3D SHAREABLE_NONE; - - if (data) { - surface->image =3D pixman_image_create_bits(format, - width, height, - (void *)data, linesize); - } else { - qemu_pixman_image_new_shareable(&surface->image, - &surface->share_handle, - "displaysurface", - format, - width, - height, - linesize, - &error_abort); - surface->flags =3D QEMU_ALLOCATED_FLAG; - } - - assert(surface->image !=3D NULL); - return surface; -} - -DisplaySurface *qemu_create_displaysurface_pixman(pixman_image_t *image) -{ - DisplaySurface *surface =3D g_new0(DisplaySurface, 1); - - trace_displaysurface_create_pixman(surface); - surface->share_handle =3D SHAREABLE_NONE; - surface->image =3D pixman_image_ref(image); - - return surface; -} - -DisplaySurface *qemu_create_placeholder_surface(int w, int h, - const char *msg) -{ - DisplaySurface *surface =3D qemu_create_displaysurface(w, h); -#ifdef CONFIG_PIXMAN - pixman_color_t bg =3D QEMU_PIXMAN_COLOR_BLACK; - pixman_color_t fg =3D QEMU_PIXMAN_COLOR_GRAY; - pixman_image_t *glyph; - int len, x, y, i; - - len =3D strlen(msg); - x =3D (w / FONT_WIDTH - len) / 2; - y =3D (h / FONT_HEIGHT - 1) / 2; - for (i =3D 0; i < len; i++) { - glyph =3D qemu_pixman_glyph_from_vgafont(FONT_HEIGHT, vgafont16, m= sg[i]); - qemu_pixman_glyph_render(glyph, surface->image, &fg, &bg, - x+i, y, FONT_WIDTH, FONT_HEIGHT); - qemu_pixman_image_unref(glyph); - } -#endif - surface->flags |=3D QEMU_PLACEHOLDER_FLAG; - return surface; -} - -void qemu_free_displaysurface(DisplaySurface *surface) -{ - if (surface =3D=3D NULL) { - return; - } - trace_displaysurface_free(surface); - qemu_pixman_image_unref(surface->image); - g_free(surface); -} - bool console_has_gl(QemuConsole *con) { return con->gl !=3D NULL; diff --git a/ui/display-surface.c b/ui/display-surface.c new file mode 100644 index 00000000000..38e408513cc --- /dev/null +++ b/ui/display-surface.c @@ -0,0 +1,107 @@ +/* + * QEMU graphical console surface helper + * + * Copyright (c) 2004 Fabrice Bellard + * + * SPDX-License-Identifier: MIT + */ +#include "qemu/osdep.h" +#include "ui/console.h" +#include "ui/vgafont.h" +#include "trace.h" + +void qemu_displaysurface_set_share_handle(DisplaySurface *surface, + qemu_pixman_shareable handle, + uint32_t offset) +{ + assert(surface->share_handle =3D=3D SHAREABLE_NONE); + + surface->share_handle =3D handle; + surface->share_handle_offset =3D offset; + +} + +DisplaySurface *qemu_create_displaysurface(int width, int height) +{ + trace_displaysurface_create(width, height); + + return qemu_create_displaysurface_from( + width, height, + PIXMAN_x8r8g8b8, + width * 4, NULL + ); +} + +DisplaySurface *qemu_create_displaysurface_from(int width, int height, + pixman_format_code_t forma= t, + int linesize, uint8_t *dat= a) +{ + DisplaySurface *surface =3D g_new0(DisplaySurface, 1); + + trace_displaysurface_create_from(surface, width, height, format); + surface->share_handle =3D SHAREABLE_NONE; + + if (data) { + surface->image =3D pixman_image_create_bits(format, + width, height, + (void *)data, linesize); + } else { + qemu_pixman_image_new_shareable(&surface->image, + &surface->share_handle, + "displaysurface", + format, + width, + height, + linesize, + &error_abort); + surface->flags =3D QEMU_ALLOCATED_FLAG; + } + + assert(surface->image !=3D NULL); + return surface; +} + +DisplaySurface *qemu_create_displaysurface_pixman(pixman_image_t *image) +{ + DisplaySurface *surface =3D g_new0(DisplaySurface, 1); + + trace_displaysurface_create_pixman(surface); + surface->share_handle =3D SHAREABLE_NONE; + surface->image =3D pixman_image_ref(image); + + return surface; +} + +DisplaySurface *qemu_create_placeholder_surface(int w, int h, + const char *msg) +{ + DisplaySurface *surface =3D qemu_create_displaysurface(w, h); +#ifdef CONFIG_PIXMAN + pixman_color_t bg =3D QEMU_PIXMAN_COLOR_BLACK; + pixman_color_t fg =3D QEMU_PIXMAN_COLOR_GRAY; + pixman_image_t *glyph; + int len, x, y, i; + + len =3D strlen(msg); + x =3D (w / FONT_WIDTH - len) / 2; + y =3D (h / FONT_HEIGHT - 1) / 2; + for (i =3D 0; i < len; i++) { + glyph =3D qemu_pixman_glyph_from_vgafont(FONT_HEIGHT, vgafont16, m= sg[i]); + qemu_pixman_glyph_render(glyph, surface->image, &fg, &bg, + x + i, y, FONT_WIDTH, FONT_HEIGHT); + qemu_pixman_image_unref(glyph); + } +#endif + surface->flags |=3D QEMU_PLACEHOLDER_FLAG; + return surface; +} + +void qemu_free_displaysurface(DisplaySurface *surface) +{ + if (surface =3D=3D NULL) { + return; + } + trace_displaysurface_free(surface); + qemu_pixman_image_unref(surface->image); + g_free(surface); +} diff --git a/ui/meson.build b/ui/meson.build index 4e533d30460..3d15ff96287 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -4,6 +4,7 @@ system_ss.add(files( 'clipboard.c', 'console.c', 'cursor.c', + 'display-surface.c', 'dmabuf.c', 'input-keymap.c', 'input-legacy.c', --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364023; cv=none; d=zohomail.com; s=zohoarc; b=c8H1KrnEBqbCCzjLFKRkFidpcxModgmT7D+p2Ba5X0ahRPFMzNsCvBEPJwqSS6pTsYd1XhTAqp1fU03i6FW+BkknR+3vg8BDY/KRPgxbHai/konDsXqIbw2WF3yVlsI1eIhrkUilg6CtrqDrHR+1uHsU7a3C8XB7ilMJvwkdZIg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364023; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qcHo94HuD0MwG1Lrycu+X8H89uP+8uG3alrwsl0qpx8=; b=IOZGI3OYWFgZ1d3Cv7i4KyiWTNlieMu+CkmXqmrlUi/oOkJC8wN1to1Nr5Lk0V2cATemNgMojnYyUHEFU4G0MhQO0LQueaadn3ucupJr8mfHHk6L/FUYj8NWOTWwi3Qc58bcTxZlHdWQWUn+3JPM2Kt6N/ZkH5dK8KKHWoSQXs4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777364023008636.9106473175781; Tue, 28 Apr 2026 01:13:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdZV-0005ux-E9; Tue, 28 Apr 2026 04:13:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZT-0005ub-VT for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:31 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZS-0005op-Fr for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:31 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-488-7NBnKe7uOn6hTuzQb1DDfg-1; Tue, 28 Apr 2026 04:13:28 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 307B919560B7; Tue, 28 Apr 2026 08:13:27 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D08BA1800352; Tue, 28 Apr 2026 08:13:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364009; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=qcHo94HuD0MwG1Lrycu+X8H89uP+8uG3alrwsl0qpx8=; b=UAdXOi0bPq7MGq71bFykMQExjjD6IN+q+A9OEMamC20YKene3e9AHBSRa8+YGcmqytk8pt Cpn2MgUYNO6aI9+/1i0FhFR1GsrbvAplxIzbGLDmb2tp1k/L/TCrFxMoqKLLVrG8qYv9io uiix3GeLc9qFkVLpFJMFw0xzVwgFtoc= X-MC-Unique: 7NBnKe7uOn6hTuzQb1DDfg-1 X-Mimecast-MFC-AGG-ID: 7NBnKe7uOn6hTuzQb1DDfg_1777364007 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 03/15] ui: make qemu_default_pixelformat() static inline Date: Tue, 28 Apr 2026 12:12:50 +0400 Message-ID: <20260428081303.990973-4-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364026231154100 From: Marc-Andr=C3=A9 Lureau The function is a trivial wrapper around qemu_default_pixman_format() and qemu_pixelformat_from_pixman(), so make it static inline in qemu-pixman.h instead of a standalone function in console.c, allowing to be easily reused. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Marc-Andr=C3=A9 Lureau --- include/ui/qemu-pixman.h | 8 ++++++++ include/ui/surface.h | 2 -- ui/console.c | 7 ------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/include/ui/qemu-pixman.h b/include/ui/qemu-pixman.h index 2ca0ed7029c..4bc7a59698e 100644 --- a/include/ui/qemu-pixman.h +++ b/include/ui/qemu-pixman.h @@ -73,6 +73,14 @@ typedef struct PixelFormat { =20 PixelFormat qemu_pixelformat_from_pixman(pixman_format_code_t format); pixman_format_code_t qemu_default_pixman_format(int bpp, bool native_endia= n); + +static inline PixelFormat qemu_default_pixelformat(int bpp) +{ + pixman_format_code_t fmt =3D qemu_default_pixman_format(bpp, true); + PixelFormat pf =3D qemu_pixelformat_from_pixman(fmt); + return pf; +} + pixman_format_code_t qemu_drm_format_to_pixman(uint32_t drm_format); uint32_t qemu_pixman_to_drm_format(pixman_format_code_t pixman); int qemu_pixman_get_type(int rshift, int gshift, int bshift, int endian); diff --git a/include/ui/surface.h b/include/ui/surface.h index d2542d3ace5..8e5f3e35e8c 100644 --- a/include/ui/surface.h +++ b/include/ui/surface.h @@ -24,8 +24,6 @@ typedef struct DisplaySurface { uint32_t share_handle_offset; } DisplaySurface; =20 -PixelFormat qemu_default_pixelformat(int bpp); - DisplaySurface *qemu_create_displaysurface_from(int width, int height, pixman_format_code_t forma= t, int linesize, uint8_t *dat= a); diff --git a/ui/console.c b/ui/console.c index 475a72aa08f..ff561617657 100644 --- a/ui/console.c +++ b/ui/console.c @@ -1390,13 +1390,6 @@ DisplaySurface *qemu_console_surface(QemuConsole *co= nsole) } } =20 -PixelFormat qemu_default_pixelformat(int bpp) -{ - pixman_format_code_t fmt =3D qemu_default_pixman_format(bpp, true); - PixelFormat pf =3D qemu_pixelformat_from_pixman(fmt); - return pf; -} - static QemuDisplay *dpys[DISPLAY_TYPE__MAX]; =20 void qemu_display_register(QemuDisplay *ui) --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364036; cv=none; d=zohomail.com; s=zohoarc; b=TnzrqZ6si+ITn2OU6vTOGETX3XwTu+hNfRRHMcqp0OIb+cvOJiFP/L0for264nkTY8BD95ys8T02dWgGXG9sG0394HSMZ+dNURJrsDP6Y+a7woLURM6nVLHQjJqo6kPGkvrcQnLCFDgW1rGVEii2LHMayGNofNdRnnw46hQwc50= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364036; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Um+CyFXJb0R85R0TyWg2daGykiOzmKuOUe8R6o0YySQ=; b=P61cre0EJxd7XmcfZ77JuaRsNq32EEFaoJHNJg1j18cctlwVrIxbo+ebrDJZ5NIkB1r4fuxq2OPEJjB8K1kZnbyOHLV+MveHxRNtpowuyRTKbH+Fmb29vZWwV82JHF/aU5fMSLOrPhfyVubVtz4GEB1yZh2mF5SkofBZZpYnH3w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777364036240151.47211871211925; Tue, 28 Apr 2026 01:13:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdZe-0005yd-QJ; Tue, 28 Apr 2026 04:13:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZc-0005vF-C0 for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:40 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZb-0005xa-32 for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:40 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-447-OSeCdg-0NPmzmAPQ9HJMXQ-1; Tue, 28 Apr 2026 04:13:34 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 57FD6180059A; Tue, 28 Apr 2026 08:13:33 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C8FE23000C22; Tue, 28 Apr 2026 08:13:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364018; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Um+CyFXJb0R85R0TyWg2daGykiOzmKuOUe8R6o0YySQ=; b=KnAMGigKUoPWhOzUPQgZZT9AMScz9zZhQ0TpCDlgTI4/daP4qKLgn4lMvWBk0/Z2azhQ0P smeqvj/kfyvfuWMjKbrhkkzpoYzd0jJe4KtVhnCHeqXupaTVBNcIFUndruY0ygnav3F/3c uhw7adTR7pohCB4+L+yYDgE5VUh2Mqk= X-MC-Unique: OSeCdg-0NPmzmAPQ9HJMXQ-1 X-Mimecast-MFC-AGG-ID: OSeCdg-0NPmzmAPQ9HJMXQ_1777364013 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 04/15] ui: make unregister_displaychangelistener() skip unregistered Date: Tue, 28 Apr 2026 12:12:51 +0400 Message-ID: <20260428081303.990973-5-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364038458158500 From: Marc-Andr=C3=A9 Lureau If the listener doesn't have associate ds / display state, it is already unregistered. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Marc-Andr=C3=A9 Lureau --- ui/console.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/console.c b/ui/console.c index ff561617657..8f65308958a 100644 --- a/ui/console.c +++ b/ui/console.c @@ -675,6 +675,9 @@ void unregister_displaychangelistener(DisplayChangeList= ener *dcl) { DisplayState *ds =3D dcl->ds; trace_displaychangelistener_unregister(dcl, dcl->ops->dpy_name); + if (!ds) { + return; + } if (dcl->con) { dcl->con->dcls--; } --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364095; cv=none; d=zohomail.com; s=zohoarc; b=eUR6555Pn6t0WLY7XKAvqc8+6bHtdeQHNv92S/63F3a1prNndY+VvKzOwLtQn13Ab8nOkWy9xFRQ7VNw8H0sarw19bC3pREHR3o7UCcO/4KJhCadN7eizLPxPIYBn5dJ22r3nh8Hfg3C6Aa6XAZgnWvtspgDmCxchkv6kmg7qK0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364095; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=s9L/6AblAev/PwnIAz9/W3QdEbNXJcvSBN0P5+WOqoo=; b=nMJukzAvs2teAIey8eeq52zQKOdBVxQ/Rtnzni7DR5S4lfc9wwAQWuJU453mOJAtv/d/Q92Cbdf+/ajNaYuGg+/kAPOvMGu90/K3FJrK4IQsHh4ci/vg4/54/pd5KfJ+rFYhX3+BQR4EFXTWvxnCrdaxM1vsWNSwPdkEPgyZztw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177736409525672.54960026505091; Tue, 28 Apr 2026 01:14:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdZi-00063M-Be; Tue, 28 Apr 2026 04:13:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZh-00061R-Ff for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:45 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZg-00061g-4X for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:45 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-528-9mLba8DTOIqgAZBTzLYJpg-1; Tue, 28 Apr 2026 04:13:39 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CFC4519560BB; Tue, 28 Apr 2026 08:13:38 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 807F63000C22; Tue, 28 Apr 2026 08:13:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364023; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=s9L/6AblAev/PwnIAz9/W3QdEbNXJcvSBN0P5+WOqoo=; b=idcVJ9LheZQYXdOZXnaDB0LSfqcsO0syEH5d5JGCfID2RHtCISrOocX8ldeGUSL3DhiT0+ 87xpkCt5L3PS0ddRxdQ2IPD5Sd0RwdQtQAEBzYeSf40bbS1N/O+FzaXOgydbnUhupu3R5o nGgIrHq6aSxbzl6x4zXKW42SeYCBu/8= X-MC-Unique: 9mLba8DTOIqgAZBTzLYJpg-1 X-Mimecast-MFC-AGG-ID: 9mLba8DTOIqgAZBTzLYJpg_1777364019 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 05/15] ui: minor code simplification Date: Tue, 28 Apr 2026 12:12:52 +0400 Message-ID: <20260428081303.990973-6-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364096410158500 From: Marc-Andr=C3=A9 Lureau Drop memset() usage. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Marc-Andr=C3=A9 Lureau --- ui/sdl2.c | 8 ++++---- ui/vnc.c | 6 ++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/ui/sdl2.c b/ui/sdl2.c index 987ad334bbe..5dd612d9a6a 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -600,10 +600,10 @@ static void handle_windowevent(SDL_Event *ev) switch (ev->window.event) { case SDL_WINDOWEVENT_RESIZED: { - QemuUIInfo info; - memset(&info, 0, sizeof(info)); - info.width =3D ev->window.data1; - info.height =3D ev->window.data2; + QemuUIInfo info =3D { + .width =3D ev->window.data1, + .height =3D ev->window.data2, + }; dpy_set_ui_info(scon->dcl.con, &info, true); } sdl2_redraw(scon); diff --git a/ui/vnc.c b/ui/vnc.c index ad8d58a23d7..16dbb0cd6c2 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -43,6 +43,7 @@ #include "qapi/qapi-events-ui.h" #include "qapi/error.h" #include "qapi/qapi-commands-ui.h" +#include "ui/console.h" #include "ui/input.h" #include "crypto/hash.h" #include "crypto/tlscreds.h" @@ -2639,10 +2640,7 @@ static int protocol_client_msg(VncState *vs, uint8_t= *data, size_t len) =20 trace_vnc_msg_client_set_desktop_size(vs, vs->ioc, w, h, screens); if (dpy_ui_info_supported(vs->vd->dcl.con)) { - QemuUIInfo info; - memset(&info, 0, sizeof(info)); - info.width =3D w; - info.height =3D h; + QemuUIInfo info =3D { .width =3D w, .height =3D h }; dpy_set_ui_info(vs->vd->dcl.con, &info, false); vnc_desktop_resize_ext(vs, 4 /* Request forwarded */); } else { --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364136; cv=none; d=zohomail.com; s=zohoarc; b=EsjFicDanSgFRrLLVksmIvHEuJEpZtL/KTNzrn5KIBtp6qFdsVGBfihovijjPh54N19uOJUPCNLpyEFSrPBkAzL1xAEXVe0DPbrWzhkjlc3he0UmxTjMKLQouq/44DeGzCntpkkPdklVP/lHIwNGTkgnrET15Q556dK+2n1NCxI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364136; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KlMDlHyLLl3lxtcJ4Plm3iqjAmK+IozF6Q8bNz/RuwA=; b=TxBczzo0akwWnUapM1NVs8pXu1JCnAYG6Z4WsHDkps5Pg8RdHOpHVE6UGCrJ4azxPjT9DQluFAEi+XZ90oI2ZAPfNOhJSQjclZ77Hd/qufMkQg4x19QdBEw7Lw7Zf5dTHFO0UO2sxHXqBP6RuXPsso5at4Qo3BCJNoban+QbH/A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777364136779476.3999016178858; Tue, 28 Apr 2026 01:15:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdZm-000669-D3; Tue, 28 Apr 2026 04:13:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZl-00065I-3Y for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZj-00061q-K6 for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:48 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-592-aWm3J9ctMqyy2vqs8h0j7w-1; Tue, 28 Apr 2026 04:13:45 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 806731956095; Tue, 28 Apr 2026 08:13:44 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5C29D196B8FB; Tue, 28 Apr 2026 08:13:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364027; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KlMDlHyLLl3lxtcJ4Plm3iqjAmK+IozF6Q8bNz/RuwA=; b=QMyABl/l/oxWvs6Ent7pFNcPnFj2EL14lANU7gH2rLhQcn06+pKB4Tp+RfKC9sYFYSVYr2 E7xpOpuM5AX3wRUOmHrWY6CmUViIqFy9g21a/1Oc4XwtSxuEDv4unFUBobu7e34ihTQBVd +uv5B0kaHU8hVAzdMGnNtnFr8D1Wkoc= X-MC-Unique: aWm3J9ctMqyy2vqs8h0j7w-1 X-Mimecast-MFC-AGG-ID: aWm3J9ctMqyy2vqs8h0j7w_1777364024 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 06/15] ui: rename init_keyboard_layout->kbd_layout_new() Date: Tue, 28 Apr 2026 12:12:53 +0400 Message-ID: <20260428081303.990973-7-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364139619154100 From: Marc-Andr=C3=A9 Lureau Use a more convential name. Suggested-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Marc-Andr=C3=A9 Lureau --- ui/keymaps.h | 4 ++-- ui/curses.c | 4 ++-- ui/input-barrier.c | 4 ++-- ui/keymaps.c | 4 ++-- ui/vnc.c | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ui/keymaps.h b/ui/keymaps.h index e8917e56404..89bfbb2704d 100644 --- a/ui/keymaps.h +++ b/ui/keymaps.h @@ -52,8 +52,8 @@ typedef struct { =20 typedef struct kbd_layout_t kbd_layout_t; =20 -kbd_layout_t *init_keyboard_layout(const name2keysym_t *table, - const char *language, Error **errp); +kbd_layout_t *kbd_layout_new(const name2keysym_t *table, + const char *language, Error **errp); void kbd_layout_free(kbd_layout_t *k); int keysym2scancode(kbd_layout_t *k, int keysym, QKbdState *kbd, bool down); diff --git a/ui/curses.c b/ui/curses.c index 161f78c35c3..af4ccb4227d 100644 --- a/ui/curses.c +++ b/ui/curses.c @@ -770,8 +770,8 @@ static void curses_keyboard_setup(void) keyboard_layout =3D "en-us"; #endif if(keyboard_layout) { - kbd_layout =3D init_keyboard_layout(name2keysym, keyboard_layout, - &error_fatal); + kbd_layout =3D kbd_layout_new(name2keysym, keyboard_layout, + &error_fatal); } } =20 diff --git a/ui/input-barrier.c b/ui/input-barrier.c index 0a2198ca500..74724be8f45 100644 --- a/ui/input-barrier.c +++ b/ui/input-barrier.c @@ -679,8 +679,8 @@ static void input_barrier_instance_init(Object *obj) /* always use generic keymaps */ if (keyboard_layout && !kbd_layout) { /* We use X11 key id, so use VNC name2keysym */ - kbd_layout =3D init_keyboard_layout(name2keysym, keyboard_layout, - &error_fatal); + kbd_layout =3D kbd_layout_new(name2keysym, keyboard_layout, + &error_fatal); } =20 ib->saddr.type =3D SOCKET_ADDRESS_TYPE_INET; diff --git a/ui/keymaps.c b/ui/keymaps.c index d1b3f43dc8a..6822c097be7 100644 --- a/ui/keymaps.c +++ b/ui/keymaps.c @@ -187,8 +187,8 @@ void kbd_layout_free(kbd_layout_t *k) g_free(k); } =20 -kbd_layout_t *init_keyboard_layout(const name2keysym_t *table, - const char *language, Error **errp) +kbd_layout_t *kbd_layout_new(const name2keysym_t *table, + const char *language, Error **errp) { kbd_layout_t *k; =20 diff --git a/ui/vnc.c b/ui/vnc.c index 16dbb0cd6c2..c87d1f61a0a 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -3443,10 +3443,10 @@ void vnc_display_init(const char *id, Error **errp) =20 if (keyboard_layout) { trace_vnc_key_map_init(keyboard_layout); - vd->kbd_layout =3D init_keyboard_layout(name2keysym, - keyboard_layout, errp); + vd->kbd_layout =3D kbd_layout_new(name2keysym, + keyboard_layout, errp); } else { - vd->kbd_layout =3D init_keyboard_layout(name2keysym, "en-us", errp= ); + vd->kbd_layout =3D kbd_layout_new(name2keysym, "en-us", errp); } =20 if (!vd->kbd_layout) { --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364078; cv=none; d=zohomail.com; s=zohoarc; b=ZUYJAgADcIsM/+tuglTXY/QNvlv3ms6COq6rWPQwk0M62cVtW1/Q9VNGscCD3jNmMLF8oarQNzHCz0xiAJGsDGRi06iErmJisCRHEK9vJgBWgyn7ZuF+scZYb7hiVl/cH4rYtM4ZZvX+zOBkrIIP1ijjb/G5OghvTeydHxN5LY0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364078; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZBBF7t1JGaQ+5NkzBMe2IvOwuHtbPA/oX7g06ftpQZY=; b=hIKCzMFbd1a75jzUBtEshlF69119OxZzoOSjYEDmI9QcGzKd5GguYLsoMM98v1DNW0vp96PJtIpm9rPAjdVtSEpltcarVDjT2/SVpZBgYaEtJ9LSt/0VUlzCHP7twBYAVmUxs7kG1EUW1sLcIFl495St/qCiZwzmMpF4VSPLlw4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777364078804353.58562619915733; Tue, 28 Apr 2026 01:14:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdZr-00069h-SZ; Tue, 28 Apr 2026 04:13:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZq-000679-E0 for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:54 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdZo-00062A-P8 for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:13:54 -0400 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-480--TiiULULPFO0jEBIeQ57Ug-1; Tue, 28 Apr 2026 04:13:50 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 83FD61800358; Tue, 28 Apr 2026 08:13:49 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 860E3196B8FB; Tue, 28 Apr 2026 08:13:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364032; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZBBF7t1JGaQ+5NkzBMe2IvOwuHtbPA/oX7g06ftpQZY=; b=ghF490mASe8hENqzmZIlpPLx7jO29bjF7dljMscOtpM9CsRnGyhad8gNAHkQp/m7OkTpoR 3Luh62XoAvr3/F2pZ2g8wHtW7DzL1z2mjFxoX8juoA6GrEVgAdNkdUrg3ZVQwjpJbepX0x 5Q/uHXxttsqygpj+ZYHbvx1RrCJztzc= X-MC-Unique: -TiiULULPFO0jEBIeQ57Ug-1 X-Mimecast-MFC-AGG-ID: -TiiULULPFO0jEBIeQ57Ug_1777364029 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 07/15] ui/console: remove qemu_console_is_visible() Date: Tue, 28 Apr 2026 12:12:54 +0400 Message-ID: <20260428081303.990973-8-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364080703154100 From: Marc-Andr=C3=A9 Lureau Drop the bookkeeping, we can simply afford an empty "foreach". Notice that dpy_gfx_update_texture() is now called even when there are no listeners. This is more correct, as the texture is not fully refreshed when a listener connects, so it may be outdated/garbaged. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: Marc-Andr=C3=A9 Lureau --- include/ui/console.h | 1 - ui/console-priv.h | 1 - ui/console.c | 29 ----------------------------- 3 files changed, 31 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index e2e5ff76ec1..f04844263b9 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -399,7 +399,6 @@ QemuConsole *qemu_console_lookup_by_device(DeviceState = *dev, uint32_t head); QemuConsole *qemu_console_lookup_by_device_name(const char *device_id, uint32_t head, Error **err= p); QEMUCursor *qemu_console_get_cursor(QemuConsole *con); -bool qemu_console_is_visible(QemuConsole *con); bool qemu_console_is_graphic(QemuConsole *con); bool qemu_console_is_fixedsize(QemuConsole *con); bool qemu_console_is_gl_blocked(QemuConsole *con); diff --git a/ui/console-priv.h b/ui/console-priv.h index 39798c3e9d7..2299898984d 100644 --- a/ui/console-priv.h +++ b/ui/console-priv.h @@ -16,7 +16,6 @@ struct QemuConsole { DisplayState *ds; DisplaySurface *surface; DisplayScanout scanout; - int dcls; DisplayGLCtx *gl; int gl_block; QEMUTimer *gl_unblock_timer; diff --git a/ui/console.c b/ui/console.c index 8f65308958a..abb6cba2826 100644 --- a/ui/console.c +++ b/ui/console.c @@ -648,9 +648,6 @@ void register_displaychangelistener(DisplayChangeListen= er *dcl) dcl->ds =3D get_alloc_displaystate(); QLIST_INSERT_HEAD(&dcl->ds->listeners, dcl, next); gui_setup_refresh(dcl->ds); - if (dcl->con) { - dcl->con->dcls++; - } displaychangelistener_display_console(dcl, &error_fatal); if (QEMU_IS_GRAPHIC_CONSOLE(dcl->con)) { dcl_set_graphic_cursor(dcl, QEMU_GRAPHIC_CONSOLE(dcl->con)); @@ -678,9 +675,6 @@ void unregister_displaychangelistener(DisplayChangeList= ener *dcl) if (!ds) { return; } - if (dcl->con) { - dcl->con->dcls--; - } QLIST_REMOVE(dcl, next); dcl->ds =3D NULL; gui_setup_refresh(ds); @@ -745,9 +739,6 @@ void dpy_gfx_update(QemuConsole *con, int x, int y, int= w, int h) w =3D MIN(w, width - x); h =3D MIN(h, height - y); =20 - if (!qemu_console_is_visible(con)) { - return; - } dpy_gfx_update_texture(con, con->surface, x, y, w, h); QLIST_FOREACH(dcl, &s->listeners, next) { if (con !=3D dcl->con) { @@ -846,9 +837,6 @@ void dpy_text_cursor(QemuConsole *con, int x, int y) DisplayState *s =3D con->ds; DisplayChangeListener *dcl; =20 - if (!qemu_console_is_visible(con)) { - return; - } QLIST_FOREACH(dcl, &s->listeners, next) { if (con !=3D dcl->con) { continue; @@ -864,9 +852,6 @@ void dpy_text_update(QemuConsole *con, int x, int y, in= t w, int h) DisplayState *s =3D con->ds; DisplayChangeListener *dcl; =20 - if (!qemu_console_is_visible(con)) { - return; - } QLIST_FOREACH(dcl, &s->listeners, next) { if (con !=3D dcl->con) { continue; @@ -882,9 +867,6 @@ void dpy_text_resize(QemuConsole *con, int w, int h) DisplayState *s =3D con->ds; DisplayChangeListener *dcl; =20 - if (!qemu_console_is_visible(con)) { - return; - } QLIST_FOREACH(dcl, &s->listeners, next) { if (con !=3D dcl->con) { continue; @@ -904,9 +886,6 @@ void dpy_mouse_set(QemuConsole *c, int x, int y, bool o= n) con->cursor_x =3D x; con->cursor_y =3D y; con->cursor_on =3D on; - if (!qemu_console_is_visible(c)) { - return; - } QLIST_FOREACH(dcl, &s->listeners, next) { if (c !=3D dcl->con) { continue; @@ -925,9 +904,6 @@ void dpy_cursor_define(QemuConsole *c, QEMUCursor *curs= or) =20 cursor_unref(con->cursor); con->cursor =3D cursor_ref(cursor); - if (!qemu_console_is_visible(c)) { - return; - } QLIST_FOREACH(dcl, &s->listeners, next) { if (c !=3D dcl->con) { continue; @@ -1285,11 +1261,6 @@ QEMUCursor *qemu_console_get_cursor(QemuConsole *con) return QEMU_IS_GRAPHIC_CONSOLE(con) ? QEMU_GRAPHIC_CONSOLE(con)->curso= r : NULL; } =20 -bool qemu_console_is_visible(QemuConsole *con) -{ - return con->dcls > 0; -} - bool qemu_console_is_graphic(QemuConsole *con) { return con && QEMU_IS_GRAPHIC_CONSOLE(con); --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364069; cv=none; d=zohomail.com; s=zohoarc; b=Q/nKCMfwQzLw3w3GnAXv+24SYqiKsQzv5KTmvIgKJ6dhJlfjM7XHDA26gBgfEg/lEx74M8HN/7mp8LJpU8L5zAz8CyfqLIW3ZdqA8PKLi1pitZfD5bdE4iJUg7N13EOjxizuheZ9vPAE/l8nib0c61yG4pnJVADquGQ35zFq2nU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364069; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6Qd0r1ayC5mBpEHAxJW+wuu997v0hBPTSLNCW1+ff5s=; b=Z2z3JaCD3rUxEW4novGY4/WNeM1uiyzedaa0Cn/IEQ8PH8/pGWyWXUvfoH3K4ICewXYgrJKgYHvzOrck5DKebUJjX1Tb3pfQq+yKvYkvij/hFMOfr57u31mbZ91vG7iyiDEeWaqcKvYf36krLCJ0w30TyvW03oiyLcXgPj/9BhU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1777364069388704.8739645523332; Tue, 28 Apr 2026 01:14:29 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1295459.1572099 (Exim 4.92) (envelope-from ) id 1wHda6-0006lC-ES; Tue, 28 Apr 2026 08:14:10 +0000 Received: by outflank-mailman (output) from mailman id 1295459.1572099; Tue, 28 Apr 2026 08:14:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wHda6-0006l5-AF; Tue, 28 Apr 2026 08:14:10 +0000 Received: by outflank-mailman (input) for mailman id 1295459; Tue, 28 Apr 2026 08:14:09 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wHda4-0006kz-QJ for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 08:14:09 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wHda3-00BEh9-PA for xen-devel@lists.xenproject.org; Tue, 28 Apr 2026 10:14:07 +0200 Received: from [10.42.69.10] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69f06c4d-5cb7-0a2a0a5109dd-0a2a450a8020-12 for ; Tue, 28 Apr 2026 10:14:07 +0200 Received: from [170.10.133.124] (helo=us-smtp-delivery-124.mimecast.com) by tlsNG-4011c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 69f06c4e-56b3-0a2a450a0019-aa0a857c6839-3 for ; Tue, 28 Apr 2026 10:14:07 +0200 Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-638-8LCRAHWHN-681PVBa1sDpg-1; Tue, 28 Apr 2026 04:14:02 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CE3EC1800451; Tue, 28 Apr 2026 08:13:57 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 13AC8195608E; Tue, 28 Apr 2026 08:13:53 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mimecast20190719 header.d=redhat.com header.i="@redhat.com" header.h="From:Subject:Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:References" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364046; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6Qd0r1ayC5mBpEHAxJW+wuu997v0hBPTSLNCW1+ff5s=; b=BdlgkJdreuBusFwI0uNbIfkYpaofjAhJkT8UJSNIt60tcGsBRm1Ql171+qwfuS30wbWwJ4 VXLs+biMJ9LQtQD2fRzbeyRQtFsqaajimkwtMpiyd8QfpFui0HOlsC1BfyIPFd1jJUnvc3 hyfErmPMwYsex/0uwrrsrU0PNIImBLE= X-MC-Unique: 8LCRAHWHN-681PVBa1sDpg-1 X-Mimecast-MFC-AGG-ID: 8LCRAHWHN-681PVBa1sDpg_1777364039 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Jan Kiszka , Phil Dennis-Jordan , Richard Henderson , Helge Deller , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Gerd Hoffmann , Mark Cave-Ayland , Samuel Tardieu , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Aleksandar Rikalo , Laurent Vivier , Thomas Huth , BALATON Zoltan , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Akihiko Odaki , Dmitry Osipenko , "Michael S. Tsirkin" , Dmitry Fleytman , Stefano Stabellini , Anthony PERARD , "Edgar E. Iglesias" , Alistair Francis , Alex Williamson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , qemu-arm@nongnu.org (open list:Musicpal), qemu-ppc@nongnu.org (open list:sam460ex), xen-devel@lists.xenproject.org (open list:X86 Xen CPUs) Subject: [PULL 08/15] ui/console: return completion status from gfx_update callback Date: Tue, 28 Apr 2026 12:12:55 +0400 Message-ID: <20260428081303.990973-9-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-MFC-PROC-ID: PJGKQvBRH2XtP3Fvu266gg-QdLECtRhDLd-itFr5gmo_1777364039 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-4011c0/1777364047-81D808B7-2B14CF27/0/0 X-purgate-type: clean X-purgate-size: 32862 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364072736154100 From: Marc-Andr=C3=A9 Lureau Replace the two-field design (gfx_update void callback + gfx_update_async flag) with a single bool return value from gfx_update. Returning true means the update completed synchronously and graphic_hw_update_done() should be called by the console layer. Returning false means the update is deferred and the device will call graphic_hw_update_done() itself later (as done by QXL/SPICE and Apple GFX). This simplifies the interface and makes the async contract explicit at each call site rather than relying on a separate struct field. Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/display/qxl.h | 2 +- include/ui/console.h | 11 ++++++++--- hw/arm/musicpal.c | 3 ++- hw/display/artist.c | 4 +++- hw/display/bcm2835_fb.c | 7 ++++--- hw/display/bochs-display.c | 6 ++++-- hw/display/cg3.c | 5 +++-- hw/display/dm163.c | 4 +++- hw/display/exynos4210_fimd.c | 6 ++++-- hw/display/g364fb.c | 9 ++++++--- hw/display/jazz_led.c | 6 ++++-- hw/display/macfb.c | 6 ++++-- hw/display/next-fb.c | 4 +++- hw/display/omap_lcdc.c | 14 ++++++++------ hw/display/pl110.c | 5 +++-- hw/display/qxl-render.c | 6 +++--- hw/display/qxl.c | 7 +++---- hw/display/ramfb-standalone.c | 4 +++- hw/display/sm501.c | 8 +++++--- hw/display/ssd0303.c | 10 ++++++---- hw/display/ssd0323.c | 11 ++++++----- hw/display/tcx.c | 6 ++++-- hw/display/vga.c | 4 +++- hw/display/virtio-gpu-base.c | 3 ++- hw/display/virtio-vga.c | 6 +++--- hw/display/vmware_vga.c | 7 ++++--- hw/display/xenfb.c | 6 ++++-- hw/display/xlnx_dp.c | 10 ++++++---- hw/vfio/display.c | 17 ++++++++++------- ui/console.c | 7 +------ hw/display/apple-gfx.m | 10 +++++----- 31 files changed, 128 insertions(+), 86 deletions(-) diff --git a/hw/display/qxl.h b/hw/display/qxl.h index e0a85a5ca49..ad8a9128785 100644 --- a/hw/display/qxl.h +++ b/hw/display/qxl.h @@ -187,7 +187,7 @@ int qxl_log_command(PCIQXLDevice *qxl, const char *ring= , QXLCommandExt *ext); =20 /* qxl-render.c */ void qxl_render_resize(PCIQXLDevice *qxl); -void qxl_render_update(PCIQXLDevice *qxl); +bool qxl_render_update(PCIQXLDevice *qxl); int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext); void qxl_render_update_area_done(PCIQXLDevice *qxl, QXLCookie *cookie); void qxl_render_update_area_bh(void *opaque); diff --git a/include/ui/console.h b/include/ui/console.h index f04844263b9..0bc9e544fad 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -368,9 +368,14 @@ enum { typedef struct GraphicHwOps { int (*get_flags)(void *opaque); /* optional, default 0 */ void (*invalidate)(void *opaque); - void (*gfx_update)(void *opaque); - bool gfx_update_async; /* if true, calls graphic_hw_update_done() */ - void (*text_update)(void *opaque, console_ch_t *text); + /* + * Returns true if the update is handled synchronously, false if defer= red + * and graphic_hw_update_done() will be called when ready (to resume w= aiting + * tasks/coroutines). + * Optional. + */ + bool (*gfx_update)(void *opaque); + void (*text_update)(void *opaque, uint32_t *text); void (*ui_info)(void *opaque, uint32_t head, QemuUIInfo *info); void (*gl_block)(void *opaque, bool block); } GraphicHwOps; diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 441a11100a3..ba88ed756e2 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -152,7 +152,7 @@ static inline void set_lcd_pixel32(musicpal_lcd_state *= s, } } =20 -static void lcd_refresh(void *opaque) +static bool lcd_refresh(void *opaque) { musicpal_lcd_state *s =3D opaque; int x, y, col; @@ -171,6 +171,7 @@ static void lcd_refresh(void *opaque) } =20 dpy_gfx_update(s->con, 0, 0, 128*3, 64*3); + return true; } =20 static void lcd_invalidate(void *opaque) diff --git a/hw/display/artist.c b/hw/display/artist.c index 206f77afba1..a07508378c7 100644 --- a/hw/display/artist.c +++ b/hw/display/artist.c @@ -1311,7 +1311,7 @@ static void artist_draw_line(void *opaque, uint8_t *d= , const uint8_t *src, } } =20 -static void artist_update_display(void *opaque) +static bool artist_update_display(void *opaque) { ARTISTState *s =3D opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); @@ -1326,6 +1326,8 @@ static void artist_update_display(void *opaque) if (first >=3D 0) { dpy_gfx_update(s->con, 0, first, s->width, last - first + 1); } + + return true; } =20 static void artist_invalidate(void *opaque) diff --git a/hw/display/bcm2835_fb.c b/hw/display/bcm2835_fb.c index 75d7c0f8499..83c4c03c7ca 100644 --- a/hw/display/bcm2835_fb.c +++ b/hw/display/bcm2835_fb.c @@ -150,7 +150,7 @@ static bool fb_use_offsets(BCM2835FBConfig *config) config->yres_virtual > config->yres; } =20 -static void fb_update_display(void *opaque) +static bool fb_update_display(void *opaque) { BCM2835FBState *s =3D opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); @@ -161,7 +161,7 @@ static void fb_update_display(void *opaque) uint32_t xoff =3D 0, yoff =3D 0; =20 if (s->lock || !s->config.xres) { - return; + return true; } =20 src_width =3D bcm2835_fb_get_pitch(&s->config); @@ -174,7 +174,7 @@ static void fb_update_display(void *opaque) =20 switch (surface_bits_per_pixel(surface)) { case 0: - return; + return true; case 8: break; case 15: @@ -212,6 +212,7 @@ static void fb_update_display(void *opaque) } =20 s->invalidate =3D false; + return true; } =20 void bcm2835_fb_validate_config(BCM2835FBConfig *config) diff --git a/hw/display/bochs-display.c b/hw/display/bochs-display.c index 5fb6b733cb5..8ef9b76cf85 100644 --- a/hw/display/bochs-display.c +++ b/hw/display/bochs-display.c @@ -198,7 +198,7 @@ static int bochs_display_get_mode(BochsDisplayState *s, return 0; } =20 -static void bochs_display_update(void *opaque) +static bool bochs_display_update(void *opaque) { BochsDisplayState *s =3D opaque; DirtyBitmapSnapshot *snap =3D NULL; @@ -212,7 +212,7 @@ static void bochs_display_update(void *opaque) ret =3D bochs_display_get_mode(s, &mode); if (ret < 0) { /* no (valid) video mode */ - return; + return true; } =20 if (memcmp(&s->mode, &mode, sizeof(mode)) !=3D 0) { @@ -255,6 +255,8 @@ static void bochs_display_update(void *opaque) =20 g_free(snap); } + + return true; } =20 static const GraphicHwOps bochs_display_gfx_ops =3D { diff --git a/hw/display/cg3.c b/hw/display/cg3.c index 0a413fbb7ec..963bb3427a6 100644 --- a/hw/display/cg3.c +++ b/hw/display/cg3.c @@ -85,7 +85,7 @@ struct CG3State { uint8_t dac_index, dac_state; }; =20 -static void cg3_update_display(void *opaque) +static bool cg3_update_display(void *opaque) { CG3State *s =3D opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); @@ -98,7 +98,7 @@ static void cg3_update_display(void *opaque) DirtyBitmapSnapshot *snap =3D NULL; =20 if (surface_bits_per_pixel(surface) !=3D 32) { - return; + return true; } width =3D s->width; height =3D s->height; @@ -154,6 +154,7 @@ static void cg3_update_display(void *opaque) qemu_irq_raise(s->irq); } g_free(snap); + return true; } =20 static void cg3_invalidate_display(void *opaque) diff --git a/hw/display/dm163.c b/hw/display/dm163.c index 4feae912945..9ea62cb4f76 100644 --- a/hw/display/dm163.c +++ b/hw/display/dm163.c @@ -285,7 +285,7 @@ static uint32_t *update_display_of_row(DM163State *s, u= int32_t *dest, return dest; } =20 -static void dm163_update_display(void *opaque) +static bool dm163_update_display(void *opaque) { DM163State *s =3D (DM163State *)opaque; DisplaySurface *surface =3D qemu_console_surface(s->console); @@ -300,6 +300,8 @@ static void dm163_update_display(void *opaque) } dest =3D update_display_of_row(s, dest, row); } + + return true; } =20 static const GraphicHwOps dm163_ops =3D { diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c index 2d8fa7ee944..a91f04aaf79 100644 --- a/hw/display/exynos4210_fimd.c +++ b/hw/display/exynos4210_fimd.c @@ -1270,7 +1270,7 @@ static void exynos4210_update_resolution(Exynos4210fi= mdState *s) } } =20 -static void exynos4210_fimd_update(void *opaque) +static bool exynos4210_fimd_update(void *opaque) { Exynos4210fimdState *s =3D (Exynos4210fimdState *)opaque; DisplaySurface *surface; @@ -1287,7 +1287,7 @@ static void exynos4210_fimd_update(void *opaque) =20 if (!s || !s->console || !s->enabled || surface_bits_per_pixel(qemu_console_surface(s->console)) =3D=3D 0)= { - return; + return true; } =20 global_width =3D (s->vidtcon[2] & FIMD_VIDTCON2_SIZE_MASK) + 1; @@ -1348,6 +1348,8 @@ static void exynos4210_fimd_update(void *opaque) exynos4210_fimd_enable(s, false); } exynos4210_fimd_update_irq(s); + + return true; } =20 static void exynos4210_fimd_reset(DeviceState *d) diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c index 50952e9934b..bd15f6f0acc 100644 --- a/hw/display/g364fb.c +++ b/hw/display/g364fb.c @@ -238,15 +238,16 @@ static void g364fb_draw_blank(G364State *s) s->blanked =3D 1; } =20 -static void g364fb_update_display(void *opaque) +static bool g364fb_update_display(void *opaque) { G364State *s =3D opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); =20 qemu_flush_coalesced_mmio_buffer(); =20 - if (s->width =3D=3D 0 || s->height =3D=3D 0) - return; + if (s->width =3D=3D 0 || s->height =3D=3D 0) { + return true; + } =20 if (s->width !=3D surface_width(surface) || s->height !=3D surface_height(surface)) { @@ -262,6 +263,8 @@ static void g364fb_update_display(void *opaque) } =20 qemu_irq_raise(s->irq); + + return true; } =20 static inline void g364fb_invalidate_display(void *opaque) diff --git a/hw/display/jazz_led.c b/hw/display/jazz_led.c index 9d62e51bed9..7d1a020d4d9 100644 --- a/hw/display/jazz_led.c +++ b/hw/display/jazz_led.c @@ -144,7 +144,7 @@ static void draw_vertical_line(DisplaySurface *ds, } } =20 -static void jazz_led_update_display(void *opaque) +static bool jazz_led_update_display(void *opaque) { LedState *s =3D opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); @@ -186,7 +186,7 @@ static void jazz_led_update_display(void *opaque) color_led =3D rgb_to_pixel32(0x00, 0xff, 0x00); break; default: - return; + return true; } =20 /* display segments */ @@ -218,6 +218,8 @@ static void jazz_led_update_display(void *opaque) =20 s->state =3D REDRAW_NONE; dpy_gfx_update_full(s->con); + + return true; } =20 static void jazz_led_invalidate_display(void *opaque) diff --git a/hw/display/macfb.c b/hw/display/macfb.c index b8115c2be13..848c3c282bd 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -454,7 +454,7 @@ static gchar *macfb_mode_list(void) } =20 =20 -static void macfb_update_display(void *opaque) +static bool macfb_update_display(void *opaque) { MacfbState *s =3D opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); @@ -462,7 +462,7 @@ static void macfb_update_display(void *opaque) qemu_flush_coalesced_mmio_buffer(); =20 if (s->width =3D=3D 0 || s->height =3D=3D 0) { - return; + return true; } =20 if (s->width !=3D surface_width(surface) || @@ -471,6 +471,8 @@ static void macfb_update_display(void *opaque) } =20 macfb_draw_graphic(s); + + return true; } =20 static void macfb_update_irq(MacfbState *s) diff --git a/hw/display/next-fb.c b/hw/display/next-fb.c index 3d97702fce5..e758b223ef7 100644 --- a/hw/display/next-fb.c +++ b/hw/display/next-fb.c @@ -67,7 +67,7 @@ static void nextfb_draw_line(void *opaque, uint8_t *d, co= nst uint8_t *s, } } =20 -static void nextfb_update(void *opaque) +static bool nextfb_update(void *opaque) { NeXTFbState *s =3D NEXTFB(opaque); int dest_width =3D 4; @@ -90,6 +90,8 @@ static void nextfb_update(void *opaque) s, &first, &last); =20 dpy_gfx_update(s->con, 0, 0, s->cols, s->rows); + + return true; } =20 static void nextfb_invalidate(void *opaque) diff --git a/hw/display/omap_lcdc.c b/hw/display/omap_lcdc.c index c41c65bb2e0..1e8385ebffb 100644 --- a/hw/display/omap_lcdc.c +++ b/hw/display/omap_lcdc.c @@ -197,7 +197,7 @@ static void draw_line16_32(void *opaque, uint8_t *d, co= nst uint8_t *s, } while (-- width !=3D 0); } =20 -static void omap_update_display(void *opaque) +static bool omap_update_display(void *opaque) { struct omap_lcd_panel_s *omap_lcd =3D opaque; DisplaySurface *surface; @@ -207,12 +207,12 @@ static void omap_update_display(void *opaque) hwaddr frame_base; =20 if (!omap_lcd || omap_lcd->plm =3D=3D 1 || !omap_lcd->enable) { - return; + return true; } =20 surface =3D qemu_console_surface(omap_lcd->con); if (!surface_bits_per_pixel(surface)) { - return; + return true; } =20 frame_offset =3D 0; @@ -256,7 +256,7 @@ static void omap_update_display(void *opaque) =20 default: /* Unsupported at the moment. */ - return; + return true; } =20 /* Resolution */ @@ -278,7 +278,7 @@ static void omap_update_display(void *opaque) omap_lcd->sync_error =3D 1; omap_lcd_interrupts(omap_lcd); omap_lcd->enable =3D 0; - return; + return true; } =20 /* Content */ @@ -291,7 +291,7 @@ static void omap_update_display(void *opaque) omap_lcd->dma->current_frame ^=3D 1; =20 if (!surface_bits_per_pixel(surface)) { - return; + return true; } =20 first =3D 0; @@ -323,6 +323,8 @@ static void omap_update_display(void *opaque) dpy_gfx_update(omap_lcd->con, 0, first, width, last - first + 1); } omap_lcd->invalidate =3D 0; + + return true; } =20 static void omap_invalidate_display(void *opaque) { diff --git a/hw/display/pl110.c b/hw/display/pl110.c index 4cd62a98757..e134ac28eb6 100644 --- a/hw/display/pl110.c +++ b/hw/display/pl110.c @@ -210,7 +210,7 @@ static int pl110_enabled(PL110State *s) return (s->cr & PL110_CR_EN) && (s->cr & PL110_CR_PWR); } =20 -static void pl110_update_display(void *opaque) +static bool pl110_update_display(void *opaque) { PL110State *s =3D (PL110State *)opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); @@ -221,7 +221,7 @@ static void pl110_update_display(void *opaque) int last; =20 if (!pl110_enabled(s)) { - return; + return true; } =20 if (s->cr & PL110_CR_BGR) @@ -306,6 +306,7 @@ static void pl110_update_display(void *opaque) dpy_gfx_update(s->con, 0, first, s->cols, last - first + 1); } s->invalidate =3D 0; + return true; } =20 static void pl110_invalidate_display(void * opaque) diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c index c6a9ac1da10..5b4f8842011 100644 --- a/hw/display/qxl-render.c +++ b/hw/display/qxl-render.c @@ -173,7 +173,7 @@ end: * callbacks are called by spice_server thread, deferring to bh called fro= m the * io thread. */ -void qxl_render_update(PCIQXLDevice *qxl) +bool qxl_render_update(PCIQXLDevice *qxl) { QXLCookie *cookie; =20 @@ -183,8 +183,7 @@ void qxl_render_update(PCIQXLDevice *qxl) qxl->mode =3D=3D QXL_MODE_UNDEFINED) { qxl_render_update_area_unlocked(qxl); qemu_mutex_unlock(&qxl->ssd.lock); - graphic_hw_update_done(qxl->ssd.dcl.con); - return; + return true; } =20 qxl->guest_primary.commands =3D 0; @@ -195,6 +194,7 @@ void qxl_render_update(PCIQXLDevice *qxl) qxl_set_rect_to_surface(qxl, &cookie->u.render.area); qxl_spice_update_area(qxl, 0, &cookie->u.render.area, NULL, 0, 1 /* clear_dirty_region */, QXL_ASYNC, cookie= ); + return false; } =20 void qxl_render_update_area_bh(void *opaque) diff --git a/hw/display/qxl.c b/hw/display/qxl.c index f8fd7ee0698..0a3c42c8ec2 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -122,7 +122,7 @@ static void qxl_reset_memslots(PCIQXLDevice *d); static void qxl_reset_surfaces(PCIQXLDevice *d); static void qxl_ring_set_dirty(PCIQXLDevice *qxl); =20 -static void qxl_hw_update(void *opaque); +static bool qxl_hw_update(void *opaque); =20 void qxl_set_guest_bug(PCIQXLDevice *qxl, const char *msg, ...) { @@ -1144,7 +1144,6 @@ static const QXLInterface qxl_interface =3D { =20 static const GraphicHwOps qxl_ops =3D { .gfx_update =3D qxl_hw_update, - .gfx_update_async =3D true, }; =20 static void qxl_enter_vga_mode(PCIQXLDevice *d) @@ -1928,11 +1927,11 @@ static void qxl_send_events(PCIQXLDevice *d, uint32= _t events) =20 /* graphics console */ =20 -static void qxl_hw_update(void *opaque) +static bool qxl_hw_update(void *opaque) { PCIQXLDevice *qxl =3D opaque; =20 - qxl_render_update(qxl); + return qxl_render_update(qxl); } =20 static void qxl_dirty_one_surface(PCIQXLDevice *qxl, QXLPHYSICAL pqxl, diff --git a/hw/display/ramfb-standalone.c b/hw/display/ramfb-standalone.c index f1958be32ad..27f0ba19f90 100644 --- a/hw/display/ramfb-standalone.c +++ b/hw/display/ramfb-standalone.c @@ -20,7 +20,7 @@ struct RAMFBStandaloneState { bool use_legacy_x86_rom; }; =20 -static void display_update_wrapper(void *dev) +static bool display_update_wrapper(void *dev) { RAMFBStandaloneState *ramfb =3D RAMFB(dev); =20 @@ -29,6 +29,8 @@ static void display_update_wrapper(void *dev) } else { ramfb_display_update(ramfb->con, ramfb->state); } + + return true; } =20 static const GraphicHwOps wrapper_ops =3D { diff --git a/hw/display/sm501.c b/hw/display/sm501.c index a07aa9886f9..a3993ceba29 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -1716,7 +1716,7 @@ static void draw_hwc_line_32(uint8_t *d, const uint8_= t *s, int width, } } =20 -static void sm501_update_display(void *opaque) +static bool sm501_update_display(void *opaque) { SM501State *s =3D opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); @@ -1740,7 +1740,7 @@ static void sm501_update_display(void *opaque) =20 if (!((crt ? s->dc_crt_control : s->dc_panel_control) & SM501_DC_CRT_CONTROL_ENABLE)) { - return; + return true; } =20 palette =3D (uint32_t *)(crt ? &s->dc_palette[SM501_DC_CRT_PALETTE - @@ -1761,7 +1761,7 @@ static void sm501_update_display(void *opaque) default: qemu_log_mask(LOG_GUEST_ERROR, "sm501: update display" "invalid control register value.\n"); - return; + return true; } =20 /* set up to draw hardware cursor */ @@ -1833,6 +1833,8 @@ static void sm501_update_display(void *opaque) if (y_start >=3D 0) { dpy_gfx_update(s->con, 0, y_start, width, y - y_start); } + + return true; } =20 static const GraphicHwOps sm501_ops =3D { diff --git a/hw/display/ssd0303.c b/hw/display/ssd0303.c index 87781438cd5..229856cc427 100644 --- a/hw/display/ssd0303.c +++ b/hw/display/ssd0303.c @@ -203,7 +203,7 @@ static int ssd0303_event(I2CSlave *i2c, enum i2c_event = event) return 0; } =20 -static void ssd0303_update_display(void *opaque) +static bool ssd0303_update_display(void *opaque) { ssd0303_state *s =3D (ssd0303_state *)opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); @@ -218,11 +218,11 @@ static void ssd0303_update_display(void *opaque) uint8_t mask; =20 if (!s->redraw) - return; + return true; =20 switch (surface_bits_per_pixel(surface)) { case 0: - return; + return true; case 15: dest_width =3D 2; break; @@ -237,7 +237,7 @@ static void ssd0303_update_display(void *opaque) break; default: BADF("Bad color depth\n"); - return; + return true; } dest_width *=3D MAGNIFY; memset(colortab, 0xff, dest_width); @@ -269,6 +269,8 @@ static void ssd0303_update_display(void *opaque) } s->redraw =3D 0; dpy_gfx_update(s->con, 0, 0, 96 * MAGNIFY, 16 * MAGNIFY); + + return true; } =20 static void ssd0303_invalidate_display(void * opaque) diff --git a/hw/display/ssd0323.c b/hw/display/ssd0323.c index af5ff4fecdc..67db16086c8 100644 --- a/hw/display/ssd0323.c +++ b/hw/display/ssd0323.c @@ -181,7 +181,7 @@ static uint32_t ssd0323_transfer(SSIPeripheral *dev, ui= nt32_t data) return 0; } =20 -static void ssd0323_update_display(void *opaque) +static bool ssd0323_update_display(void *opaque) { ssd0323_state *s =3D (ssd0323_state *)opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); @@ -197,11 +197,11 @@ static void ssd0323_update_display(void *opaque) int dest_width; =20 if (!s->redraw) - return; + return true; =20 switch (surface_bits_per_pixel(surface)) { case 0: - return; + return true; case 15: dest_width =3D 2; break; @@ -216,7 +216,7 @@ static void ssd0323_update_display(void *opaque) break; default: BADF("Bad color depth\n"); - return; + return true; } p =3D colortab; for (i =3D 0; i < 16; i++) { @@ -240,7 +240,7 @@ static void ssd0323_update_display(void *opaque) break; default: BADF("Bad color depth\n"); - return; + return true; } p +=3D dest_width; } @@ -271,6 +271,7 @@ static void ssd0323_update_display(void *opaque) } s->redraw =3D 0; dpy_gfx_update(s->con, 0, 0, 128 * MAGNIFY, 64 * MAGNIFY); + return true; } =20 static void ssd0323_invalidate_display(void * opaque) diff --git a/hw/display/tcx.c b/hw/display/tcx.c index ea92a48400c..cedbf5c7acd 100644 --- a/hw/display/tcx.c +++ b/hw/display/tcx.c @@ -209,7 +209,7 @@ static inline void tcx24_draw_line32(TCXState *s1, uint= 8_t *d, /* Fixed line length 1024 allows us to do nice tricks not possible on VGA... */ =20 -static void tcx_update_display(void *opaque) +static bool tcx_update_display(void *opaque) { TCXState *ts =3D opaque; DisplaySurface *surface =3D qemu_console_surface(ts->con); @@ -257,9 +257,10 @@ static void tcx_update_display(void *opaque) ts->width, y - y_start); } g_free(snap); + return true; } =20 -static void tcx24_update_display(void *opaque) +static bool tcx24_update_display(void *opaque) { TCXState *ts =3D opaque; DisplaySurface *surface =3D qemu_console_surface(ts->con); @@ -312,6 +313,7 @@ static void tcx24_update_display(void *opaque) ts->width, y - y_start); } g_free(snap); + return true; } =20 static void tcx_invalidate_display(void *opaque) diff --git a/hw/display/vga.c b/hw/display/vga.c index 0d69a53f27a..776aa443246 100644 --- a/hw/display/vga.c +++ b/hw/display/vga.c @@ -1783,7 +1783,7 @@ static void vga_draw_blank(VGACommonState *s, int ful= l_update) #define GMODE_GRAPH 1 #define GMODE_BLANK 2 =20 -static void vga_update_display(void *opaque) +static bool vga_update_display(void *opaque) { VGACommonState *s =3D opaque; DisplaySurface *surface =3D qemu_console_surface(s->con); @@ -1818,6 +1818,8 @@ static void vga_update_display(void *opaque) break; } } + + return true; } =20 /* force a full display refresh */ diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c index cb76302e2d8..94cf362d152 100644 --- a/hw/display/virtio-gpu-base.c +++ b/hw/display/virtio-gpu-base.c @@ -83,8 +83,9 @@ static void virtio_gpu_invalidate_display(void *opaque) { } =20 -static void virtio_gpu_update_display(void *opaque) +static bool virtio_gpu_update_display(void *opaque) { + return true; } =20 static void virtio_gpu_text_update(void *opaque, console_ch_t *chardata) diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c index 5e087169f2f..f4713b91a66 100644 --- a/hw/display/virtio-vga.c +++ b/hw/display/virtio-vga.c @@ -19,15 +19,15 @@ static void virtio_vga_base_invalidate_display(void *op= aque) } } =20 -static void virtio_vga_base_update_display(void *opaque) +static bool virtio_vga_base_update_display(void *opaque) { VirtIOVGABase *vvga =3D opaque; VirtIOGPUBase *g =3D vvga->vgpu; =20 if (g->enable) { - g->hw_ops->gfx_update(g); + return g->hw_ops->gfx_update(g); } else { - vvga->vga.hw_ops->gfx_update(&vvga->vga); + return vvga->vga.hw_ops->gfx_update(&vvga->vga); } } =20 diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c index 2b95787ddfd..c84c84a445e 100644 --- a/hw/display/vmware_vga.c +++ b/hw/display/vmware_vga.c @@ -1135,14 +1135,13 @@ static inline void vmsvga_check_size(struct vmsvga_= state_s *s) } } =20 -static void vmsvga_update_display(void *opaque) +static bool vmsvga_update_display(void *opaque) { struct vmsvga_state_s *s =3D opaque; =20 if (!s->enable || !s->config) { /* in standard vga mode */ - s->vga.hw_ops->gfx_update(&s->vga); - return; + return s->vga.hw_ops->gfx_update(&s->vga); } =20 vmsvga_check_size(s); @@ -1154,6 +1153,8 @@ static void vmsvga_update_display(void *opaque) s->invalidated =3D 0; dpy_gfx_update_full(s->vga.con); } + + return true; } =20 static void vmsvga_reset(DeviceState *dev) diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c index ba886a940ee..2e431e27be6 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -709,14 +709,14 @@ static void xenfb_send_refresh_period(struct XenFB *x= enfb, int period) * Our screen might be inactive. When asked for * an update we know it is active. */ -static void xenfb_update(void *opaque) +static bool xenfb_update(void *opaque) { struct XenFB *xenfb =3D opaque; DisplaySurface *surface; int i; =20 if (xenfb->c.xendev.be_state !=3D XenbusStateConnected) - return; + return true; =20 if (!xenfb->feature_update) { /* we don't get update notifications, thus use the @@ -770,6 +770,8 @@ static void xenfb_update(void *opaque) } xenfb->up_count =3D 0; xenfb->up_fullscreen =3D 0; + + return true; } =20 static void xenfb_ui_info(void *opaque, uint32_t idx, QemuUIInfo *info) diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c index 7d037b46a35..50e6ef10984 100644 --- a/hw/display/xlnx_dp.c +++ b/hw/display/xlnx_dp.c @@ -1252,12 +1252,12 @@ static inline void xlnx_dp_blend_surface(XlnxDPStat= e *s) surface_height(s->g_plane.surface)); } =20 -static void xlnx_dp_update_display(void *opaque) +static bool xlnx_dp_update_display(void *opaque) { XlnxDPState *s =3D XLNX_DP(opaque); =20 if ((s->core_registers[DP_TRANSMITTER_ENABLE] & 0x01) =3D=3D 0) { - return; + return true; } =20 xlnx_dpdma_trigger_vsync_irq(s->dpdma); @@ -1272,14 +1272,14 @@ static void xlnx_dp_update_display(void *opaque) */ s->core_registers[DP_INT_STATUS] |=3D (1 << 21); xlnx_dp_update_irq(s); - return; + return true; } =20 if (xlnx_dp_global_alpha_enabled(s)) { if (!xlnx_dpdma_start_operation(s->dpdma, 0, false)) { s->core_registers[DP_INT_STATUS] |=3D (1 << 21); xlnx_dp_update_irq(s); - return; + return true; } xlnx_dp_blend_surface(s); } @@ -1288,6 +1288,8 @@ static void xlnx_dp_update_display(void *opaque) * XXX: We might want to update only what changed. */ dpy_gfx_update_full(s->console); + + return true; } =20 static const GraphicHwOps xlnx_dp_gfx_ops =3D { diff --git a/hw/vfio/display.c b/hw/vfio/display.c index 5a42a6f7a29..4a9a58036e3 100644 --- a/hw/vfio/display.c +++ b/hw/vfio/display.c @@ -285,7 +285,7 @@ static void vfio_display_free_dmabufs(VFIOPCIDevice *vd= ev) } } =20 -static void vfio_display_dmabuf_update(void *opaque) +static bool vfio_display_dmabuf_update(void *opaque) { VFIOPCIDevice *vdev =3D opaque; VFIODisplay *dpy =3D vdev->dpy; @@ -298,7 +298,7 @@ static void vfio_display_dmabuf_update(void *opaque) if (dpy->ramfb) { ramfb_display_update(dpy->con, dpy->ramfb); } - return; + return true; } =20 width =3D qemu_dmabuf_get_width(primary->buf); @@ -340,6 +340,8 @@ static void vfio_display_dmabuf_update(void *opaque) if (free_bufs) { vfio_display_free_dmabufs(vdev); } + + return true; } =20 static int vfio_display_get_flags(void *opaque) @@ -399,7 +401,7 @@ void vfio_display_reset(VFIOPCIDevice *vdev) dpy_gfx_update_full(vdev->dpy->con); } =20 -static void vfio_display_region_update(void *opaque) +static bool vfio_display_region_update(void *opaque) { VFIOPCIDevice *vdev =3D opaque; VFIODisplay *dpy =3D vdev->dpy; @@ -414,18 +416,18 @@ static void vfio_display_region_update(void *opaque) if (ret < 0) { error_report("ioctl VFIO_DEVICE_QUERY_GFX_PLANE: %s", strerror(errno)); - return; + return true; } if (!plane.drm_format || !plane.size) { if (dpy->ramfb) { ramfb_display_update(dpy->con, dpy->ramfb); dpy->region.surface =3D NULL; } - return; + return true; } format =3D qemu_drm_format_to_pixman(plane.drm_format); if (!format) { - return; + return true; } =20 if (dpy->region.buffer.size && @@ -476,11 +478,12 @@ static void vfio_display_region_update(void *opaque) dpy_gfx_update(dpy->con, 0, 0, surface_width(dpy->region.surface), surface_height(dpy->region.surface)); - return; + return true; =20 err: vfio_region_exit(&dpy->region.buffer); vfio_region_finalize(&dpy->region.buffer); + return true; } =20 static const GraphicHwOps vfio_display_region_ops =3D { diff --git a/ui/console.c b/ui/console.c index abb6cba2826..a608c29b843 100644 --- a/ui/console.c +++ b/ui/console.c @@ -136,15 +136,10 @@ void graphic_hw_update_done(QemuConsole *con) =20 void graphic_hw_update(QemuConsole *con) { - bool async =3D false; if (!con) { return; } - if (con->hw_ops->gfx_update) { - con->hw_ops->gfx_update(con->hw); - async =3D con->hw_ops->gfx_update_async; - } - if (!async) { + if (!con->hw_ops->gfx_update || con->hw_ops->gfx_update(con->hw)) { graphic_hw_update_done(con); } } diff --git a/hw/display/apple-gfx.m b/hw/display/apple-gfx.m index e0a765fcb1f..77d80fb7cef 100644 --- a/hw/display/apple-gfx.m +++ b/hw/display/apple-gfx.m @@ -330,25 +330,25 @@ static void apple_gfx_render_frame_completed_bh(void = *opaque) } } =20 -static void apple_gfx_fb_update_display(void *opaque) +static bool apple_gfx_fb_update_display(void *opaque) { AppleGFXState *s =3D opaque; + bool done =3D true; =20 assert(bql_locked()); if (s->new_frame_ready) { dpy_gfx_update_full(s->con); s->new_frame_ready =3D false; - graphic_hw_update_done(s->con); } else if (s->pending_frames > 0) { s->gfx_update_requested =3D true; - } else { - graphic_hw_update_done(s->con); + done =3D false; } + + return done; } =20 static const GraphicHwOps apple_gfx_fb_ops =3D { .gfx_update =3D apple_gfx_fb_update_display, - .gfx_update_async =3D true, }; =20 /* ------ Mouse cursor and display mode setting ------ */ --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364090; cv=none; d=zohomail.com; s=zohoarc; b=Bh/BzQwRH3soBopHzrKRzOx548fu+9FXr4rFMOi7Eateu0XxnN5cvBl12RVW56IQn1BPDgakJvBdMI0/vXvNpODbqHrwN/Fdgjpd7IWrFQHZGCghi5ptl5p11Tn5BgQX0F09WcvrD69YpAtAXliAqOJKVbap9ka+L7UHajEIr+8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364090; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=A/mpi7G9rL8KC/F4nDYxWvV9R1JjB0TCeVbGtyXxvrU=; b=h+GXy+ZG9DcvwdP9nNwHQp/Hc/P+qCdRXA+gTmTOVsJZ/I58FW4o/OEmMvAsvorL/ywPG0JGmg386ax4vG/YzysU9TFZd21RPyfE1IUHvpoIRo33KrE74m7+2vTEAonaim7SEzKn6lrZd4sEAkRH99TEkCt4SgjocgfV2LiUsZQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777364090853209.06525361267302; Tue, 28 Apr 2026 01:14:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdaB-0006Nt-9g; Tue, 28 Apr 2026 04:14:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHda8-0006KF-TM for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:12 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHda5-00063S-Mk for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:12 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-445-Vc8-WJfoM8GBI8FyjxyHMw-1; Tue, 28 Apr 2026 04:14:04 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E066C1955F0B; Tue, 28 Apr 2026 08:14:03 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 879EA180047F; Tue, 28 Apr 2026 08:14:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364048; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=A/mpi7G9rL8KC/F4nDYxWvV9R1JjB0TCeVbGtyXxvrU=; b=aTxMEVYp/y8PqpBtnlKBXDy7vHW589DSYLNMjEgmcUQ8WlOBF8MkEf5MXSsnmbS9RolzGC rqxkohc1w4kU4aOH73QqtYeqJiXV4WxvXHnluo7s8pmDdIhMEB5swmJxvcBIcRBX8iga30 b81s0KYS5ypaGsBHbL+MMUEA/pHL7GU= X-MC-Unique: Vc8-WJfoM8GBI8FyjxyHMw-1 X-Mimecast-MFC-AGG-ID: Vc8-WJfoM8GBI8FyjxyHMw_1777364044 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 09/15] ui/console: move console_handle_touch_event() to input Date: Tue, 28 Apr 2026 12:12:56 +0400 Message-ID: <20260428081303.990973-10-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364092646158500 From: Marc-Andr=C3=A9 Lureau The function uses input.c functions to provide a simpler abstraction for touch events. Let's move it from the already overloaded console.c, and to avoid some unnecessary dependency from console.c on input.c. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Marc-Andr=C3=A9 Lureau --- include/ui/console.h | 14 ---------- include/ui/input.h | 15 ++++++++++ ui/console.c | 65 -------------------------------------------- ui/dbus-console.c | 6 ++-- ui/gtk.c | 8 +++--- ui/input.c | 65 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 87 insertions(+), 86 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index 0bc9e544fad..27eacc39cc0 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -111,20 +111,6 @@ void qemu_text_console_put_keysym(QemuTextConsole *s, = int keysym); bool qemu_text_console_put_qcode(QemuTextConsole *s, int qcode, bool ctrl); void qemu_text_console_put_string(QemuTextConsole *s, const char *str, int= len); =20 -/* Touch devices */ -typedef struct touch_slot { - int x; - int y; - int tracking_id; -} touch_slot; - -void console_handle_touch_event(QemuConsole *con, - struct touch_slot touch_slots[INPUT_EVENT_= SLOTS_MAX], - uint64_t num_slot, - int width, int height, - double x, double y, - InputMultiTouchType type, - Error **errp); /* consoles */ =20 struct QemuConsoleClass { diff --git a/include/ui/input.h b/include/ui/input.h index 8f9aac562ed..52c164bde57 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -70,6 +70,21 @@ void qemu_input_queue_mtt_abs(QemuConsole *src, InputAxi= s axis, int value, int min_in, int max_in, int slot, int tracking_id); =20 +/* Touch devices */ +typedef struct touch_slot { + int x; + int y; + int tracking_id; +} touch_slot; + +void qemu_input_touch_event(QemuConsole *con, + struct touch_slot touch_slots[INPUT_EVENT_SLOT= S_MAX], + uint64_t num_slot, + int width, int height, + double x, double y, + InputMultiTouchType type, + Error **errp); + void qemu_input_check_mode_change(void); void qemu_add_mouse_mode_change_notifier(Notifier *notify); void qemu_remove_mouse_mode_change_notifier(Notifier *notify); diff --git a/ui/console.c b/ui/console.c index a608c29b843..799d61ec1a5 100644 --- a/ui/console.c +++ b/ui/console.c @@ -548,71 +548,6 @@ static bool console_compatible_with(QemuConsole *con, return true; } =20 -void console_handle_touch_event(QemuConsole *con, - struct touch_slot touch_slots[INPUT_EVENT_= SLOTS_MAX], - uint64_t num_slot, - int width, int height, - double x, double y, - InputMultiTouchType type, - Error **errp) -{ - struct touch_slot *slot; - bool needs_sync =3D false; - int update; - int i; - - if (num_slot >=3D INPUT_EVENT_SLOTS_MAX) { - error_setg(errp, - "Unexpected touch slot number: % " PRId64" >=3D %d", - num_slot, INPUT_EVENT_SLOTS_MAX); - return; - } - - slot =3D &touch_slots[num_slot]; - slot->x =3D x; - slot->y =3D y; - - if (type =3D=3D INPUT_MULTI_TOUCH_TYPE_BEGIN) { - slot->tracking_id =3D num_slot; - } - - for (i =3D 0; i < INPUT_EVENT_SLOTS_MAX; ++i) { - if (i =3D=3D num_slot) { - update =3D type; - } else { - update =3D INPUT_MULTI_TOUCH_TYPE_UPDATE; - } - - slot =3D &touch_slots[i]; - - if (slot->tracking_id =3D=3D -1) { - continue; - } - - if (update =3D=3D INPUT_MULTI_TOUCH_TYPE_END) { - slot->tracking_id =3D -1; - qemu_input_queue_mtt(con, update, i, slot->tracking_id); - needs_sync =3D true; - } else { - qemu_input_queue_mtt(con, update, i, slot->tracking_id); - qemu_input_queue_btn(con, INPUT_BUTTON_TOUCH, true); - qemu_input_queue_mtt_abs(con, - INPUT_AXIS_X, (int) slot->x, - 0, width, - i, slot->tracking_id); - qemu_input_queue_mtt_abs(con, - INPUT_AXIS_Y, (int) slot->y, - 0, height, - i, slot->tracking_id); - needs_sync =3D true; - } - } - - if (needs_sync) { - qemu_input_event_sync(); - } -} - void qemu_console_set_display_gl_ctx(QemuConsole *con, DisplayGLCtx *gl) { /* display has opengl support */ diff --git a/ui/dbus-console.c b/ui/dbus-console.c index 85e215ef233..564f004bd86 100644 --- a/ui/dbus-console.c +++ b/ui/dbus-console.c @@ -424,9 +424,9 @@ dbus_touch_send_event(DBusDisplayConsole *ddc, width =3D qemu_console_get_width(ddc->dcl.con, 0); height =3D qemu_console_get_height(ddc->dcl.con, 0); =20 - console_handle_touch_event(ddc->dcl.con, touch_slots, - num_slot, width, height, - x, y, kind, &error); + qemu_input_touch_event(ddc->dcl.con, touch_slots, + num_slot, width, height, + x, y, kind, &error); if (error !=3D NULL) { g_dbus_method_invocation_return_error( invocation, DBUS_DISPLAY_ERROR, diff --git a/ui/gtk.c b/ui/gtk.c index 9ebe7e8df0d..8fd39c90c29 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1201,10 +1201,10 @@ static gboolean gd_touch_event(GtkWidget *widget, G= dkEventTouch *touch, return FALSE; } =20 - console_handle_touch_event(vc->gfx.dcl.con, touch_slots, - num_slot, surface_width(vc->gfx.ds), - surface_height(vc->gfx.ds), touch->x, - touch->y, type, &err); + qemu_input_touch_event(vc->gfx.dcl.con, touch_slots, + num_slot, surface_width(vc->gfx.ds), + surface_height(vc->gfx.ds), touch->x, + touch->y, type, &err); if (err) { warn_report_err(err); } diff --git a/ui/input.c b/ui/input.c index 147e69c1c3c..57e7817878a 100644 --- a/ui/input.c +++ b/ui/input.c @@ -609,3 +609,68 @@ bool qemu_mouse_set(int index, Error **errp) notifier_list_notify(&mouse_mode_notifiers, NULL); return true; } + +void qemu_input_touch_event(QemuConsole *con, + struct touch_slot touch_slots[INPUT_EVENT_SLOT= S_MAX], + uint64_t num_slot, + int width, int height, + double x, double y, + InputMultiTouchType type, + Error **errp) +{ + struct touch_slot *slot; + bool needs_sync =3D false; + int update; + int i; + + if (num_slot >=3D INPUT_EVENT_SLOTS_MAX) { + error_setg(errp, + "Unexpected touch slot number: % " PRId64" >=3D %d", + num_slot, INPUT_EVENT_SLOTS_MAX); + return; + } + + slot =3D &touch_slots[num_slot]; + slot->x =3D x; + slot->y =3D y; + + if (type =3D=3D INPUT_MULTI_TOUCH_TYPE_BEGIN) { + slot->tracking_id =3D num_slot; + } + + for (i =3D 0; i < INPUT_EVENT_SLOTS_MAX; ++i) { + if (i =3D=3D num_slot) { + update =3D type; + } else { + update =3D INPUT_MULTI_TOUCH_TYPE_UPDATE; + } + + slot =3D &touch_slots[i]; + + if (slot->tracking_id =3D=3D -1) { + continue; + } + + if (update =3D=3D INPUT_MULTI_TOUCH_TYPE_END) { + slot->tracking_id =3D -1; + qemu_input_queue_mtt(con, update, i, slot->tracking_id); + needs_sync =3D true; + } else { + qemu_input_queue_mtt(con, update, i, slot->tracking_id); + qemu_input_queue_btn(con, INPUT_BUTTON_TOUCH, true); + qemu_input_queue_mtt_abs(con, + INPUT_AXIS_X, (int) slot->x, + 0, width, + i, slot->tracking_id); + qemu_input_queue_mtt_abs(con, + INPUT_AXIS_Y, (int) slot->y, + 0, height, + i, slot->tracking_id); + needs_sync =3D true; + } + } + + if (needs_sync) { + qemu_input_event_sync(); + } +} --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364106; cv=none; d=zohomail.com; s=zohoarc; b=NBQ+pH6jVNOkMmyQHMgh19OVyNxWtMr4ZvVLcjVl3CkMkXISksMtB+QWjmQ6iuLiqrg3BcaLYvcQTg1AKjomqQAlqthUvZdPaVJoCysSrc289WHde7SUn09JY7Pa/fVsBdeeOIND2LWONWVJbcaUKhvjqaZt9rAO0g1/JmS3XUM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364106; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=V/uJgRljr3eM84WgnzZfPw4Lpvi0j0W88Relj5J34U0=; b=TyyA1OqSEzntsLlCwqcCwAibUk8Ov9wyw5usT2DaE68sW2LeNbCVbqUbO1hURrzIb5k4CU86fOnjh1JLS0Bjj48G0GRZ9P1aL0zeDcCa7VFP1r28viXQ2auHff3iV/fw0SlNkuSlrSWetJefOPt291Z9UBoFWJqJbnbwa83916o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777364106777400.9460889321359; Tue, 28 Apr 2026 01:15:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdaC-0006Oz-4O; Tue, 28 Apr 2026 04:14:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdaA-0006Mz-Ex for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:14 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHda8-00063w-SW for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:14 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-381-78i04F_ZPlCzkFbShflAsA-1; Tue, 28 Apr 2026 04:14:10 -0400 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C5A3D18002C6; Tue, 28 Apr 2026 08:14:09 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B4CCB180047F; Tue, 28 Apr 2026 08:14:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364052; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=V/uJgRljr3eM84WgnzZfPw4Lpvi0j0W88Relj5J34U0=; b=UjcpiPaRxXanZj7T69Nz1VG4Z82169rbyWFcZnEhFc8sf1rW6Qz33EbAiktqitRZljcc6E Xu9FVEM4CgZqETGzqjUX7+/4S71ZR1zCFBpRF7XnjPJeHY2QdzqrqZxWI7VlA6mXIKs0C5 3QSXIATvPOKC2LCjnes9a9j0A6ais4Y= X-MC-Unique: 78i04F_ZPlCzkFbShflAsA-1 X-Mimecast-MFC-AGG-ID: 78i04F_ZPlCzkFbShflAsA_1777364049 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 10/15] ui/dbus: fix warning for clients without "Interfaces" property Date: Tue, 28 Apr 2026 12:12:57 +0400 Message-ID: <20260428081303.990973-11-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364108523158500 From: Marc-Andr=C3=A9 Lureau The "Interfaces" property is not strictly required. We can just assume the peer doesn't implement the given interface. Fix warning: GLib: g_strv_contains: assertion 'strv !=3D NULL' failed Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- ui/dbus-listener.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ui/dbus-listener.c b/ui/dbus-listener.c index 37945236e11..e5ce92d1257 100644 --- a/ui/dbus-listener.c +++ b/ui/dbus-listener.c @@ -1026,9 +1026,11 @@ static bool dbus_display_listener_implements(DBusDisplayListener *ddl, const char *ifa= ce) { QemuDBusDisplay1Listener *l =3D QEMU_DBUS_DISPLAY1_LISTENER(ddl->proxy= ); + const char * const *interfaces; bool implements; =20 - implements =3D g_strv_contains(qemu_dbus_display1_listener_get_interfa= ces(l), iface); + interfaces =3D qemu_dbus_display1_listener_get_interfaces(l); + implements =3D interfaces && g_strv_contains(interfaces, iface); if (!implements) { g_debug("Display listener does not implement: `%s`", iface); } --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364109; cv=none; d=zohomail.com; s=zohoarc; b=LG7YtT7BCbA4J+TzwAIYEu1MpTta4nbbNXK4zP3bYaytu7s/jI42+BtoaqCM0zKWjmgcojSEkqp05IkbyMb7YDoBsF2GYSAMpSPlt/ZbrfumlL7kRN7G0PFCdPpLMZHfaPbLzC9h4fOHHtMtHbyISpbst996WkndpnxdWUDU4wU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364109; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dhT5V+3dF1BVb/3WlHE7gkPc89Ly/aUzFnqb1nH25dg=; b=C2myPSUStup8Ey9zCnq4JikcQdPBNeMN0KioiJ8rOjGezJ+sV3uNTljr5e7T8vWVs2PBn/3Ue3S8nMPce68NgZEOI4sGoy+M1T1mYx1FdX+snL90jF3aA9/PsI8ZO8dDMp7SWevSmtLVOffeSJMbk7kSh01xH9Ft9WBZXF1rNcs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177736410910495.10990359797927; Tue, 28 Apr 2026 01:15:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdab-0006m1-Cr; Tue, 28 Apr 2026 04:14:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdaJ-0006bt-Eu for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:23 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdaH-000657-SO for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:23 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-119-7Pj9aKtcN4aLg_q50CJprg-1; Tue, 28 Apr 2026 04:14:17 -0400 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 0FFF71955DBD; Tue, 28 Apr 2026 08:14:16 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6F6071800446; Tue, 28 Apr 2026 08:14:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364060; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dhT5V+3dF1BVb/3WlHE7gkPc89Ly/aUzFnqb1nH25dg=; b=TeMV2Hkp06P6nTo+U5k3WJQk/MFNoLeJdpmQPZ8Afy6WUBMoEWEN99ijkpI1koqZIo5w/Q eCGZXaHJ+taSQLKxQrSKwTVMNRODisOvlGvJeD9O0RA3H4POBeKHTLNiYxB0chKk+MscxS XEYpRXupZOvAsFZDwpAo3R8BeGyyo/4= X-MC-Unique: 7Pj9aKtcN4aLg_q50CJprg-1 X-Mimecast-MFC-AGG-ID: 7Pj9aKtcN4aLg_q50CJprg_1777364056 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Akihiko Odaki , Gerd Hoffmann , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 11/15] audio: Avoid unsigned sample wraparound Date: Tue, 28 Apr 2026 12:12:58 +0400 Message-ID: <20260428081303.990973-12-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364111873154100 From: Akihiko Odaki When !defined(SIGNED), nv - HALF will wrap around if nv < HALF because nv and HALF are unsigned. Fix it by casting nv to mixeng_real, which is signed. Signed-off-by: Akihiko Odaki Acked-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260423-audio-v1-1-e1d6b65c76f9@rsg.ci.i.u-tokyo.ac.jp> --- audio/mixeng_template.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/audio/mixeng_template.h b/audio/mixeng_template.h index bc8509e423f..881653c44bf 100644 --- a/audio/mixeng_template.h +++ b/audio/mixeng_template.h @@ -43,13 +43,13 @@ static inline mixeng_real glue (conv_, ET) (IN_T v) #ifdef SIGNED return nv * (2.f / ((mixeng_real)IN_MAX - IN_MIN)); #else - return (nv - HALF) * (2.f / (mixeng_real)IN_MAX); + return ((mixeng_real)nv - HALF) * (2.f / (mixeng_real)IN_MAX); #endif #else /* !RECIPROCAL */ #ifdef SIGNED return nv / (((mixeng_real)IN_MAX - IN_MIN) / 2.f); #else - return (nv - HALF) / ((mixeng_real)IN_MAX / 2.f); + return ((mixeng_real)nv - HALF) / ((mixeng_real)IN_MAX / 2.f); #endif #endif } --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364127; cv=none; d=zohomail.com; s=zohoarc; b=i1GAZRkrPiBdGzT0UWElW+/r8cOyT+4UPzqUpC4A7m91hwuHvR6OllmyyVmxUhAZAfLUKK12O/KYv35t1An0YCQ7gdnbGiAO9PYDOXPsIXCWqzASfaoBceaIwBsmSCHmpcKCpiyVwRtCLVloYJc8Hw5enOeHpTA1RaO70Hs2a4k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364127; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7XgOkAjsKIJNpzlp0Ng9zVsL4Sb3WXmh337O8gNtq/A=; b=BQIlHElA0vP/AfA3JSwth3X9gsOnU9TBHW54rs71a3t3uMbmIKrML6Mzjsy8vt6SXm1DJgIL0q9uWeaFS3Um88t3VoEI3JgBEcIQKrjzBz1arWtl2AWlOqIw3DR0uols97JFXY2H2NnIaPE3o1byc4OJHDRmslxkhLqmtnik3Wc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777364127446624.639573029105; Tue, 28 Apr 2026 01:15:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdam-0007Dz-BQ; Tue, 28 Apr 2026 04:14:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdaS-0006mO-Mr for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:35 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdaP-000670-FT for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:30 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-363-I6z8aNFDNBmpQ3YWx-2M4A-1; Tue, 28 Apr 2026 04:14:23 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1FB811956080; Tue, 28 Apr 2026 08:14:22 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6070519560AB; Tue, 28 Apr 2026 08:14:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364065; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7XgOkAjsKIJNpzlp0Ng9zVsL4Sb3WXmh337O8gNtq/A=; b=hiDfKQwaGA/b8YGznp5bo5pcu61N6fAGahoT9JqtEYd3XTBjE8TpbolBJs3YmFEWFCFYNp kdqn3nIMRqPQIPDZu5xcF9KbXYTmhKqeoALGRndi9YbotByKVmaae+AQWvnAymZk9zU4D0 KmXSAxhE205aceByujYDfkdqH9ACSk8= X-MC-Unique: I6z8aNFDNBmpQ3YWx-2M4A-1 X-Mimecast-MFC-AGG-ID: I6z8aNFDNBmpQ3YWx-2M4A_1777364062 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Akihiko Odaki , Gerd Hoffmann , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 12/15] audio: Clamp unsigned sample conversion Date: Tue, 28 Apr 2026 12:12:59 +0400 Message-ID: <20260428081303.990973-13-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364129503154101 From: Akihiko Odaki clip_*_uint32_t() returns 0 when v =3D=3D 1.f because it computes the result as (IN_T)((v * ((mixeng_real)IN_MAX / 2.f)) + HALF): - (v * ((mixeng_real)IN_MAX / 2.f)) + HALF =3D=3D 0x100000000.f, which does not fit in uint32_t. - (v * ((mixeng_real)IN_MAX / 2.f)) =3D=3D 0x80000000.f - ((mixeng_real)IN_MAX / 2.f) =3D=3D 0x80000000.f - (mixeng_real)IN_MAX =3D=3D 0x100000000.f because 0xffffffff cannot be represented exactly in float. - HALF =3D=3D 0x7fffffff, which is implicitly converted to 0x80000000.f. Clamp the result to avoid the overflow. Signed-off-by: Akihiko Odaki Acked-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260423-audio-v1-2-e1d6b65c76f9@rsg.ci.i.u-tokyo.ac.jp> --- audio/mixeng_template.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/audio/mixeng_template.h b/audio/mixeng_template.h index 881653c44bf..5b0014bdd9a 100644 --- a/audio/mixeng_template.h +++ b/audio/mixeng_template.h @@ -65,7 +65,9 @@ static inline IN_T glue (clip_, ET) (mixeng_real v) #ifdef SIGNED return ENDIAN_CONVERT((IN_T)(v * (((mixeng_real)IN_MAX - IN_MIN) / 2.f= ))); #else - return ENDIAN_CONVERT((IN_T)((v * ((mixeng_real)IN_MAX / 2.f)) + HALF)= ); + return ENDIAN_CONVERT(MIN((int64_t)((v * ((mixeng_real)IN_MAX / 2.f)) + + HALF), + IN_MAX)); #endif } =20 --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364135; cv=none; d=zohomail.com; s=zohoarc; b=mdHwjyAF5BD3qABhPBQQcC1HpxjajwyivAtF4IkA0mhP0RHmvtwDx+CPomhAwrRm3+Cp5+FNnaMdxEdjKu2RkjwXalCTT13s7MA9H2TxUCkbemXO5tFJPZGplyFWdwG+pIvJh4pX+4dPXWW+wo8k8i4ysMj+3WlGa6XDWmDHPVw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364135; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=msfcYbXdPoxDb4VF0TVAMI3ngZnG5gWrGEoAA3b9h/I=; b=CQTwgK/wsbXY3ntYb8e29CFlXBtJw4LAGX4T8qxxb84p1hqMy53OQBYmCViRHqTwKK/lTHNBGD3stMTxIT4/y5DF7LoE1SJi0EbZ9Nj1CW5ZK0cN0B9RGfLSlRoawiMKQd6KlflZceEcKhlhskm1mOnuQxykeWAlRaS4upjRwZ0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777364135633643.9535536464388; Tue, 28 Apr 2026 01:15:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdap-0007Nb-Cy; Tue, 28 Apr 2026 04:14:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdaU-0006oE-PI for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:36 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdaT-0006AK-1b for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:34 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-197-wKHKDJdlOJCTK1bjJnrX0Q-1; Tue, 28 Apr 2026 04:14:28 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C31FE195609E; Tue, 28 Apr 2026 08:14:27 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A5C4119560B7; Tue, 28 Apr 2026 08:14:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364072; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=msfcYbXdPoxDb4VF0TVAMI3ngZnG5gWrGEoAA3b9h/I=; b=YfqUTIe5Z6c9Kk4qVSWyxgfqXHhTfx15usWAKYtHTzXY6GJi+3QSCub9CZ/rNyMnd3hdWJ bqBu0UgMaKha6Pe7IlNTmf5XNHOK5WWVFWNM6B76iwP+Cdu505SgJ5he0MejhT/hDe5O0J lol5WSzzxBW/Q+l6fLlLN3FqqNjRKQg= X-MC-Unique: wKHKDJdlOJCTK1bjJnrX0Q-1 X-Mimecast-MFC-AGG-ID: wKHKDJdlOJCTK1bjJnrX0Q_1777364067 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Akihiko Odaki , Gerd Hoffmann , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 13/15] audio: Use unsigned PCM bias Date: Tue, 28 Apr 2026 12:13:00 +0400 Message-ID: <20260428081303.990973-14-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364136625158500 From: Akihiko Odaki Clang warns for the uint32_t clip_ instantiations because HALF cannot be represented with mixeng_real: [1115/2559] Compiling C object libqemuaudio.a.p/audio_mixeng.c.o In file included from ../../qemu/audio/mixeng.c:147: ../../qemu/audio/mixeng_template.h:68:70: warning: implicit conversion from= 'unsigned int' to 'float' changes value from 2147483647 to 2147483648 [-Wi= mplicit-const-int-float-conversion] 68 | return ENDIAN_CONVERT((IN_T)((v * ((mixeng_real)IN_MAX / 2.f)) = + HALF)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~^~~~~~ ../../qemu/audio/mixeng_template.h:31:22: note: expanded from macro 'HALF' 31 | #define HALF (IN_MAX >> 1) | ^ ../../qemu/audio/mixeng.c:146:28: note: expanded from macro 'ENDIAN_CONVERT' 146 | #define ENDIAN_CONVERT(v) (v) | ^ In file included from ../../qemu/audio/mixeng.c:152: ../../qemu/audio/mixeng_template.h:68:70: warning: implicit conversion from= 'unsigned int' to 'float' changes value from 2147483647 to 2147483648 [-Wi= mplicit-const-int-float-conversion] 68 | return ENDIAN_CONVERT((IN_T)((v * ((mixeng_real)IN_MAX / 2.f)) = + HALF)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~^~~~~~ ../../qemu/audio/mixeng_template.h:31:22: note: expanded from macro 'HALF' 31 | #define HALF (IN_MAX >> 1) | ^ ../../qemu/audio/mixeng.c:151:36: note: expanded from macro 'ENDIAN_CONVERT' 151 | #define ENDIAN_CONVERT(v) bswap32 (v) | ~~~~~~~~~^~ /Users/person/v/qemu/include/qemu/bswap.h:10:39: note: expanded from macro = 'bswap32' 10 | #define bswap32(_x) __builtin_bswap32(_x) | ^~ 2 warnings generated. HALF is not the right value here anyway. IN_MAX is odd, so the integer sample range has two middle codes. Unsigned PCM normally uses the upper middle code as the "bias": 0x80, 0x8000, or 0x80000000. HALF is instead defined as the lower middle code: 0x7f, 0x7fff, or 0x7fffffff. Replace HALF with BIAS, defined as the upper middle code. This fixes the warnings, since the value can be exactly represented with mixeng_real. Signed-off-by: Akihiko Odaki Acked-by: Marc-Andr=C3=A9 Lureau Message-Id: <20260423-audio-v1-3-e1d6b65c76f9@rsg.ci.i.u-tokyo.ac.jp> --- audio/mixeng_template.h | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/audio/mixeng_template.h b/audio/mixeng_template.h index 5b0014bdd9a..6db742188ed 100644 --- a/audio/mixeng_template.h +++ b/audio/mixeng_template.h @@ -28,7 +28,7 @@ */ =20 #ifndef SIGNED -#define HALF (IN_MAX >> 1) +#define BIAS ((IN_T)1 << (SHIFT - 1)) #endif =20 #define ET glue (ENDIAN_CONVERSION, glue (glue (glue (_, ITYPE), BSIZE), _= t)) @@ -43,13 +43,13 @@ static inline mixeng_real glue (conv_, ET) (IN_T v) #ifdef SIGNED return nv * (2.f / ((mixeng_real)IN_MAX - IN_MIN)); #else - return ((mixeng_real)nv - HALF) * (2.f / (mixeng_real)IN_MAX); + return ((mixeng_real)nv - BIAS) * (1.f / BIAS); #endif #else /* !RECIPROCAL */ #ifdef SIGNED return nv / (((mixeng_real)IN_MAX - IN_MIN) / 2.f); #else - return ((mixeng_real)nv - HALF) / ((mixeng_real)IN_MAX / 2.f); + return ((mixeng_real)nv - BIAS) / BIAS; #endif #endif } @@ -65,9 +65,7 @@ static inline IN_T glue (clip_, ET) (mixeng_real v) #ifdef SIGNED return ENDIAN_CONVERT((IN_T)(v * (((mixeng_real)IN_MAX - IN_MIN) / 2.f= ))); #else - return ENDIAN_CONVERT(MIN((int64_t)((v * ((mixeng_real)IN_MAX / 2.f)) + - HALF), - IN_MAX)); + return ENDIAN_CONVERT(MIN((int64_t)(v * BIAS) + BIAS, IN_MAX)); #endif } =20 @@ -79,7 +77,7 @@ static inline int64_t glue (conv_, ET) (IN_T v) #ifdef SIGNED return ((int64_t) nv) << (32 - SHIFT); #else - return ((int64_t) nv - HALF) << (32 - SHIFT); + return ((int64_t) nv - BIAS) << (32 - SHIFT); #endif } =20 @@ -94,7 +92,7 @@ static inline IN_T glue (clip_, ET) (int64_t v) #ifdef SIGNED return ENDIAN_CONVERT ((IN_T) (v >> (32 - SHIFT))); #else - return ENDIAN_CONVERT ((IN_T) ((v >> (32 - SHIFT)) + HALF)); + return ENDIAN_CONVERT((IN_T)((v >> (32 - SHIFT)) + BIAS)); #endif } #endif @@ -150,5 +148,5 @@ static void glue (glue (clip_, ET), _from_mono) } =20 #undef ET -#undef HALF +#undef BIAS #undef IN_T --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364118; cv=none; d=zohomail.com; s=zohoarc; b=VylxLoKWAonwb+hTv9yormtAZEehA8tGKR5JsBzckzjLHoBsGpHelTYAMaJx+BVXtj6+Udc11Cx+c6Z4G2i7/g5vGe16o5S/NFI9TCK1cPlxU7vmAl1M/ZVXU0TFhllatJ3GC+WFKdqDE0V5yvgHlRFJyzMdaaepxoka6xuCsxo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364118; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wJYvvcZRba3I1zKU++du8AS3XrBP5bifa0DkUwP4SUE=; b=dzJ7pUYC8KpxWpjHBDa6EZeSbz5JXVWNFRegIvqFmakL9+5OrP/qeYeo/DkRrRIJoxU5JbeyiEyAsiHESq+k/ckFay4XZieKbMvmVDqqz067Rbd4IzT1oM+n8Huw3ecVyIabTWpr9jVUdrLU/bXBWa7qVgxpE3cDQXvc+iDhpCk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777364118048936.0509860821852; Tue, 28 Apr 2026 01:15:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdap-0007QC-KB; Tue, 28 Apr 2026 04:15:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdac-0006v0-J3 for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdaY-0006BF-QK for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:40 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-460-8tDN4GZOPSqnY09l8vfjXg-1; Tue, 28 Apr 2026 04:14:33 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C9E83195609E; Tue, 28 Apr 2026 08:14:32 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1467419560B1; Tue, 28 Apr 2026 08:14:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364077; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wJYvvcZRba3I1zKU++du8AS3XrBP5bifa0DkUwP4SUE=; b=FCOXdeBWqhjy/lcnxh/IqZjR7+oEhRuf1uQAKGm8NAGuvVVkxo+kEeXA40/Bkrt7AOg91l aMrdBA/4PRyo929t+MNFKEQ2j4KhiSffw8mG1N7Icu7XJWPs8R1aqXzgQB07Oht39UfuPN ppAs0NRZNQElf6OBU+j0jL03Mrbu4IA= X-MC-Unique: 8tDN4GZOPSqnY09l8vfjXg-1 X-Mimecast-MFC-AGG-ID: 8tDN4GZOPSqnY09l8vfjXg_1777364072 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Jind=C5=99ich=20Makovi=C4=8Dka?= , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PULL 14/15] ui/gtk: Use non-blocking clipboard retrieval Date: Tue, 28 Apr 2026 12:13:01 +0400 Message-ID: <20260428081303.990973-15-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364118606158501 From: Jind=C5=99ich Makovi=C4=8Dka Signed-off-by: Jindrich Makovicka Reviewed-by: Marc-Andr=C3=A9 Lureau Message-ID: <20260427-gtk-clipboard-v5-1-6968feb31a5d@gmail.com> --- ui/gtk-clipboard.c | 53 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/ui/gtk-clipboard.c b/ui/gtk-clipboard.c index 65d89ec601d..463ed4e905b 100644 --- a/ui/gtk-clipboard.c +++ b/ui/gtk-clipboard.c @@ -136,26 +136,55 @@ static void gd_clipboard_notify(Notifier *notifier, v= oid *data) } } =20 +static void +gd_clipboard_request_text_received_callback(GtkClipboard *clipboard, + const gchar *text, + gpointer data) +{ + QemuClipboardInfo *info =3D (QemuClipboardInfo *)data; + + if (text) { + qemu_clipboard_set_data(info->owner, info, QEMU_CLIPBOARD_TYPE_TEX= T, + strlen(text), text, true); + } + qemu_clipboard_info_unref(info); +} + static void gd_clipboard_request(QemuClipboardInfo *info, QemuClipboardType type) { GtkDisplayState *gd =3D container_of(info->owner, GtkDisplayState, cbp= eer); - char *text; =20 switch (type) { case QEMU_CLIPBOARD_TYPE_TEXT: - text =3D gtk_clipboard_wait_for_text(gd->gtkcb[info->selection]); - if (text) { - qemu_clipboard_set_data(&gd->cbpeer, info, type, - strlen(text), text, true); - g_free(text); - } + qemu_clipboard_info_ref(info); + gtk_clipboard_request_text(gd->gtkcb[info->selection], + gd_clipboard_request_text_received_call= back, + info); break; default: break; } } =20 +static void gd_clipboard_owner_change_targets_received_callback( + GtkClipboard *clipboard, + GdkAtom *targets, + gint n_targets, + gpointer data) +{ + QemuClipboardInfo *info =3D (QemuClipboardInfo *)data; + + if (n_targets) { + if (gtk_targets_include_text(targets, n_targets)) { + info->types[QEMU_CLIPBOARD_TYPE_TEXT].available =3D true; + } + } + + qemu_clipboard_update(info); + qemu_clipboard_info_unref(info); +} + static void gd_owner_change(GtkClipboard *clipboard, GdkEvent *event, gpointer data) @@ -173,12 +202,10 @@ static void gd_owner_change(GtkClipboard *clipboard, switch (event->owner_change.reason) { case GDK_OWNER_CHANGE_NEW_OWNER: info =3D qemu_clipboard_info_new(&gd->cbpeer, s); - if (gtk_clipboard_wait_is_text_available(clipboard)) { - info->types[QEMU_CLIPBOARD_TYPE_TEXT].available =3D true; - } - - qemu_clipboard_update(info); - qemu_clipboard_info_unref(info); + gtk_clipboard_request_targets( + clipboard, + gd_clipboard_owner_change_targets_received_callback, + info); break; default: qemu_clipboard_peer_release(&gd->cbpeer, s); --=20 2.53.0 From nobody Sat May 30 19:23:14 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1777364136; cv=none; d=zohomail.com; s=zohoarc; b=SoL6e2IsYOF7Dr5HxtLo9Gj/gCBYKenQP14m99D7LvT2rev4ocg8IrvUWUpsOLc9u3L3X6yvmLbTI7u2KJg3Qyqe2Yi6GORGRlMfVKM1Zsj4RszwXjJH2BlK3o+jMgq3jiJ5Gn98bDm9+rL4AjuJ4J+bkyejxagkno/9y6nJ96c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777364136; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CkoMxUm4vsgMt7DasSOOyZM2kaQiTX4th3X5ACDgNNI=; b=RxoieyqyoeBl8Pjpqzsn97n/rJVQKTTql4x4LgVGvWSWMTUUNA30Wl4lBh9s/e7ZCVSdRxsqB7vRla6HnL/9gAeOQJGAkBM5Ltjis3ekW/Hku9e6zt9ClbUndwvDJr5No9FsNVMu7PwL1i34X0QZpmudrqa1JQBXjckfHaz8/KA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177736413614654.165146869020646; Tue, 28 Apr 2026 01:15:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHdap-0007Q2-Im; Tue, 28 Apr 2026 04:15:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdaf-0006xa-VB for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:50 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHdad-0006Bd-Pu for qemu-devel@nongnu.org; Tue, 28 Apr 2026 04:14:45 -0400 Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-70-AXIsalAMOI2suB3Wh88mLg-1; Tue, 28 Apr 2026 04:14:39 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 6AEB71800378; Tue, 28 Apr 2026 08:14:38 +0000 (UTC) Received: from localhost (unknown [10.44.24.6]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id F05213000C22; Tue, 28 Apr 2026 08:14:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1777364083; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CkoMxUm4vsgMt7DasSOOyZM2kaQiTX4th3X5ACDgNNI=; b=B79FosKGe+ioj/xQF8OAZGhSvWZk2MCza3PGy5XYJfkzEVnKtw+RFEXEvFuVYIZEDljQYl XUG6IjJk3BCkWpEXcwp0d8xsTr/prPJ5bylwd+eyq+MCsZWAu+O6SnMtvifCcRcv1eBlXd f8rFm4u1TxJD70pt2Osc/k3gjAovPsM= X-MC-Unique: AXIsalAMOI2suB3Wh88mLg-1 X-Mimecast-MFC-AGG-ID: AXIsalAMOI2suB3Wh88mLg_1777364078 From: marcandre.lureau@redhat.com To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Jind=C5=99ich=20Makovi=C4=8Dka?= , Paolo Bonzini , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier , Eric Blake , Markus Armbruster , =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PULL 15/15] ui/gtk: Turn clipboard flag into runtime option Date: Tue, 28 Apr 2026 12:13:02 +0400 Message-ID: <20260428081303.990973-16-marcandre.lureau@redhat.com> In-Reply-To: <20260428081303.990973-1-marcandre.lureau@redhat.com> References: <20260428081303.990973-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=marcandre.lureau@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1777364137984154100 From: Jind=C5=99ich Makovi=C4=8Dka - Compile the GTK clipboard support unconditionally - Introduce GTK clipboard option, defaulting to off Signed-off-by: Jindrich Makovicka Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Daniel P. Berrang=C3=A9 Message-ID: <20260427-gtk-clipboard-v5-2-6968feb31a5d@gmail.com> --- meson.build | 4 ---- qapi/ui.json | 6 +++++- ui/gtk.c | 8 +++++--- meson_options.txt | 7 ------- qemu-options.hx | 9 ++++++--- scripts/meson-buildoptions.sh | 3 --- ui/meson.build | 4 +--- 7 files changed, 17 insertions(+), 24 deletions(-) diff --git a/meson.build b/meson.build index 096303f021c..761c0436a32 100644 --- a/meson.build +++ b/meson.build @@ -1932,7 +1932,6 @@ endif gtk =3D not_found gtkx11 =3D not_found vte =3D not_found -have_gtk_clipboard =3D get_option('gtk_clipboard').enabled() =20 if get_option('gtk') \ .disable_auto_if(not have_system) \ @@ -1954,8 +1953,6 @@ if get_option('gtk') \ method: 'pkg-config', required: get_option('vte')) endif - elif have_gtk_clipboard - error('GTK clipboard requested, but GTK not found') endif endif =20 @@ -2475,7 +2472,6 @@ if glusterfs.found() endif config_host_data.set('CONFIG_GTK', gtk.found()) config_host_data.set('CONFIG_VTE', vte.found()) -config_host_data.set('CONFIG_GTK_CLIPBOARD', have_gtk_clipboard) config_host_data.set('CONFIG_HEXAGON_IDEF_PARSER', get_option('hexagon_ide= f_parser')) config_host_data.set('CONFIG_LIBATTR', have_old_libattr) config_host_data.set('CONFIG_LIBCAP_NG', libcap_ng.found()) diff --git a/qapi/ui.json b/qapi/ui.json index e3da77632a8..b2c42a7f578 100644 --- a/qapi/ui.json +++ b/qapi/ui.json @@ -1319,6 +1319,9 @@ # # GTK display options. # +# @clipboard: Enable host-guest clipboard sharing. Defaults to "off". +# (Since 11.1) +# # @grab-on-hover: Grab keyboard input on mouse hover. # # @zoom-to-fit: Zoom guest display to fit into the host window. When @@ -1344,7 +1347,8 @@ # Since: 2.12 ## { 'struct' : 'DisplayGTK', - 'data' : { '*grab-on-hover' : 'bool', + 'data' : { '*clipboard' : 'bool', + '*grab-on-hover' : 'bool', '*zoom-to-fit' : 'bool', '*show-tabs' : 'bool', '*show-menubar' : 'bool', diff --git a/ui/gtk.c b/ui/gtk.c index 8fd39c90c29..ec95f0f294a 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -2601,9 +2601,11 @@ static void gtk_display_init(DisplayState *ds, Displ= ayOptions *opts) opts->u.gtk.show_tabs) { gtk_menu_item_activate(GTK_MENU_ITEM(s->show_tabs_item)); } -#ifdef CONFIG_GTK_CLIPBOARD - gd_clipboard_init(s); -#endif /* CONFIG_GTK_CLIPBOARD */ + + if (opts->u.gtk.has_clipboard && + opts->u.gtk.clipboard) { + gd_clipboard_init(s); + } =20 /* GTK's event polling must happen on the main thread. */ qemu_main =3D NULL; diff --git a/meson_options.txt b/meson_options.txt index 31d5916cfce..286461129bd 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -262,13 +262,6 @@ option('vnc_sasl', type : 'feature', value : 'auto', description: 'SASL authentication for VNC server') option('vte', type : 'feature', value : 'auto', description: 'vte support for the gtk UI') - -# GTK Clipboard implementation is disabled by default, since it may cause = hangs -# of the guest VCPUs. See gitlab issue 1150: -# https://gitlab.com/qemu-project/qemu/-/issues/1150 - -option('gtk_clipboard', type: 'feature', value : 'disabled', - description: 'clipboard support for the gtk UI (EXPERIMENTAL, MAY H= ANG)') option('xkbcommon', type : 'feature', value : 'auto', description: 'xkbcommon support') option('zstd', type : 'feature', value : 'auto', diff --git a/qemu-options.hx b/qemu-options.hx index 21972f83268..e780bc2ac06 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -2209,9 +2209,9 @@ DEF("display", HAS_ARG, QEMU_OPTION_display, " [,window-close=3Don|off]\n" #endif #if defined(CONFIG_GTK) - "-display gtk[,full-screen=3Don|off][,gl=3Don|off][,grab-on-hover=3Don= |off]\n" - " [,show-tabs=3Don|off][,show-cursor=3Don|off][,window-clos= e=3Don|off]\n" - " [,show-menubar=3Don|off][,zoom-to-fit=3Don|off]\n" + "-display gtk[,clipboard=3Don|off][,full-screen=3Don|off][,gl=3Don|off= ]\n" + " [,grab-on-hover=3Don|off][,show-tabs=3Don|off][,show-curs= or=3Don|off]\n" + " [,window-close=3Don|off][,show-menubar=3Don|off][,zoom-to= -fit=3Don|off]\n" #endif #if defined(CONFIG_VNC) "-display vnc=3D[,]\n" @@ -2295,6 +2295,9 @@ SRST drop-down menus and other UI elements to configure and control the VM during runtime. Valid parameters are: =20 + ``clipboard=3Don|off`` : Enable host-guest clipboard sharing, + defaults to "off" + ``full-screen=3Don|off`` : Start in fullscreen mode =20 ``gl=3Don|off`` : Use OpenGL for displaying diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index ca5b113119a..80de8c4af42 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -124,7 +124,6 @@ meson_options_help() { printf "%s\n" ' glusterfs Glusterfs block device driver' printf "%s\n" ' gnutls GNUTLS cryptography support' printf "%s\n" ' gtk GTK+ user interface' - printf "%s\n" ' gtk-clipboard clipboard support for the gtk UI (EXPER= IMENTAL, MAY HANG)' printf "%s\n" ' guest-agent Build QEMU Guest Agent' printf "%s\n" ' guest-agent-msi Build MSI package for the QEMU Guest Ag= ent' printf "%s\n" ' hv-balloon hv-balloon driver (requires Glib 2.68+ = GTree API)' @@ -336,8 +335,6 @@ _meson_option_parse() { --disable-gnutls) printf "%s" -Dgnutls=3Ddisabled ;; --enable-gtk) printf "%s" -Dgtk=3Denabled ;; --disable-gtk) printf "%s" -Dgtk=3Ddisabled ;; - --enable-gtk-clipboard) printf "%s" -Dgtk_clipboard=3Denabled ;; - --disable-gtk-clipboard) printf "%s" -Dgtk_clipboard=3Ddisabled ;; --enable-guest-agent) printf "%s" -Dguest_agent=3Denabled ;; --disable-guest-agent) printf "%s" -Dguest_agent=3Ddisabled ;; --enable-guest-agent-msi) printf "%s" -Dguest_agent_msi=3Denabled ;; diff --git a/ui/meson.build b/ui/meson.build index 3d15ff96287..ceaf110683d 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -112,9 +112,7 @@ if gtk.found() =20 gtk_ss =3D ss.source_set() gtk_ss.add(gtk, vte, pixman, files('gtk.c')) - if have_gtk_clipboard - gtk_ss.add(files('gtk-clipboard.c')) - endif + gtk_ss.add(files('gtk-clipboard.c')) gtk_ss.add(when: x11, if_true: files('x_keymap.c')) gtk_ss.add(when: opengl, if_true: files('gtk-gl-area.c')) gtk_ss.add(when: [x11, opengl], if_true: files('gtk-egl.c')) --=20 2.53.0