From nobody Sat Sep 26 23:05:15 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; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1787061476; cv=pass; d=zohomail.com; s=zohoarc; b=Nn8zGsFqxzBc5COetBIJwb47qpOKB+VgrlLtztP6+0rELMsfkWxmrlJiDgpwoieb+aixBdYpf+BrTTp5Jyj0jRuVEYOnxCmBUd1YWIQqGSCSGxbac6nKqVIJbSkVJIcE1EkiVJwlLtrbIqrrvpVGqcdnKGkwelZbYo0Q+oZLpYs= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787061476; 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=jN9b7QSBtgxq/Ur5M+Os874GBKmC0jiOIgbcEautXyM=; b=R5XyZiYkiFWvm5alipqBc0W6ES5gnzKzuRDNioCw2W/3ySMiOk/B68b1c/m4G0Yp1aLqcHv2//Qwy85bRFcAUWgdVtGQj0S5Nhu3IcM3UYG2bLiSEZvyJ9BVaX7fPSNOx7DKR23gVEFKjYB9IHoi9j/rF6CIx6I6vIOtXhHRikw= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787061476653551.768457665738; Tue, 18 Aug 2026 06:57:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwKK7-00061x-3E; Tue, 18 Aug 2026 09:57:51 -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 1wwKK6-00060u-1x for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:57:50 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwKK3-0004jY-PI for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:57:49 -0400 Received: from pps.filterd (m0127839.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67IDudAr1560575; Tue, 18 Aug 2026 06:57:46 -0700 Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11020132.outbound.protection.outlook.com [52.101.193.132]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4g2q6cxntx-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 18 Aug 2026 06:57:45 -0700 (PDT) Received: from BL0PR02MB3827.namprd02.prod.outlook.com (2603:10b6:207:42::26) by DS0PR02MB9103.namprd02.prod.outlook.com (2603:10b6:8:131::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.17; Tue, 18 Aug 2026 13:57:44 +0000 Received: from BL0PR02MB3827.namprd02.prod.outlook.com ([fe80::5f5f:bb6:29f7:afd]) by BL0PR02MB3827.namprd02.prod.outlook.com ([fe80::5f5f:bb6:29f7:afd%4]) with mapi id 15.21.0339.007; Tue, 18 Aug 2026 13:57:44 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=jN9b7QSBtgxq/Ur5M+Os874GBKmC0jiOIgbcEautX yM=; b=WmPfyz51gi/v/Cq5zfQTGwxiTVltk5g6nifunTiTzc4oYyko2YigLCSJ2 McIFUAuqt1fmRcEiDOeeBlyzN4wZ2+dduhHsn5pWwL2MRwNc6oQROvxigWGjcVyK gSlC3hQPnM6fJSleXyR5EItDcglrFkcAL1zlVDkNne8m59F6w06bVSSSUNkmERHJ ScjDwOlhKugFDgMV+oYA894XFdiUCdJZGPEc9pNbaau12RJbKKxVpN3zOBQO8QCG cDQBvbWDCDRobAdB15VlNYMcJQJZgsXVrbFpbGurHu0QMnu7noCIVhzXY47YarMh gLnSpzo/TCnRGSS69cD0EP9DW25Dw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wz3vedYAf02nzvOGOCnAxd38Ti/JEAa4YJxwgrJaI8MNRCfw/18bIAffrYFz+hl4na6oln+t10FtkaYAYH5ot+e6tK78qJYnjIjh3KF9tOLlNIgWpbquhT37v8QeLMw9vSreJNMyrvnMCaMz0p/gMegAUdfU6TVNXLX8uj6DYNsfr1u9emZiuJHwTc0Ul3NOLSIOxbEWqDJmNJsjsTK9YGHxg7orIfF4rVnoxnDVRd7Rp8whAvl8PXAfLbKE2ycEl8Hhs5BlhFTsyMWhzdCOdXAC0rA6BytcV5AEzAs/plQRhJbz5Koaa+SxFitQ1SCAS8gdkZWAkHstzJTUooRBwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jN9b7QSBtgxq/Ur5M+Os874GBKmC0jiOIgbcEautXyM=; b=IWdWt3iUJa55Jrj3jqw1S5Emv3D5oWoaAPz3KvW9J0ZhrZ8NlLOz2+pqmU2S6Fm2kk4BLXT0h6OEVQ554XGwTFGim1Lwz7e2kwu32iq5SUwwWE/vR9QDRqImN9Y8gGT3wNYkGnM0NsaAGb5yzINBiXqcImEcHpK9ABtWp0EWiTWoRdYF4QXRYpjmwMPr5gIaPbPp9PAWjrcXt6xpE4pQX+9pxY9pXWvZxbtrD14k1KQNXc3ocMaIRYg7bQooXRmlgWatRpYbAeFrPMX/X91w7s+NH1co2/6JQhRQHzoDjF292dWy93vxHiH9s0RQkOjjLDHOWXMikKAjCwndqFznWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jN9b7QSBtgxq/Ur5M+Os874GBKmC0jiOIgbcEautXyM=; b=iUEAY/0NaZ38zlIVA7djp1zAMhuufqdMqfjxUoItvDnbWC46QzuJznO5z+T+EoXtr1JaoUQIXCClStO3MH0m4DxP8Y1uvahqMzG1pUj0eNUo/5zON2kS15OUUF6sR1wFi1RANcJ93kPsUOR+Q3i8RlUZac2AOHsDcH2Y/bw5yZNK0GXBneQa8pPh5MUjY5IhQX2t9yUHS3KxSbY57DjYnGeyn6miP9h74niaq4p9rmmm4hP+SSBdWUg1V7ytFsD5PVqlRH7SEjRxOjSrOPN8qOd4tQz64KZa5tvX+4yfbP9ZXuIn8Y2jbRGKrqAuT6UYMD2o2JYRlJcgGBLryGbr8g== From: Lukasz Kornicki To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH v2 1/4] ui/clipboard: add clipboard peer update notification Date: Tue, 18 Aug 2026 15:57:34 +0200 Message-ID: <20260818135737.2679311-2-lucas.kornicki@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818135737.2679311-1-lucas.kornicki@nutanix.com> References: <20260818135737.2679311-1-lucas.kornicki@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P250CA0009.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:5df::10) To BL0PR02MB3827.namprd02.prod.outlook.com (2603:10b6:207:42::26) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL0PR02MB3827:EE_|DS0PR02MB9103:EE_ X-MS-Office365-Filtering-Correlation-Id: 9dd8af66-9b1f-49b6-d2e8-08defd30ad18 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|366016|1800799024|23010399003|3023799007|18002099003|22082099003|56012099006|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: 4iA4PHpIWNQVNEzrWyOaUjI18T/fG84hKBWmg3DiKfyccrUtkLv/GJNUz4aCYJ1SlrleNwK9UMtfG0u4kbOajakunZa4Fz16spAuVpFyVL0ZmuaTR+th8bCk1zz+wAATGtMtjwmgFzGV/B/7hJxjrJF5si4dZOcPvItHBbFMNULEd56Y5GdO51s6dR0Hpm87+JrfMQE+uQgIhuhWuuEG+lfq6wZpf2IatnhhpOJDJYb9MUaXiirqzRryDCmR6x2iETSs2hfYTuh3AHcAxt3aBwlaCpvavr+sS1fuuCzajauQbtdY2ITI5FYwuFgBNSEDb9WoMJKZMIol8mgviMqd1maxEZnp4BoEa80GB0HoBDvHtL5lzXYfzh6Iqqp0ySZ8l8R7B3s2/rYHOMNIAOmA9ur5F3dh9gvAaZm2imfu69PJFHq2rRD2eumg2lBEoxkZUJ7jcNOaG4BItO5Djj8wN7zjSfk6aeBUiCjZ+rPDLKk5RTnodfjnzvCY1mqtYrZ1DwSzqD6Zn/PDUa1SMB1cc5/6fKWAXOkdHWrdH7fwrWrAAjAhJN6y3nUi7L9UZgHOjs+TtPyjwdekcgznBDoG5bNizta8V1UOVi7dBJK8No7WFyoqx2cKBT7uMwfdEWDq7C1+OgGTLxN4GPzoNGCTjbQyEzzO7GW7WMwSGOwshns= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL0PR02MB3827.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(3023799007)(18002099003)(22082099003)(56012099006)(10067099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?b16cCbwegpnou2oaZUeULdErMaB1gVj19E/APQEbD1bV7vYxAVTRPPo1P6SJ?= =?us-ascii?Q?eTafpsMcmK8F9CTtBWshugtIopIqBg5H+zRGD4eHU1wghq0a8bfmFgIC2e3N?= =?us-ascii?Q?cad/2mM9hB7wTWeWe4h4lzJY+VXc9Foqm0WVGjV1LOaKBrjHsZ77Z8+rjfov?= =?us-ascii?Q?vDWK0GBummEEyagnwI7k9wzpaBM7k/IyrqnntlAf/fVM2uycujsnBvjHRgv4?= =?us-ascii?Q?R7y12VGbUfOkzmH3mzuHKHWSmVfHPvTPMGKiLc/QWRv/qDV77tnJ6Sy/SKdK?= =?us-ascii?Q?EDDL37YfgYhEmCWIXYDSA1D6DqGEX6mbJsOZXllW13CdBtaSUtKYVUtZGB8r?= =?us-ascii?Q?EnrPqO7vYmsjvJyv2N24j4WoPOUo4zhJAq0Ymt7665NpGPxF3ECId07AboSV?= =?us-ascii?Q?2gcv/G8/O4KQ8z9dOF3Shj2LqbWAjwfIE8SVgXtNc1FVOwZMDcKuGpunbqEY?= =?us-ascii?Q?RKJvsU3JALWVJPvZEqpvEGHUgscB3Jo5shvEa4XjEaza3IZLP5iCMtOiHqDd?= =?us-ascii?Q?Npyw7Dk3o4u1ZcvOFrvFBuPrwXj//QzTFnbh7qJjrBwM/EbTrCMAU+CIA6IE?= =?us-ascii?Q?bUwVXyB93/qY47DDS5nPr0W1WNStA3O8vQJQQNZ7T6/1dy9ycvs2iPfYqIrp?= =?us-ascii?Q?qadJzAyFyUH2brsV3J2yJPJOAeMCPMF7+Mk6mMaW+Occh86OmlWvBX2tfSob?= =?us-ascii?Q?eldPcqBpZuI4HXK1OwJVh9LM1rDJ2hkD8rCuh55bDmFtANPfQf5ZGYhO7vKG?= =?us-ascii?Q?yQvOVs+oEPwAyr73TOp5kXyDt2YuNssNETf4mq0JzkwXbIpeDoPEEs3CsYyl?= =?us-ascii?Q?1TZ3TKWB9P0Bp9C6bNgdoOJHXsMITdeMNZ00Y8LhFalIE2Lx5CGueQG9rkIB?= =?us-ascii?Q?sI3c0em6AxbJRo5x3cF4x3ltUo6sYxV23BcTep7v1UiwCIK/9OUx4jaxAav3?= =?us-ascii?Q?mt1QIuK1mYoLUUMxL8P+U9yPbnHbqb2wnyskeJMxzqywU6h8L7sRkzhG2paj?= =?us-ascii?Q?G2EYVTNEKcf5yZQr0rzuJN/CbUrZ9Lfcef6YbSAi4PmvnLXSAFv4AanQOkcb?= =?us-ascii?Q?P1hMWFg/iffK8ctygD9LZS5kNfhPT3CRiWvBqs5lnA40cRy/crwkda4FYGvM?= =?us-ascii?Q?6ETb3VZ1m94jaJrmauhX6hQRJTzx6F+X8PWjJcmIjBEFIyWJU3pQ63+z3xtw?= =?us-ascii?Q?L80QldZ9agzqVfbF19OvIynVygJLFgymOa1/B0TDOCJqbuOiMqIBTbQjp9eX?= =?us-ascii?Q?gPT2RUevP5IVg5Vjg9oEJPwm9bg4/hA2oWLO8krqe9S8KfDt0sXaml7ssLRU?= =?us-ascii?Q?qgTIskc3DbMTBZ0PwnUuWV57PyyARt+4y30xFsZlY99SOWBP5Gt+e+YzMoMy?= =?us-ascii?Q?q/n0pJL2R2UPg1W7Ui8sxdZim4B/4yvM+LkhW8875FxCap3fzi1NcdiNsX2d?= =?us-ascii?Q?+o0BIfcaJIR2v08a9n15GcTWJ8en8QuMYVST+3odj61u0BwCtG+DSjQEnTwK?= =?us-ascii?Q?7dhTM4QBivie7cHo3OkXPeG+Sm121w6mm/m/vQSYNwcWu8GwNooEPzd/ND4G?= =?us-ascii?Q?7aVb0fRH8kkvEvIzEl1HdrOSKarJ/A5oVNxrv1csvU5Nvc3T6eacEQYJqza0?= =?us-ascii?Q?JIwUt18pHOfDonChE6gN6Sx6Zpbkt8dOW/88bOMf9G6NLzOBVzbHKnYADIKU?= =?us-ascii?Q?vjwmFb/SHD0EZJ466DoWwqCi+c7GS2UkHP2YyP2A0htxPUm9CYVUIAuQSg96?= =?us-ascii?Q?E/bNdtJM/Q=3D=3D?= X-Exchange-RoutingPolicyChecked: XsCbzIYTsK90WMcXr5P8+1pTG2mSOmcr4Hk3O2k1Xwp4Ko8Yi185deckaLMx0oyLbgnD26n7v9igJHniBNBjrLB0rp85E9sw30erVQtvN1tizB8QdqXXr+RM9pMYKE83rAjd3B7vsa2xZFIaKujHTbP5W4G/VvB2g0IKBiCV+71HOR1Jo0GHt0a5tCDwFEjhLFr3vJWxBYfHgE5Ygj0uLhcLLDoyMsWi+1Xkm7cwRzM8yB+rnuGefz+QxFe/cNk/mfvlK/iVxC5xS05/dcSjqhTYvg84wvzfKQmo0SIep8g1uu28nMFWfUaW7np1fq41L/jDmMi/SRvaQHScaaX7+Q== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9dd8af66-9b1f-49b6-d2e8-08defd30ad18 X-MS-Exchange-CrossTenant-AuthSource: BL0PR02MB3827.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2026 13:57:43.9938 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vUs4w9HZ4RTfQvsTOeTdNzmLy0/3fZ71dH1iMvCc/70vNN1F9LtprHC80b+bv0hgtnJRQFhU71mmCNkCvfwS0NdgViwWtfJJbycIWl8dh00= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR02MB9103 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE4MDEwMiBTYWx0ZWRfXxv8rq5TCNFDb 4BN+E+A8axjTXgzkSwdT1pMF/c0nfqlkhP8OACjKuFkNswNwg9w93WC1V0IEm9cHYrwUzuOHgoh psfkqboU2IGLH8nCQ5b9d7wtf0CnGeiuBGlk+ogM83Wnpp0NmRDQP1pqgcKLvd03uLDd6y3Mnn1 HC8n8P2Bb8a5SLZBcs2Ph/D2mEfIGnoHYMWXoktHfkqjdNKqWOnTupoMbeE1bOfIgksFO/x+/uX wqAYF5O0MFE/vVc016PTH/T4M1vcGH42PHMoGBbwDZwokJuongAU5lczBd4k2EEsBOmcS/RdsGR pjJ0NUOAeicytoWTvHcZOgciDuwDkZhOs4fVSgqf1Tlec1ENLt/ZRWDlG8/64uUhdJDfjdtD8fx 3gIca0zJED8vfq/3HKYOJnr/+HWrfeQRp4iBUdKp+BPEZBfy/SNRA8istDQhtbGAa1hVZOMmANB 0nOJ6RnpeGlBobtMQ2Q== X-Proofpoint-ORIG-GUID: Vrdug8VTQYjIo92eqUmG8NdBSZMVIwAN X-Proofpoint-GUID: Vrdug8VTQYjIo92eqUmG8NdBSZMVIwAN X-Authority-Analysis: v=2.4 cv=X85i7mTe c=1 sm=1 tr=0 ts=6a8464d9 cx=c_pps a=wDYKio+nLET07hVCmQyIug==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Sv0fKeRqtYgA:10 a=1FjsvbZJLK8A:10 a=0kUYKlekyDsA:10 a=sWKEhP36mHoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=P8QhtFtuV3VGHf9AuhIA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwODE4MDEwMiBTYWx0ZWRfXxgYRkxi36zRe N4zp7rP1y3PSew8zugHtzWCJyPCe4pG+hkc3H5aAUGTQlMh4nwUq3wcVBxFaw65gxolLaUbkX7n ltquc1VNqhJ8yWNk+T/eOIa38hsRMeE= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_02,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Reason: safe 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=148.163.151.68; envelope-from=lucas.kornicki@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.343, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=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 @nutanix.com) X-ZM-MESSAGEID: 1787061478904158500 Content-Type: text/plain; charset="utf-8" Add a new QEMU_CLIPBOARD_PEER_UPDATE notify type which carries a payload with affected peer and whether it just registered or unregistered. All existing notifier handlers are updated to explicitly ignore the new event so that the enum switch remains exhaustive. Signed-off-by: Lukasz Kornicki --- include/ui/clipboard.h | 19 +++++++++++++++++++ tools/qemu-vnc/clipboard.c | 3 +++ ui/clipboard.c | 17 +++++++++++++++++ ui/cocoa.m | 3 +++ ui/dbus-clipboard.c | 3 +++ ui/gtk-clipboard.c | 3 +++ ui/trace-events | 1 + ui/vdagent.c | 3 +++ ui/vnc-clipboard.c | 3 +++ 9 files changed, 55 insertions(+) diff --git a/include/ui/clipboard.h b/include/ui/clipboard.h index 62a96ce9ff..6166af5139 100644 --- a/include/ui/clipboard.h +++ b/include/ui/clipboard.h @@ -25,6 +25,7 @@ typedef enum QemuClipboardNotifyType QemuClipboardNotifyT= ype; typedef enum QemuClipboardSelection QemuClipboardSelection; typedef struct QemuClipboardPeer QemuClipboardPeer; typedef struct QemuClipboardNotify QemuClipboardNotify; +typedef struct QemuClipboardPeerUpdate QemuClipboardPeerUpdate; typedef struct QemuClipboardInfo QemuClipboardInfo; typedef struct QemuClipboardContent QemuClipboardContent; =20 @@ -78,12 +79,27 @@ struct QemuClipboardPeer { * * @QEMU_CLIPBOARD_UPDATE_INFO: clipboard info update * @QEMU_CLIPBOARD_RESET_SERIAL: reset clipboard serial + * @QEMU_CLIPBOARD_PEER_UPDATE: peer registered/unregistered * * Clipboard notify type. */ enum QemuClipboardNotifyType { QEMU_CLIPBOARD_UPDATE_INFO, QEMU_CLIPBOARD_RESET_SERIAL, + QEMU_CLIPBOARD_PEER_UPDATE, +}; + +/** + * struct QemuClipboardPeerUpdate + * + * @peer: the peer affected by this event + * @registered: whether @peer registered or unregistered. + * + * Clipboard peer update event data. + */ +struct QemuClipboardPeerUpdate { + QemuClipboardPeer *peer; + bool registered; }; =20 /** @@ -91,6 +107,8 @@ enum QemuClipboardNotifyType { * * @type: the type of event. * @info: a QemuClipboardInfo event. + * @peer_update: a peer register/unregister event + * (valid for QEMU_CLIPBOARD_PEER_UPDATE). * * Clipboard notify data. */ @@ -98,6 +116,7 @@ struct QemuClipboardNotify { QemuClipboardNotifyType type; union { QemuClipboardInfo *info; + QemuClipboardPeerUpdate peer_update; }; }; =20 diff --git a/tools/qemu-vnc/clipboard.c b/tools/qemu-vnc/clipboard.c index f62b2f2949..b85a2d8b55 100644 --- a/tools/qemu-vnc/clipboard.c +++ b/tools/qemu-vnc/clipboard.c @@ -174,6 +174,9 @@ vnc_dbus_clipboard_notify(Notifier *notifier, void *dat= a) -1, NULL, NULL, NULL); } return; + case QEMU_CLIPBOARD_PEER_UPDATE: + /* ignore */ + return; } } =20 diff --git a/ui/clipboard.c b/ui/clipboard.c index e3d8a31ba9..beecb40e6f 100644 --- a/ui/clipboard.c +++ b/ui/clipboard.c @@ -59,6 +59,21 @@ static void qemu_clipboard_change_state(void *opaque, bo= ol running, RunState sta =20 } =20 +static void qemu_clipboard_notify_peer_update(QemuClipboardPeer *peer, + bool registered) +{ + QemuClipboardNotify notify =3D { + .type =3D QEMU_CLIPBOARD_PEER_UPDATE, + .peer_update =3D { + .peer =3D peer, + .registered =3D registered, + }, + }; + + trace_clipboard_peer_update(peer->name, registered); + notifier_list_notify(&clipboard_notifiers, ¬ify); +} + void qemu_clipboard_peer_register(QemuClipboardPeer *peer) { if (cb_change_state_entry =3D=3D NULL) { @@ -66,6 +81,7 @@ void qemu_clipboard_peer_register(QemuClipboardPeer *peer) } =20 notifier_list_add(&clipboard_notifiers, &peer->notifier); + qemu_clipboard_notify_peer_update(peer, true); } =20 void qemu_clipboard_peer_unregister(QemuClipboardPeer *peer) @@ -76,6 +92,7 @@ void qemu_clipboard_peer_unregister(QemuClipboardPeer *pe= er) qemu_clipboard_peer_release(peer, i); } notifier_remove(&peer->notifier); + qemu_clipboard_notify_peer_update(peer, false); } =20 bool qemu_clipboard_peer_owns(QemuClipboardPeer *peer, diff --git a/ui/cocoa.m b/ui/cocoa.m index 3751be3792..4587547c98 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -1860,6 +1860,9 @@ static void cocoa_clipboard_notify(Notifier *notifier= , void *data) case QEMU_CLIPBOARD_RESET_SERIAL: /* ignore */ return; + case QEMU_CLIPBOARD_PEER_UPDATE: + /* ignore */ + return; } } =20 diff --git a/ui/dbus-clipboard.c b/ui/dbus-clipboard.c index 90318384ee..6940f719ff 100644 --- a/ui/dbus-clipboard.c +++ b/ui/dbus-clipboard.c @@ -125,6 +125,9 @@ dbus_clipboard_notify(Notifier *notifier, void *data) case QEMU_CLIPBOARD_RESET_SERIAL: dbus_clipboard_reset_serial(dpy); return; + case QEMU_CLIPBOARD_PEER_UPDATE: + /* ignore */ + return; } } =20 diff --git a/ui/gtk-clipboard.c b/ui/gtk-clipboard.c index 476e6b8303..6bb3d7f3fc 100644 --- a/ui/gtk-clipboard.c +++ b/ui/gtk-clipboard.c @@ -133,6 +133,9 @@ static void gd_clipboard_notify(Notifier *notifier, voi= d *data) case QEMU_CLIPBOARD_RESET_SERIAL: /* ignore */ return; + case QEMU_CLIPBOARD_PEER_UPDATE: + /* ignore */ + return; } } =20 diff --git a/ui/trace-events b/ui/trace-events index 339a61f341..917d116d90 100644 --- a/ui/trace-events +++ b/ui/trace-events @@ -171,6 +171,7 @@ xkeymap_keymap(const char *name) "keymap '%s'" # clipboard.c clipboard_check_serial(int cur, int recv, bool ok) "cur:%d recv:%d %d" clipboard_reset_serial(void) "" +clipboard_peer_update(const char *name, bool registered) "peer '%s' regist= ered=3D%d" =20 # vdagent.c vdagent_fe_open(bool fe_open) "fe_open=3D%d" diff --git a/ui/vdagent.c b/ui/vdagent.c index b9784d4d9b..cc32a94fb9 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -477,6 +477,9 @@ static void vdagent_clipboard_notify(Notifier *notifier= , void *data) case QEMU_CLIPBOARD_RESET_SERIAL: vdagent_clipboard_reset_serial(vd); return; + case QEMU_CLIPBOARD_PEER_UPDATE: + /* ignore */ + return; } } =20 diff --git a/ui/vnc-clipboard.c b/ui/vnc-clipboard.c index fa05d86f42..dfe830f819 100644 --- a/ui/vnc-clipboard.c +++ b/ui/vnc-clipboard.c @@ -236,6 +236,9 @@ static void vnc_clipboard_notify(Notifier *notifier, vo= id *data) case QEMU_CLIPBOARD_RESET_SERIAL: /* ignore */ return; + case QEMU_CLIPBOARD_PEER_UPDATE: + /* ignore */ + return; } } =20 --=20 2.43.0 From nobody Sat Sep 26 23:05:15 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; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1787061509; cv=pass; d=zohomail.com; s=zohoarc; b=ciTQ0I0Mc2ouZ51KytDvh/s2lhA6FffE3Kh0XWvGa+e3WEGqdYyeh2oSIVcwWNGTM+zoJ2PvZUMmUOXxXft4dNssSwvCm61pJamCnzmdvaNRgZ7QJojEXG6+5mAhcueS0yGl8QdTYKG5uKMDe+ISja80krlJDF/JtwV+7XykpvY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787061509; 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=TJmoe7HwbNztbvr2ieYhyltvTL+pcg23G3gsmv5Od0s=; b=lTXlfHHgFAebEZ71VLxJxCeQPUa5H4972AEe7efIXMIof+U1aREcxlCDI5k+ddQuTgdIxhbC7X/YRjYRkK8P0Zy1wilOvkL6JD8HOR7HsK9Zm9hQllWF4VU1HkQ+pHHEQzgvxL1vkrzRXPJu3XBPAQsrKrYkN9vE8mrO05fYAnM= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787061509191494.33727660690033; Tue, 18 Aug 2026 06:58:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwKKA-0006F8-6H; Tue, 18 Aug 2026 09:57:54 -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 1wwKK7-00064n-UU for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:57:51 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwKK6-0004jt-38 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:57:51 -0400 Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67IDujiC1717638; Tue, 18 Aug 2026 06:57:48 -0700 Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11020142.outbound.protection.outlook.com [52.101.193.142]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4g2qnt6n2g-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 18 Aug 2026 06:57:48 -0700 (PDT) Received: from BL0PR02MB3827.namprd02.prod.outlook.com (2603:10b6:207:42::26) by DS0PR02MB9103.namprd02.prod.outlook.com (2603:10b6:8:131::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.17; Tue, 18 Aug 2026 13:57:47 +0000 Received: from BL0PR02MB3827.namprd02.prod.outlook.com ([fe80::5f5f:bb6:29f7:afd]) by BL0PR02MB3827.namprd02.prod.outlook.com ([fe80::5f5f:bb6:29f7:afd%4]) with mapi id 15.21.0339.007; Tue, 18 Aug 2026 13:57:47 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=TJmoe7HwbNztbvr2ieYhyltvTL+pcg23G3gsmv5Od 0s=; b=XVx6qfnrp5/yo+Cj3nQle435niVQwZG6BzamT/3eDNgiocDxVXglHAhy1 ODL3iNcr2YEkqUdsg4DM/jPg4/RacEvjrBPAyJqrrUJySOu6JSkshJT7yOt/CQsB MWKpubgI1YLFDFgluhGv5XgGWWPoovqqEdf5kc7Gmq9nJntr+ObLha80dedU8iAg JPSUeg5tf3yniozVn5yZGAFlddN2NCDE29mQA6fq2XsLtDjdx19jIXjq0KKKGAa8 ba679wL1AHvVOo9vki9V+QLtmDH8f/wznA3r1bhpNZ/0HOcst0hYlUkair551nDa KY9suyWmtY9KhwIrGa/BSEuDybPzQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=W1fr3igH5ADp6PcL2n7TBmgwRfjJlfnBTS3K0M7dZpY7VXtqUOoPHvRKXe/ESjBSBPWC3VN+54aZlrN023dvbP4roQe2uSimPGYY8YQ5JVQuMeCOiIYtZYyZ9nzgbw4zGf8UxKHm+6s1UU3QwHaBfg7FTbCdxgQ3QAIgZO4FOIWVdtXt4Bnkkk3jLz2HZMIyEBIUhOK2451jQ8Nk5sFW5MINGigrdLV4oUNJ1dTHJlAkjibOk6AS/R9HxPySwOdEFBvzpA7lQltiQupxX1nDaXv//Db684u7qYSZ4hsr8E+quyEeZczQW5Jy+hqaYKIGVChRZCmlR1Stpeko/Krm6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=TJmoe7HwbNztbvr2ieYhyltvTL+pcg23G3gsmv5Od0s=; b=h1ZT8VH47vECnZErFbaZX+uGG/0aCg4qeGnrlDFpaPdb46rgvSTY1Khtz3HBI/Tlljxw8m/pPzDNo0dypyknMlHxCizvDARiND/kUIHVV4SMTPb320zSEySqYa1c2KsBK4IeE6ub1ptp+BB8gKA3zyhtOb98ZI7tEM3m4rJN5fxNrojQ/CEWK402F30HZFwPE5N1PLr8Hp4tbEH+ECsDhsInm54iNzLJJNLfEeigyX6+AEl+sD0RXZq58MCIm+H4Q82w15j2zI/G1aiuKlwofCldus2OZPQ7iKEZB+TVnjNeYnBSy/wWAc+NiuBOyP7rwR/jSU+EInHGxQ67FiE7qw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TJmoe7HwbNztbvr2ieYhyltvTL+pcg23G3gsmv5Od0s=; b=vGR5M1byJoMEXmIUgaPc7KEFov4sVKNox1Qu8JKN1LkLfml0OMXig1Hb8ruJHF/qnCRnOQb8vinMwek0cgHDP/J3+6Lh4BoWylMQyKiLN/XLWG2ZyyTzsEcJ4/PuRy8d/iyliTtGv03WwVGHNSM68OGe7xwjIEE3+lUTunvUF+Auplfb1XvRZ6Tw4/wq0if52KWRMlmi0JZrwVPw2gTq2sfUNWzhU0rVmZ5X6B5mLb3m+uRW6uw0w07PDCfuznQ8LNg9Rv8Ew/SAPF8xOJnvRcm2dtEOxdj2XGgc3NQ48FEdaFHWfSyfQPwrS3vkx/NtGD4cKyEjMbzhrcKQIEJqdw== From: Lukasz Kornicki To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH v2 2/4] ui/clipboard: keep track of clipboard peer side Date: Tue, 18 Aug 2026 15:57:35 +0200 Message-ID: <20260818135737.2679311-3-lucas.kornicki@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818135737.2679311-1-lucas.kornicki@nutanix.com> References: <20260818135737.2679311-1-lucas.kornicki@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P192CA0004.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::12) To BL0PR02MB3827.namprd02.prod.outlook.com (2603:10b6:207:42::26) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL0PR02MB3827:EE_|DS0PR02MB9103:EE_ X-MS-Office365-Filtering-Correlation-Id: 62074a21-d62b-4fcd-39d5-08defd30af0c x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|366016|1800799024|23010399003|18002099003|22082099003|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: NY4p11Cp1S/Qo3iDAsGUqYbU81guesR1OLvA7tidUWgzcwumqNX0FfoFZY1TNcNjbG3a3HHf0K2v7BfDUPr1zOjaFtornexwoo6nFxPYHACSkMaMJRqDB906+/XPv/WnFIAvBkFgEZPCOOeqQ9YGvfF8b4oD/JB5QETfbpORA4E87xbaO6JfSDj8VtNBg1I6HX2+jGXFBZXlWobNwXP5FkmVleNeAq0dqlpWYtIqxFVQbP/PmXFYSqpUT5FHTXTgtiDUL6EDum3ZEoYUtofRg7LFI6vc/aKaf7R5WG2FX4l9tI4LxBLZ0sHRe3dHS1yErKpY/WY2KJ5aPYcevaYsnH9kGsgeRg9IRQT4/OgoJNQ5CJpTBr6o5sUVnHcFlhqNr08bOz1CLV1Mpi9RGyjx5qCJH2m59XqqraILEE5VAdtAX5/YFqijvvIHnRn/icBPycdqDy0E1qe31CISljX+lq4I14xnt9NmoO0stc4FDeuzVB5HS2zYbTr+Fki58l8VjrMj1ialD4KAUK6V/mP23hYJl8RsFpxTDYIl5p3X/PjPDrKkAizfxTqw+AEldtsgVOvFW/iopi7Fm6mcKKMuM7khe/6LgqvJCG5+vxFI1/4G1K3qRfn7pyRq6Nk2rUsRQG4sGA51tmeMztNuLaXSzTz68jMCrWwqu1e2h4XcLy8= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL0PR02MB3827.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(18002099003)(22082099003)(56012099006)(10067099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?KYedcIzuherwWK2nYbdtwGJ2Y5rsRdi5Aei46dRiIzbFIN87quMi/fhIZ9IY?= =?us-ascii?Q?1TzcsD1uejFlPGiy8KH1T9crAeNCxr8P6eHWvhqWw/1ROJgdFu2ke8iJpqE3?= =?us-ascii?Q?8Yqruz1sbqNY/6UKU57nn/s+e+oSl+vvz4r9Avxa3/wuvLL4WcJJnndRu0qC?= =?us-ascii?Q?GBC7yFHyHOGIBLnI2GCtAwCajFefAZdqhyUjPTfc1/aNFEbJSGnq6wksoo9+?= =?us-ascii?Q?4i2/SrAsrzfch2xNYSPLJQCNx+DFW183fuF5YTvsDKGtzfrWjVTMcPjsIF7b?= =?us-ascii?Q?jatWkfDaV619h6klSrz+9zUbRKee65bvgqEFGhPzy5e4LlX2eAJHxiysth9K?= =?us-ascii?Q?QqyShwU6y955990K3ywWjnuQhgypMOeEsFzOJ5gW/T9x0/k8QvNI3gHusU/l?= =?us-ascii?Q?iIQJlYdirG7Apv/nPSk1zhoWjpHc5lWmYIrxwqOj8daVsIFr9N9ZhoUEDyYt?= =?us-ascii?Q?l7YxmWPdyLsRQUA358ugE2zT97JY6cTpgwThfk2J09vSuuMpqMQ14Mo/zYA5?= =?us-ascii?Q?WUSAUo93H6BzxdNdMC1GYn/UB1s1BNyNYG0mune38Ez3VRELTqIuno+lPbKg?= =?us-ascii?Q?TByjRs5rx/CMK2k9baBOjFsU+QOdgAGhg0eFlpc3Vz6ZxBp5/pJaybLE9zYZ?= =?us-ascii?Q?78xNrWS63h0HkLJWt6WCuqd++hRCYBTyzaiXiYRI3AA+q0a1Z/VI/+suCfYl?= =?us-ascii?Q?dHypM1H9bsVcAOKT/PVh1fwZesrt8y3XYCHJQqzVM4GvDmnP8YLOUoiR5XJ5?= =?us-ascii?Q?XGJxY2F+lfL43ZVAJGe4/4QDBmBqyJTbj+7YZ+bWmPgMdtRPYlJalMaJqjnr?= =?us-ascii?Q?/v6a5HIhzY8Hi3KxvtsHEY85+6uvD1cR03jE/zXCznhfThkYmFVewq8C6+f3?= =?us-ascii?Q?R7td8RR6Uy5vOuvJoSLSD7LLYI7GNYSqq+llCzGBdX+Gtm8fWdiHMtDYJiph?= =?us-ascii?Q?Kqk4eKT4mFHHWYkCeI/MiI3LRdlabscYNwFHXCN95WgSlXQLklYelp5sdqXB?= =?us-ascii?Q?liIX4lsxvRnJr262I1ooWzKjRQ9pd/y3GRj+Vi3Ae7TtCvyN6URLzkZCWOcm?= =?us-ascii?Q?8VxBeH2q+1ZR6DTk87aJICnP8YX6X+i2YUWFMqr2aO2a9bLdgM9IqNRVhB4D?= =?us-ascii?Q?X5R79z+MzSMtatp4BIv7Yeez81tvc60Jg2IAAvz23oIeCijoMdHduOYkdvt8?= =?us-ascii?Q?2vP0j5QZU9mHZxU+3hm4Ozt0tL64Qd3RRjoFil7b6CZD7vtYfZlan/J29YAH?= =?us-ascii?Q?RUfVEkJFaL0lw1Nrx6XfxDyuIXXcRu3blk8CKZYNYUTZ085e8XhL4wv1GEIP?= =?us-ascii?Q?t2uPFrhSPBWcK4jkGmdQH96mQGTM6bGC741RR6HwyxAtr/Fer4K6loQwvq1O?= =?us-ascii?Q?nb6iZqoRsQOVRyPkeoL4yrjI5+RdVQkThBiIXBVmL5up8Zc8kojF1Tmy9ZWZ?= =?us-ascii?Q?oS5T4pW252DMBZQvBd+w1FB6HarBeo3CMixcRdqJ3J5DtPucQtMCvYpiSix+?= =?us-ascii?Q?rFguq0my1frAw9/0qMvymSoJXkGQYMiqzXegQJxVv52Cc3Ey2XsAEa8iIZZs?= =?us-ascii?Q?VmVB7/XF77MRFUSsPwft/7kjxDJ/ngCn/q7uc5QXk1W4/ZsdQzJ57NxIxj3o?= =?us-ascii?Q?/rQFYhbfTmbaWdfFeKUe+fiFOnzm+g46KGOFXm2Xkcjsdx51eYVYvJ5Av7E+?= =?us-ascii?Q?6bNoJG5dSNmH2h4nIlEEl9eWfaAem/a49Ol7WlspQLqzVeT0WmoiTauEiaBh?= =?us-ascii?Q?wnjeai6Opg=3D=3D?= X-Exchange-RoutingPolicyChecked: AjEYvecGe2wk6awGLi7oLU7Q4d3Uq4qJkyrASgxdsx5pMC2NR1oIgGlPXxMct8IDW1p7ASPwyLLvMkUMUTyRKUCMwSYPeGTkjJcJL5LGV0PWybyrB19xAtLmoN0Vf2l0diUW4qvugpsDGIOr1z8UtOD/kyG9EvPFLE0zpLCh3d0vmo5WhzHkZ4VQrFrxDFIwkv1AQXblxMaByEctvlxlLNWIgLhu1wYATlVw+BjkPpTp37PCtn34XB9mzNlUI7D6DaRO8XRjwJ5mjr1dw7CwYeUV+iv9zVVd0ZoNTL7M6MCYhqhlcjonaEynrMBdR0qFrEoiKc409Kzyh+zX0qdxlw== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62074a21-d62b-4fcd-39d5-08defd30af0c X-MS-Exchange-CrossTenant-AuthSource: BL0PR02MB3827.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2026 13:57:47.2348 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: wFlDfodQh71Nx0wu+abtiQGJA9VNOi387MvWbAHe6pTbq8oTSMcitXsnZlse/Vbj6pMfcxxkq5G0KMY0dAnYYyfw4UKRVoNyqx+Pd0GWvmM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR02MB9103 X-Proofpoint-ORIG-GUID: 50IZEySR-cH5ZTiEIQxmmkkdjRqLYr22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODE4MDEwMiBTYWx0ZWRfXxVyuvudEru3h p6CXrRM1O1UGmHf1QUS2OMk6EmKXHt5pjDHN3VIqTrvOcTio7xdG0ynptRgHRn7rHWvbq2Z/Tzu 6e/NL8h7WO0EN3cjcGbRMWbxnQ1V/L4= X-Authority-Analysis: v=2.4 cv=Sv6gLvO0 c=1 sm=1 tr=0 ts=6a8464dc cx=c_pps a=4hwGk4Ee9vGu72pLTFfh5A==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Sv0fKeRqtYgA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=1L6crL_YRTbalZ11mEUO:22 a=64Cc0HZtAAAA:8 a=utkLoxhBbnJZJfdwENEA:9 X-Proofpoint-GUID: 50IZEySR-cH5ZTiEIQxmmkkdjRqLYr22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE4MDEwMiBTYWx0ZWRfX4WiIksBKCjqC LcvFmg+qO+DbdEJ3ogNJq7muTyo6ARLAE+zq5NRMmZXgc8zEmNKc8se3GEGVTASeiO//H3r9jRe 5ndTDFwBbjxURi8I81MyjsKZmt/5mA3fkasCWjxdyiqkUGuIlBCzXEOatEojRbKi5tS6E0WzyL6 BKvrUowlJL78zE8853LmGYmGlsKjQuy1VbcTiJ63X07oRY7yQF9EwdL2PMkK536zSx6WRXUMQVe AimW3Nt5PNMTl00A+Gt01TP7SpUfanw9V6wKltijJrB853T5UC1+28BODt1AG8NBo4m/M6Hr/q9 djQrxrcmRU7Wk54RvonbkCHpIBsuTpCbh5lOHVX41MtC/vnMmpyAdtbuFAnA/04L35XRzMoHGIN myXrcye/feIrF5nsoTXBRsKItfqMA0sgdmSNSyva/MxRC9uPeNfusKyRpNuyTI6txsZlkHV3xDA zaMmaSUqNQVRLWQz+pA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_02,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Reason: safe 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=148.163.151.68; envelope-from=lucas.kornicki@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.343, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=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 @nutanix.com) X-ZM-MESSAGEID: 1787061511097158500 Content-Type: text/plain; charset="utf-8" Add a "guest" flag to QemuClipboardPeer and set it on vdagent peer. Use the flag to keep track of number of registered guest peers and allow to query for their presence with qemu_clipboard_guest_peer_present(). This change makes it possible for a clipboard peer to determine if any guest side peers are present so they can tell whether a guest is actually able to participate in clipboard exchange. Signed-off-by: Lukasz Kornicki --- include/ui/clipboard.h | 8 ++++++++ ui/clipboard.c | 16 ++++++++++++++++ ui/vdagent.c | 1 + 3 files changed, 25 insertions(+) diff --git a/include/ui/clipboard.h b/include/ui/clipboard.h index 6166af5139..df7fa5e491 100644 --- a/include/ui/clipboard.h +++ b/include/ui/clipboard.h @@ -69,6 +69,7 @@ enum QemuClipboardSelection { */ struct QemuClipboardPeer { const char *name; + bool guest; Notifier notifier; void (*request)(QemuClipboardInfo *info, QemuClipboardType type); @@ -179,6 +180,13 @@ void qemu_clipboard_peer_register(QemuClipboardPeer *p= eer); */ void qemu_clipboard_peer_unregister(QemuClipboardPeer *peer); =20 +/** + * qemu_clipboard_guest_peer_present + * + * Return TRUE if a guest side clipboard peer is currently registered. + */ +bool qemu_clipboard_guest_peer_present(void); + /** * qemu_clipboard_peer_owns * diff --git a/ui/clipboard.c b/ui/clipboard.c index beecb40e6f..928aa435e0 100644 --- a/ui/clipboard.c +++ b/ui/clipboard.c @@ -12,6 +12,8 @@ static VMChangeStateEntry *cb_change_state_entry =3D NULL; =20 static bool cb_reset_serial_on_resume =3D false; =20 +static int guest_peer_count; + static const VMStateDescription vmstate_cbcontent =3D { .name =3D "clipboard/content", .version_id =3D 0, @@ -80,6 +82,10 @@ void qemu_clipboard_peer_register(QemuClipboardPeer *pee= r) cb_change_state_entry =3D qemu_add_vm_change_state_handler(qemu_cl= ipboard_change_state, NULL); } =20 + if (peer->guest) { + guest_peer_count++; + } + notifier_list_add(&clipboard_notifiers, &peer->notifier); qemu_clipboard_notify_peer_update(peer, true); } @@ -92,9 +98,19 @@ void qemu_clipboard_peer_unregister(QemuClipboardPeer *p= eer) qemu_clipboard_peer_release(peer, i); } notifier_remove(&peer->notifier); + + if (peer->guest) { + guest_peer_count--; + } + qemu_clipboard_notify_peer_update(peer, false); } =20 +bool qemu_clipboard_guest_peer_present(void) +{ + return guest_peer_count > 0; +} + bool qemu_clipboard_peer_owns(QemuClipboardPeer *peer, QemuClipboardSelection selection) { diff --git a/ui/vdagent.c b/ui/vdagent.c index cc32a94fb9..cdd4cedad2 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -695,6 +695,7 @@ static void vdagent_clipboard_peer_register(VDAgentChar= dev *vd) } =20 vd->cbpeer.name =3D "vdagent"; + vd->cbpeer.guest =3D true; vd->cbpeer.notifier.notify =3D vdagent_clipboard_notify; vd->cbpeer.request =3D vdagent_clipboard_request; qemu_clipboard_peer_register(&vd->cbpeer); --=20 2.43.0 From nobody Sat Sep 26 23:05:15 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; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1787061509; cv=pass; d=zohomail.com; s=zohoarc; b=NrnR3INIuwEbPwKGXSUdX6edW04dGvYfHUr3PEQO5t9KrcxapUPxVxb52OlPBV/P91HHWmyYeoEL5szYa1GkpCc4B2ju4M7rtPu18BWy+bheSbcg3Ar2TLUKivL9UVgZiqf38vRFXF9tBuOXAOYIZRtNQoQ+TpMFktp3ba6ZMoo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787061509; 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=GkN5MiXkfjtGOwQE+blVI6MACFEP9Z7RruF5XH0/R8U=; b=ki/HfS+m0rCnVoKrpW5/JVjMopIDIM6Pa+1GUAFlBEtPspTF9VvpYEwiMjZfmBbAd9nnabCvjfUXr7Wbty7dC4mGMxf11XiiCvRGw+F6kqakevJRI4gNL3GYbO5J38SWHUeg17Wbtkp1yvYu6P9lF0DZLcW0Zd28fh7E7SvwCk4= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787061509489817.0550354696828; Tue, 18 Aug 2026 06:58:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwKKD-0006UT-7n; Tue, 18 Aug 2026 09:57:57 -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 1wwKKB-0006Ja-9J for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:57:55 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwKK9-0004kF-Hd for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:57:55 -0400 Received: from pps.filterd (m0127839.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67IDullD1560700; Tue, 18 Aug 2026 06:57:52 -0700 Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11020121.outbound.protection.outlook.com [52.101.193.121]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4g2q6cxnu3-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 18 Aug 2026 06:57:52 -0700 (PDT) Received: from BL0PR02MB3827.namprd02.prod.outlook.com (2603:10b6:207:42::26) by DS0PR02MB9103.namprd02.prod.outlook.com (2603:10b6:8:131::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.17; Tue, 18 Aug 2026 13:57:50 +0000 Received: from BL0PR02MB3827.namprd02.prod.outlook.com ([fe80::5f5f:bb6:29f7:afd]) by BL0PR02MB3827.namprd02.prod.outlook.com ([fe80::5f5f:bb6:29f7:afd%4]) with mapi id 15.21.0339.007; Tue, 18 Aug 2026 13:57:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=GkN5MiXkfjtGOwQE+blVI6MACFEP9Z7RruF5XH0/R 8U=; b=Qq1Gw5RsiklGbWt8NasSUGINFeivT3xZYSY4px0RTYReYPBpwDbk8ay/p epMWTg2k+RmVppkzkc0h3L2Fh2GOaYj+ZgkJkjSuKkJLxb72sVX3DYLTvP4IcGSQ 9IWFkAqh1Qhh4/tNfnCv2fPBEavQUJqVsD7DcfQcRQICh5YVEB4FEN4CVcP0e9sw uNffciuR0jytR5ylLlADG107/6sSh6Yr4C31uZIU2v2nfk4bBC8rfB2sMOOUihw+ kxnU++uxbiO6GrhfXb0kfsgWSmiLuNAkn3f+kP/tHM9ia6pg/DKN3OENkB4ItwRg 6IaZn1BnY8gzeYkJL2YXHmikhsACQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=luAEk8naafp15B1hF3b0kfRRSKSZBKtaze4L/6gVRRHLwEsjv7o+KPcCu/nF5vlUzoA7pS5WD0PpG/w/Ge/uJVR5GXDrG7SmFsFGX7SbPCYulBupOVg63HQlKvXDY79/Hky6UI5bh//A3hLykCIJugTf/Z2u/GUO/EP2SfgTxeuT63Ky7G6uUJWgP1yQbtBbQCMc39hamJ1QGfmvxJkgXNg2gNh5VpYpaOUSTwOAc+Nsz3ZYZ8P7CizUTJvbSYE8GAYxUpnAFufE67auEbOMvCKjZA5grokvSwniW543uyoSBwucQ0tmlHVV0duXgJ7ewWk4sA4Rumad9fgILffgpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=GkN5MiXkfjtGOwQE+blVI6MACFEP9Z7RruF5XH0/R8U=; b=KC5HvmBtypTQ49QN+bkfuGAeAJtMlFiR50piQvSl2/LIH6YgI50R8/JliDzStlMUQhZYp+YJ4tP4d7TG5brOb5STLqiC35fgH+uq/2O7Gx2FAUxI8Y0j3PaTyVCGgEi86sTZhUiANeq60TpknXJDlhuNQb2HsgfyRZMFdX52InSUeFA3mKy1Ty4EF0iIzqCqQBhBHLz8ol6Y9TAF/wMchcYCzjqXC4hTxHmf5i95yuSaTKC6+FC8jCn/E3lBdcr4oam9jELOF+OYnrBw6jMTpRObvsyiZJUo1GUVtMmfb/TZJ4wp/86EeSXCoRXTFwGZhLlKWvDE9/VtlMbNS2sPxg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GkN5MiXkfjtGOwQE+blVI6MACFEP9Z7RruF5XH0/R8U=; b=FqBnBfrL6eIOCxWOVtG5OMbQgKKHD9KbfN7kuiVquEudzOJ0Bvn0YFeuZRw63nfXdIUoKB2XQnnkG8Uinj7U/um2Rwy3emxOiHrCzZHwBdC4WX1rkrPtQ96Vptuu7L4Y9BaR9a4c4sgIk3C2CIsjtbe4eBjKZwxSVaNEji1MrTV8QZLJmg4YTHJooDSk7ZMvz/eVQbSWvGABUOfOb14uDBuaXoGEv47RTxZJZ4uKEqz9QDc6PR5AP/T2U4enqtV1EyoNkzk4vQ8vLeMFDs0PdbWxYvEcRxJEL4qPofZ1rZzOi+KWzjFZiIYPnPrhU1z81GXTwpCp1DPp6L9NcHfuyw== From: Lukasz Kornicki To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH v2 3/4] ui/vnc-clipboard: factor out clipboard peer registration Date: Tue, 18 Aug 2026 15:57:36 +0200 Message-ID: <20260818135737.2679311-4-lucas.kornicki@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818135737.2679311-1-lucas.kornicki@nutanix.com> References: <20260818135737.2679311-1-lucas.kornicki@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AS4P189CA0019.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:5db::10) To BL0PR02MB3827.namprd02.prod.outlook.com (2603:10b6:207:42::26) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL0PR02MB3827:EE_|DS0PR02MB9103:EE_ X-MS-Office365-Filtering-Correlation-Id: 5fdfbd49-77bd-49cc-c910-08defd30b0e5 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|366016|1800799024|23010399003|18002099003|22082099003|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: GVGJHB77cbLC+zaWzqkTbjQnpauzX64m1JwQIXUevpV8SVTrKfImnhJru9I2NGi0nXSgmUZjvdiREOD0KcX5f3OhWHdWA6XxIbvPlFsZvqQGWL3wCmrgmkK7s+RETVAGhiwcBHy41ASiNDMKSfcR164aSIDmrWXKLxteA1JZXEZm2Dgw5kWnjhEJp7sf4xSU9VVUry+QdgLaqi2tnEVND4XiZgObgHzdAsGH6au50h0jX6c6p5CroTDOYZf7kB46GO8UQ+0ZA0Of+iay3c9+8N1NQHB7QXst07MpE4q6+7ayPdqoDEbpsKk23DeBwF3522QRXumJgdvEYDv3eFUMNSv0NbSUU9b0QmJrSoQS9KYppzGGxyoQwbDuJ6WZGb4kdtSslllwq4MoCVFABDtPikN94Gs6VSCplNnnoWs1GkwQxhAPpC1LlS7bBraVNh3P6qbMuaAE024ByxTNMyjm6A37KxU8GmIGMG5NPBiTU5e6q33bSzdehYG9L/TQqJzmgrree95THUSKlp8TrFbysB6Mpjbx5eVXpBJVPefz4JtdEHobb8bhbnV03isi6TT0KBTX3p4J73OREVo3UouCXF5ZfP3kB/rzvhg1s710Xqa3mhqR9pxDtfcpVqc+0Bz8Lozm5zsFh+dH5v6GlLa6UthzZCpp3KGAjy8K7YsmVr8= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL0PR02MB3827.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(18002099003)(22082099003)(56012099006)(10067099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6jLZxJV7fNpBAHpgGZEN6GgzwsWswLdMFBxteD01aOXIIwSBJJ4gk5a2oj6G?= =?us-ascii?Q?A0u/bBJTGoUpA50OHVv6EqzMVeJCQliNkuVOyfdFUG3twp21wIMM09vVLCdj?= =?us-ascii?Q?RlFXDV06U9Xus+XXyMsQW5dcvxGNVZsuqRk9RG7yY/ZguaRMuO84gNP2O6ve?= =?us-ascii?Q?vKFcHqucs5PGG2+FGEPiaIuPEw4GERextpq7VdHck/zy+MwRk/Be4AQdvHSe?= =?us-ascii?Q?uNoa4XnkBE6jhfVRL+6N5UmsUg3h8N+h2zqxcvmRHnGnzKsjLAzks0Pg46Pn?= =?us-ascii?Q?ojSMP9cpERocpT841gdRUtUttxuf92i32kBUIDMYRh8bQJlsBslJIoBiCOtz?= =?us-ascii?Q?oC0rEkWRBHmY4cRFekF8UB9JLuXgGS8s5tGQ5zjjUglop78rZZzM5pF5nAi7?= =?us-ascii?Q?L3GR/gSS4CmBmdhsPe6c4V6RA0NgaYsxmfLIeuDcExUGJGWR5rNuzwHMpbJ9?= =?us-ascii?Q?l5cW1H3UHv14F59wMJDVz/Ob4WHGHKQlbtErW4R+iMXHGdzmwvDNebOup9GL?= =?us-ascii?Q?XD8LGbGE8ROHW5XRFbcCGDUYW8KGl6iSrPzUXAP2tDAQsJeCWYoYT7yRNySM?= =?us-ascii?Q?bJiLqLhFpWkGUl6Kasj1byZ37H+NMsnjx8Jw/dr1rC39rOo0MSv/AN6K9xbM?= =?us-ascii?Q?7e8HQd9sS8sNOVtSU2vmeSXwu5+l540xHU6zsbCPN8Z7Nu1GWP6OQ3gI0ha8?= =?us-ascii?Q?5ka0I++TP1u+CyVmN3MLJ18nD0j1cHVphACVxlkvsOtkgHBHUo6B5SSEmE6P?= =?us-ascii?Q?OiRlnOrDu4OkwjF4OmN5I9TE2pCzpyTd37BEQNYV0ZZ8pw5p91aeX4rnr9qp?= =?us-ascii?Q?gwUGqQwv46NVKFZzytGTGJVUS0O1q1GiZu4zoSmx05jXJJghunHKMBXCoDpU?= =?us-ascii?Q?0CH2rmDR/kNhHEFCukLVpSJlUU9VZ7kj/isQWkPamUBn0fTYHTWFo4Ask9ew?= =?us-ascii?Q?pZusIgXihcHueQ41mF2Kj/x8R8ZloqjIj1FY8OhooO51YjaKzLB3gVjUcK7H?= =?us-ascii?Q?GD43df9YALqwQGAURjqXVdCnPI+lHh19eQ0paXm2blNh8Ia4M9p+d0TwaCge?= =?us-ascii?Q?Hs2WAlh0ye8FLJzjxxn4rmrPq/GN3U4rcP8YwCDWkoXe120nQdMEHKLxgwBc?= =?us-ascii?Q?1py+wCRb/PwBwtaD0bd9G+sEJYk5/k6jbmNad7IOUZBeSdBrcRo2qLw8dTNT?= =?us-ascii?Q?tv1+GEZsJbW6rPR4OBaaTFdtreSfHq3p96hRmzSLkxloBAaU1ycznGU0JMXP?= =?us-ascii?Q?zmRiEqP47mBrDMOQahlP3UK1IH3dj+ZDCKHn2gX1C6otwpXsZoDqIjs7VL4n?= =?us-ascii?Q?sQRaJkKN/aV/GY4PEbq4ZIugL6MUxBBFqC9AhxJbrT+e38iJcZic4/D1+iq2?= =?us-ascii?Q?YPO9C++6oDmFyhdF4wOM/+aNdb+8mMqsLJhlg8RQxvfIFktFqmQOu0E6YZ00?= =?us-ascii?Q?F3nRnVeGMfpjqm+4Q2CMtn+kgGCOdFP2PkYQvdSoWOHXvPLptMXiUTkqOcAF?= =?us-ascii?Q?SyR6qxzcvB7iEDIfeht4Z/iESIdh8ETZHwNYiYuTeD1vp/ZwG8BWqKD1BUR0?= =?us-ascii?Q?tNl2HDkDuj+rs+BR4RPEhAIdsxHRyrzJYkr/xLLtJfI1k11HKKFd8Zej8Xam?= =?us-ascii?Q?iTiHSgSFvFYolC5YimfuSR4s0STslnQZ1paSXZ13BkXUa0J7bpypkjHhjs9D?= =?us-ascii?Q?YaHBakdjfZQF2AOEaQXEXIt+CNC6TvtG8Bz7m9SdOaydmlZ1OKB7cqk21Jjs?= =?us-ascii?Q?LmHDQUcrkA=3D=3D?= X-Exchange-RoutingPolicyChecked: Z6inbiO2B9KD2eWQYI0QWqreOXJB11fvXTWr3/PG9cl0ngfGcPkqJneUFJzruSltubA7aH60uesFaTcNdS5MKrNWagEceMGMh9Hq8gr6v6Ky+Ifq7kwZ6A1/fij/+Tx1pB2VaKH0MFXIHTb2tAmow16OKUMXzeTvhqGLdqgCVeKd5lgrPbbgXE1pxHwBnEfHMo834T/gfcJkBFfmw/1n25UwFbGkomdOrshdVZfCF7MQnWGGveitiF9U7H8mzMuw6LnhAAOaCyYtp3gE8nQKb8COpezpwkiOJwIJTGyLCWfAxGzh+PAnY4jG+q0GzUpPbZVQYmGXTnIJslCjrIij2g== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5fdfbd49-77bd-49cc-c910-08defd30b0e5 X-MS-Exchange-CrossTenant-AuthSource: BL0PR02MB3827.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2026 13:57:50.2317 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FxmHDGfC/Ms7z4ZbBEMtDvvWCl0tivhI4UC9JEBCYNuDGZLg0ya94QmG1qJEwcmDxW48i2l+9Ke6+nN6XLPYKh/dCKfH8nXwMnWTgdoj3hQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR02MB9103 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE4MDEwMiBTYWx0ZWRfX4HD/8Lywn8Yk oVFTft0JEiO2dg/Ar7Lo7Pu+RJYlsokE5SKkg9V04DQK6WWHJ05cQMIbSy65G7qaGk85Vuh7DKj eX+JcpqBRGVsEJ9az6VoMkETGiv/m6doC9rRg/ri3N68ujUGWHcRB8xy503tT+Fq8QlQ3IBnl+c ZhqZ6BTCJiTED9JB5urCzkedtziYHOAvO5cP6A+6nIoDYRdOMLYF1GeRXi7dIrMZzJMU4bdEZ7l qhl/chr7sz14cBG6kbwGm17NZri+JpWYM3wywFMVVQP4MA/vx1SwZjxNZCizn+MP964E/anxyJL hn5Gu9LwzBD7whGngfyFEgMILkRQlEodERsV1FDMS4z2aD41cfEBX96wW3h1H88V2VYJ78GPxb4 lIMbs9mpbfxLxcHJEpWLvWNJ40q5mSys3uVMpclsxUYqjO5N7LhV/jbF1O33KARSRwLBH1oltxm /OfiO1ujn7uNFaRR1ZA== X-Proofpoint-ORIG-GUID: 0twUlcabviI4C58dIG9Ge7XqYL-C6qTX X-Proofpoint-GUID: 0twUlcabviI4C58dIG9Ge7XqYL-C6qTX X-Authority-Analysis: v=2.4 cv=X85i7mTe c=1 sm=1 tr=0 ts=6a8464e0 cx=c_pps a=EgIJVKDiB2rM9xu8Bbqf7A==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Sv0fKeRqtYgA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=y4UcunY2MAxhM4LwGdWI:22 a=64Cc0HZtAAAA:8 a=PIACHJi0fWsG_2wZ9OsA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwODE4MDEwMiBTYWx0ZWRfX0qnkNKn9O9dn DLDAMvBc/KLDN26KyzEWUuR/nmQMkJlhfmbk1OhjnWmFZAPvah5nKJipBh+jXkgR2/c5taGOb/Q c2C6dPJp9DOXpGe/yYMh5OdM1Ns4zoQ= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_02,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Reason: safe 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=148.163.151.68; envelope-from=lucas.kornicki@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.343, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=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 @nutanix.com) X-ZM-MESSAGEID: 1787061511038158500 Content-Type: text/plain; charset="utf-8" VNC clipboard peer is registered inline from vnc_server_cut_text_caps. Move the registration logic into a function so a subsequent change can register the peer independently of extended clipboard capability. No functional change. Signed-off-by: Lukasz Kornicki --- ui/vnc-clipboard.c | 17 +++++++++++------ ui/vnc.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ui/vnc-clipboard.c b/ui/vnc-clipboard.c index dfe830f819..67f710f6ed 100644 --- a/ui/vnc-clipboard.c +++ b/ui/vnc-clipboard.c @@ -325,6 +325,16 @@ void vnc_client_cut_text(VncState *vs, size_t len, uin= t8_t *text) qemu_clipboard_info_unref(info); } =20 +void vnc_clipboard_peer_register(VncState *vs) +{ + if (!vs->cbpeer.notifier.notify) { + vs->cbpeer.name =3D "vnc"; + vs->cbpeer.notifier.notify =3D vnc_clipboard_notify; + vs->cbpeer.request =3D vnc_clipboard_request; + qemu_clipboard_peer_register(&vs->cbpeer); + } +} + void vnc_server_cut_text_caps(VncState *vs) { uint32_t caps[2]; @@ -341,10 +351,5 @@ void vnc_server_cut_text_caps(VncState *vs) caps[1] =3D 0; vnc_clipboard_send(vs, 2, caps); =20 - if (!vs->cbpeer.notifier.notify) { - vs->cbpeer.name =3D "vnc"; - vs->cbpeer.notifier.notify =3D vnc_clipboard_notify; - vs->cbpeer.request =3D vnc_clipboard_request; - qemu_clipboard_peer_register(&vs->cbpeer); - } + vnc_clipboard_peer_register(vs); } diff --git a/ui/vnc.h b/ui/vnc.h index 88293ef497..d8b0070396 100644 --- a/ui/vnc.h +++ b/ui/vnc.h @@ -636,6 +636,7 @@ int vnc_zywrle_send_framebuffer_update(VncState *vs, Vn= cWorker *worker, void vnc_zrle_clear(VncWorker *worker); =20 /* vnc-clipboard.c */ +void vnc_clipboard_peer_register(VncState *vs); void vnc_server_cut_text_caps(VncState *vs); void vnc_client_cut_text(VncState *vs, size_t len, uint8_t *text); void vnc_client_cut_text_ext(VncState *vs, int32_t len, uint32_t flags, ui= nt8_t *data); --=20 2.43.0 From nobody Sat Sep 26 23:05:15 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; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1787061488; cv=pass; d=zohomail.com; s=zohoarc; b=DwBBO/OiJcFIMy+qlhO258J8YVcLuC/dszz/bStoyXWIRmp5ZgcCFwukd7VaV91eBRHA0gLAYCXof5TG4elcFo2B9rHRyXjbfsNuoTKhucphhLvLFnSNNc48vF42sQUNWORYsXzRKqqY//vfpcAN+W5QZFLm//JDPkxFm7fHLTI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787061488; 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=SEX8wWQo6HpRc9xAQ15nkFFZsku2DEKUFr/6B30cWX8=; b=c0NiP4StCdfIrorN48oOZJhvzx4mcCbkalkilfGMSpKqFPSqjUQAj84Qay4tx1yFrZd6s9r/N2W2Mh5rPcVQJyvI791pC4Br9gRKCZRDZGD3Ueww8v2gXNO9IIqU4HzYf4w9vgGpG/05k0+SFlk+ue6+poINnDuH7Q2d4qgbmd0= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787061488638645.3719029687552; Tue, 18 Aug 2026 06:58:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwKKG-0006Z0-Iz; Tue, 18 Aug 2026 09:58: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 1wwKKF-0006YZ-Cl for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:57:59 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwKKD-0004kZ-Ab for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:57:59 -0400 Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67IDueJO1379006; Tue, 18 Aug 2026 06:57:56 -0700 Received: from ch1pr05cu001.outbound.protection.outlook.com (mail-northcentralusazon11020075.outbound.protection.outlook.com [52.101.193.75]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4g2meqxt7c-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 18 Aug 2026 06:57:55 -0700 (PDT) Received: from BL0PR02MB3827.namprd02.prod.outlook.com (2603:10b6:207:42::26) by DS0PR02MB9103.namprd02.prod.outlook.com (2603:10b6:8:131::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.315.17; Tue, 18 Aug 2026 13:57:54 +0000 Received: from BL0PR02MB3827.namprd02.prod.outlook.com ([fe80::5f5f:bb6:29f7:afd]) by BL0PR02MB3827.namprd02.prod.outlook.com ([fe80::5f5f:bb6:29f7:afd%4]) with mapi id 15.21.0339.007; Tue, 18 Aug 2026 13:57:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=SEX8wWQo6HpRc9xAQ15nkFFZsku2DEKUFr/6B30cW X8=; b=ygkDRPMQjlf1rpbyLlnznq4rbYkyJFt9agh52xZNxkgZ66B+eSzaZ1rDO mBRsfheXRR7ylv1IMIgJHD6SAxhRJ4J2hXCZoI3tDiJwyLmeardJTK32aMFMwhzt fcx53RWYS+TmoDlLhZDiYRJBMO6kJ5Jk7bOMoIq3NzXH8/L1oljop+jbfouRqLWt B2Aujby96emCDe6Lqsnn6EUbeJcYTiJWuLrEXbpRk1JD9AWOwLvQLvVtC0s5pHoB ybaVnwsmky9am82fRy7miaf8NLHrWRpcNHiFm8Oo65OvVh4691+SfeiZYZRtz5Kp k1gA2D/TNgslNxmpcD1tdS02wqwsA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qqUHUblotreHCf2tSXUos8C1rUQ2tr1q2W4nT39ulSs2tl7oxi4KZvZtboHnxGAk6G836UnDtSHZxzvCrG36gARZPcS1tnYWmuUS5lKZoooINwa+06yivwmE/8cZu8tW5+AjWOus31D5VYKPUa/in7dp1uweH/4cGNJGq+Hx5dRJlk6km16zxhX47ZNwK6HhOUMHW08Qm0Uvno/0YGDtPKFqhnlXecP9gxd/C5XOwBwv3WBYkIFje48kSFI8UqcYHq1Gtps4t+/0vQFmqbDMnksOdTeQuRP+pXmPJbd99kfMKwuGbLWaWxGjnIzSFexr5Z6bGLTLDY6DxgDhJiP2kg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SEX8wWQo6HpRc9xAQ15nkFFZsku2DEKUFr/6B30cWX8=; b=t5gI8QshJbANxKvPudA87GInkpgMAI7q+FyufpQdFld8h1AqBm40904ckR/xp6QOqJHMlbEymjbiWR9OW2ZhCmr/IdGAEdcKngeANbajYqaRT+rzUuwY3YmeC3+PXO31PSM9OklZnwpuAhh7KoVdjsXPc/v/CImUoR6E73RBZVTA4wrj08+kVOA+1IndUQsb4aafM32QkcmFUaqsXEnNSuioryvxD/2FeBeDJQbxcqkb4fiXBf741xiBckQ3uxuTMPnmQBrlFxzeG+qKA2muO/JKv9dHDJ4U16vCAn4bwEJ00pKl2gK6i5cJIKlackgVaS2kARc+Uy4LmRryEhUAPg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SEX8wWQo6HpRc9xAQ15nkFFZsku2DEKUFr/6B30cWX8=; b=YDTCJra1FYCUBs/YF+2mQbi2lGk5yAf+5RAv1hgVtkHarPg7o0kKoYmohjbDBIlgdiN0RHIiavJnoY2gsGQRwnROrgDgPqqkFfa/3wdISU/FSYDHXWZmTbhmFoimM19kWCu+Jxxi7X22XicW3vTqmc0uRhLBiL3EqwWcMT+jdTxNTLmyl2Brcc223tIpMKbeZwPLuKZ1hW02YakkItka5WKbwuOIgTsthagMv0dRQi+vQe+HZjZmVkcWLWu0WtAy0I7kP+xVo1wOym3CweeQfebkm8c+UQpFZiGHzTgDfme2vE5WoBdb69CDGCrJOmAm6QrOwBzSjDyoyK1YBRbziA== From: Lukasz Kornicki To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH v2 4/4] ui/vnc: notify client of clipboard peer status Date: Tue, 18 Aug 2026 15:57:37 +0200 Message-ID: <20260818135737.2679311-5-lucas.kornicki@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818135737.2679311-1-lucas.kornicki@nutanix.com> References: <20260818135737.2679311-1-lucas.kornicki@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM0PR02CA0196.eurprd02.prod.outlook.com (2603:10a6:20b:28e::33) To BL0PR02MB3827.namprd02.prod.outlook.com (2603:10b6:207:42::26) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL0PR02MB3827:EE_|DS0PR02MB9103:EE_ X-MS-Office365-Filtering-Correlation-Id: 4c036e13-eb5a-48c2-ef71-08defd30b323 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|366016|1800799024|23010399003|3023799007|18002099003|22082099003|56012099006|10067099003|6133799003; X-Microsoft-Antispam-Message-Info: FYtnafDVifAvhfykIVl40HLQP/R2O6CCXH8wvpoA4hKhsy5STMXS22T5UA8uUNofj4cUTw2rJZq2I0XNd93Ixwzmjt/dkf5BzRw0TKs0Rh97LqK2+7F79QGKTS7xDDwxbthxC93xv0lFWuV/jY/l5Nlm7TOJHSAexEd22134foj68Eg4JR4Q1oZCHLM9EahawI0o8dTh6KjSvln8hN8k0VRkAhaCJJ1iIBmvuHQFjepOC9OmXvB2j7aAJAGmM7R93/+OwlsTJs8gOfHhnCXUk8n9qiOD1ufyGc7Eff6PJj6qqyNKoK26BxMDNEFN2jg2NjYoIfFzl3ZKeY6uB30K99iYHimljlHfdhrLoOJVANLuPSxCuGaJcNwuSQtK5IvHATNvN2vEbpvwnpm5HzvcnY0b1C+lgDG9+a2RqvKAOSiOtdaag2dpy/EIRhgbEmD3sQhYLLADbqLN0/G0aGXoK/gU80iJgPuly5fOZBqv/3dqS4QoIwjpB0jbZse4D8Jaev22r14TiC8nIBA8AgHm5W7+RPUZ/pFaDT5JnY2Ed3XoxJPEVUNkWevj5m3PCp4gmdFICusxSKl4vBm7/Aycx/hftPPnF9UB4DcbhsYz0EIgdnAw1ye8vl4jQixtfexSwvhHKYVdJhDM9FM6OaTBDhGbUweqiVchbRUHj3DCVbk= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL0PR02MB3827.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(1800799024)(23010399003)(3023799007)(18002099003)(22082099003)(56012099006)(10067099003)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vEaA+oH+x7jCQ03tlo3ZRBteG4GcEhHqvKiYmxNO+rtBBqY0akpSsl3WLG+T?= =?us-ascii?Q?q+K+42yXhcw1EQ7eMA6/Lwu5GOaClQtW60s0/o7Q7bkvp68WsGTNK9802jyu?= =?us-ascii?Q?hYC2k/oxst6SGiyzVViXJVIt+WL9IJ94k9JYIfWNyZNSfC3sJmGvel68Tx0T?= =?us-ascii?Q?3UVRR93OK4qTLlqQ1ipwwWRhtvH7zBwWsC5zwXo9pXa1Id7HrBTE25BWmrau?= =?us-ascii?Q?euftDrzNbn9crlp05ZMW1kVfXm7/2YginNizC3yXhOsIVW0BrSIL/o+S7FBY?= =?us-ascii?Q?hZhNF8zUBCcmxleSH+PV5l8N/tceKksvt0V2SO+Y0A7Im9fIzKZT/bmDL3I4?= =?us-ascii?Q?5PtuaXsC5GfXQomkHsYeBclb/9IFIv4cC6nI5oLf7GQ9hkTdgYVcCs2Rlz+d?= =?us-ascii?Q?EXZkQujJaA/TQ0XgwDvN2Q2PGW50KhC6Db8xfzjV5gSVIdgTxWchPyaRxMU3?= =?us-ascii?Q?I071+N2RtpxgnX0k2cv4lZUjXqz8Y71LIQJw61m6Who9qppTkzfM93fMQJKu?= =?us-ascii?Q?YbKh+JMDpGmJaEp6WtV2tu2LSpftoQEe0Nd+CaU8LhegAlmrqEpqNwyfJpmk?= =?us-ascii?Q?UH/y44k8A8wC2O4I0GNo5Cm9ZeKl7sXgQIq63sUDnxT9dTqe8Zcp9S6+Foy8?= =?us-ascii?Q?VAsNH0C7fLblagGWmnr9j7Y6NlDkNtOrkXzOvdcQXh2CUnSFFYTQ0mXE237r?= =?us-ascii?Q?3iUNMMvxmUVC7PrylTEMoASJcGbFMFltcGIcOx8vc3naMvZBBLIVQQ9P3kZu?= =?us-ascii?Q?FADIj23DyUJreY/40sVuLI3s95wCVX5a1bF39jsw03CzNtRTej7OuFf3numC?= =?us-ascii?Q?Soru2P5g+UmeUUPS/NQpk4iY695GGvWXte5qGw704kHvbS+KjPf2xstrOIvZ?= =?us-ascii?Q?IlM5H7X/wA1c7e5wsebSJIG7mQhMcYc5o7FE7YnOUfd1a10edTQ3XlQWN98Q?= =?us-ascii?Q?bS87pQnbvHx9sY7aXMok7daAYLATcKiE7lZJh5tirnyqVITbdTD/TZMUeHZH?= =?us-ascii?Q?Q1VAIdrSaJmDpFgvQ4K5E2v2DUPx3JRHdNAHIFq7/BePpwL7BtdJmOmD3p1J?= =?us-ascii?Q?4hIqN63JBdootMJmH8yOGd/XxDzgP0QsokMjKwZBAyLRD/sl6mRBtizf3Pka?= =?us-ascii?Q?cgYOgBEKRRJEUVHs4jl9my9szoGi9zD5UFlc90VeCcvrJ/1QRy8ln6kS6/ST?= =?us-ascii?Q?1yx+GrZZOUGGJnASA0x6j+lLmMQvyF2XLMR31cbdR0FHzOFv+izejzqYmhJ6?= =?us-ascii?Q?SJ0L8594fzsB3ZhaW/mc3jEfi1ZoCSblEKExqq3+exG0VMFeyncO/Ye4I++7?= =?us-ascii?Q?E/qpbK2H0nyG2snkfWYDL172AvIfNV2xYse2MrXogn1oEAGH1NhAtUil+b2C?= =?us-ascii?Q?sdla3b1qBd0C+1icGHFrikUiMKtxxjzb6ZTRNXgfhr64d0f0iE8TiuDxDMWs?= =?us-ascii?Q?vQO0B/eypJE8jWv8H245grwTIZxd9HDaSSSxEkZv8MtCMmfljx7RUPwoBZ3T?= =?us-ascii?Q?mZFX6eHNXnpWE0/SAEohYXlWZnkCeimJXbMRADz/b7BvmfEDnIgIcFYbvv5d?= =?us-ascii?Q?a2jRK14U1PoU0VdrQyrDUCov3iZbb8vCEAZh0N6zlUSVmav91pBI6PtuUCoj?= =?us-ascii?Q?Llh6M0+uQ8dnqWrSd0cDnjzmVpldnQyx2RYMpRFGEe+9+92+7fcVkdMd9RLv?= =?us-ascii?Q?4YtHeS/d03dgr9KfnLfbIACfJfdSB4pLoJnQWOCcbBMQ/DCx8qE6PuGzP9a1?= =?us-ascii?Q?+9DkWXNX7XSrBLkm1jJ34/vxJhaWeyQ=3D?= X-Exchange-RoutingPolicyChecked: T8gvGmzd9UkuQqGcSCH96NmZn4+c5NLEdmUEqvcGrmhUv3vX8HHs3R4iCIpORcTUS/AggoKNZmFY6vbsR1/3w+jaWsTfqYgsDIqc+d58bm3IXhgiaIASuDW8mZ49EMeRIsnga1HmZUVmqEjDwASdYbrv5D2XMakFzMbHfw2G7jbgo+X3iH3iU1AwI5Caf6/uXrp3XJQjrdj3kZ5VrMAXsLuetyDwJrBQbvEaKLAMA9bYg0e1V1d/zG3xDMXT0EVxO+og5+58tjAt2isib++MO9YdWShXAgDokHV27SiYYWOKKYI/6ATrHqeXaY9MtHmz/4QnWTKeljjFSAF/KLbIzg== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c036e13-eb5a-48c2-ef71-08defd30b323 X-MS-Exchange-CrossTenant-AuthSource: BL0PR02MB3827.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2026 13:57:54.0252 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rqTK5GYuC+KMQNwA3+zXne/rRLjb/+7N2DowsmcnnKM6lnw/FZSf9M9MBfCdd4kZQZHmdPWihbz7E7R1V9hYfslPCqe5Apy4vuOWeOZ95X4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR02MB9103 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE4MDEwMiBTYWx0ZWRfX4LjiJdzzEm6W oqVTYk7mCeQiGbD13vq3s5NXUOmVd1KoWg/wCWpKxMm1zZJbzsct4pGtK6lfKOYmojqA+txGDjF NVghN+JdI5bRNRFm0eWUKA6bOzX5MfGOQiQUIk+4fROY91lTHDwd2NEG1F4HC/Q4fXIzDKy5sl7 N8Fyqx17gHcKwZ8QjjrKaofpkFHNEG2Xd0KpWkPtGILQ8XfejVqq/UTqAj6/7b2U5EdeUZ7D2wE gEZNFwRqW/eDQMAHgkA4kddnchDwwgaMLT2sMEmfoxk0GQ+ZeoDwsIFLQKED9m0HRgJ1557AhRK +Dqj9kY9oEu8TeY8fU1WsyLn5yt7E/yuBIfNGyq3yv3Yl3qk/ivvuryne9Br7jYU9yGkSwCY86e HdRiFvJiTww/qq5eHC7J5KPIYydiGSSoShQbiPoJPAPmlFf5T0+36LoV1QDlmqvMf1BPYiO781Q vUBGblPQZoNBd99e2kQ== X-Proofpoint-ORIG-GUID: tP-l9KzXrfcYzhs6rGoO-uPkhlV-r0rp X-Authority-Analysis: v=2.4 cv=Us9T8ewB c=1 sm=1 tr=0 ts=6a8464e3 cx=c_pps a=dTGz0tuhMYfsSU3NwIzouA==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=Sv0fKeRqtYgA:10 a=0kUYKlekyDsA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=_-M8LpHI31CeLmyZm6wg:22 a=64Cc0HZtAAAA:8 a=-3kcguB0CHop7p9IiFYA:9 X-Proofpoint-Spam-Info: AW1haW4tMjYwODE4MDEwMiBTYWx0ZWRfX8T9Lx+2TQmXN 2wkdl/wiO6K01qCuw9x/MfvQBz55TfuFtaKUJyBZujMOVaY/Ql9uFkYnyPgp9e3A1H4jMQ3IuR1 tk/KELy3MW0lK+28vTXcMsaVRbP5Xb4= X-Proofpoint-GUID: tP-l9KzXrfcYzhs6rGoO-uPkhlV-r0rp X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-18_02,2026-08-18_01,2025-10-01_01 X-Proofpoint-Spam-Reason: safe 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=148.163.151.68; envelope-from=lucas.kornicki@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.343, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=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 @nutanix.com) X-ZM-MESSAGEID: 1787061491033158500 Content-Type: text/plain; charset="utf-8" Introduce a new vnc message (VNC_MSG_SERVER_QEMU_CLIPBOARD_STATUS) and the corresponding feature/encoding. When a client requests this feature, the server will inform the client whether a guest clipboard peer is present. The server will repeat the notification each time availability of a guest clipboard peer changes. This change enables the VNC client to determine if a guest side clipboard peer is available for clipboard exchange and react to changes of its availability. Until now the VNC clipboard peer was only registered when VNC_FEATURE_CLIPBOARD_EXT was enabled. With this change the VNC peer can be registered just for the purpose of receiving peer status updates. This requires introducing a VNC_FEATURE_CLIPBOARD_EXT guard before the QEMU_CLIPBOARD_UPDATE_INFO handler which previously only ran if VNC_FEATURE_CLIPBOARD_EXT was enabled. Signed-off-by: Lukasz Kornicki --- ui/trace-events | 1 + ui/vnc-clipboard.c | 31 ++++++++++++++++++++++++++++++- ui/vnc.c | 6 ++++++ ui/vnc.h | 8 ++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) diff --git a/ui/trace-events b/ui/trace-events index 917d116d90..d2fe153b7d 100644 --- a/ui/trace-events +++ b/ui/trace-events @@ -48,6 +48,7 @@ vnc_msg_server_ext_desktop_resize(void *state, void *ioc,= int width, int height, vnc_msg_client_audio_enable(void *state, void *ioc) "VNC client msg audio = enable state=3D%p ioc=3D%p" vnc_msg_client_audio_disable(void *state, void *ioc) "VNC client msg audio= disable state=3D%p ioc=3D%p" vnc_msg_client_audio_format(void *state, void *ioc, int fmt, int channels,= int freq) "VNC client msg audio format state=3D%p ioc=3D%p fmt=3D%d channe= ls=3D%d freq=3D%d" +vnc_clipboard_peer_status_send(void *state, bool present) "VNC server clip= board peer status state=3D%p present=3D%d" vnc_msg_client_cut_text(void *state, void *ioc, int len) "VNC client msg c= ut text state=3D%p ioc=3D%p len=3D%u" vnc_msg_client_cut_text_ext(void *state, void *ioc, int len, int flags) "V= NC client msg cut text state=3D%p ioc=3D%p len=3D%u flags=3D%u" vnc_msg_client_ext_key_event(void *state, void *ioc, int down, int sym, in= t keycode) "VNC client msg ext key event state=3D%p ioc=3D%p down=3D%u sym= =3D%u keycode=3D%u" diff --git a/ui/vnc-clipboard.c b/ui/vnc-clipboard.c index 67f710f6ed..4ecc4489e4 100644 --- a/ui/vnc-clipboard.c +++ b/ui/vnc-clipboard.c @@ -26,6 +26,7 @@ #include "qemu/error-report.h" #include "vnc.h" #include "vnc-jobs.h" +#include "trace.h" =20 static uint8_t *inflate_buffer(uint8_t *in, uint32_t in_len, uint32_t *siz= e) { @@ -224,6 +225,23 @@ static void vnc_clipboard_update_info(VncState *vs, Qe= muClipboardInfo *info) } } =20 +void vnc_clipboard_peer_status_send(VncState *vs, bool present) +{ + if (!vnc_has_feature(vs, VNC_FEATURE_CLIPBOARD_STATUS)) { + return; + } + + trace_vnc_clipboard_peer_status_send(vs, present); + + vnc_lock_output(vs); + vnc_write_u8(vs, VNC_MSG_SERVER_QEMU); + vnc_write_u8(vs, VNC_MSG_SERVER_QEMU_CLIPBOARD_STATUS); + vnc_write_u16(vs, present ? VNC_CLIPBOARD_PEER_PRESENT + : VNC_CLIPBOARD_PEER_ABSENT); + vnc_unlock_output(vs); + vnc_flush(vs); +} + static void vnc_clipboard_notify(Notifier *notifier, void *data) { VncState *vs =3D container_of(notifier, VncState, cbpeer.notifier); @@ -231,13 +249,24 @@ static void vnc_clipboard_notify(Notifier *notifier, = void *data) =20 switch (notify->type) { case QEMU_CLIPBOARD_UPDATE_INFO: + /* ignore the update if client does not want ext messages */ + if (!vnc_has_feature(vs, VNC_FEATURE_CLIPBOARD_EXT)) { + return; + } + vnc_clipboard_update_info(vs, notify->info); return; case QEMU_CLIPBOARD_RESET_SERIAL: /* ignore */ return; case QEMU_CLIPBOARD_PEER_UPDATE: - /* ignore */ + /* only guest side peers affect the status we relay to the client = */ + if (!notify->peer_update.peer->guest) { + return; + } + + vnc_clipboard_peer_status_send(vs, + qemu_clipboard_guest_peer_present()); return; } } diff --git a/ui/vnc.c b/ui/vnc.c index 656768f9c9..9e44a20311 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -2191,6 +2191,12 @@ static void set_encodings(VncState *vs, int32_t *enc= odings, size_t n_encodings) vnc_set_feature(vs, VNC_FEATURE_CLIPBOARD_EXT); vnc_server_cut_text_caps(vs); break; + case VNC_ENCODING_CLIPBOARD_STATUS: + vnc_set_feature(vs, VNC_FEATURE_CLIPBOARD_STATUS); + vnc_clipboard_peer_register(vs); + vnc_clipboard_peer_status_send(vs, + qemu_clipboard_guest_peer_present()); + break; case VNC_ENCODING_COMPRESSLEVEL0 ... VNC_ENCODING_COMPRESSLEVEL0 += 9: vc->worker.tight.compression =3D (enc & 0x0F); break; diff --git a/ui/vnc.h b/ui/vnc.h index d8b0070396..6e8fa66e9c 100644 --- a/ui/vnc.h +++ b/ui/vnc.h @@ -422,6 +422,7 @@ enum { #define VNC_ENCODING_DESKTOP_RESIZE_EXT 0XFFFFFECC /* -308 */ #define VNC_ENCODING_XVP 0XFFFFFECB /* -309 */ #define VNC_ENCODING_ALPHA_CURSOR 0XFFFFFEC6 /* -314 */ +#define VNC_ENCODING_CLIPBOARD_STATUS 0XFFFFFEC5 /* -315 */ #define VNC_ENCODING_WMVi 0x574D5669 #define VNC_ENCODING_CLIPBOARD_EXT 0xc0a1e5ce =20 @@ -466,6 +467,7 @@ enum VncFeatures { VNC_FEATURE_LED_STATE, VNC_FEATURE_XVP, VNC_FEATURE_CLIPBOARD_EXT, + VNC_FEATURE_CLIPBOARD_STATUS, VNC_FEATURE_AUDIO, }; =20 @@ -507,6 +509,7 @@ enum VncFeatures { =20 /* QEMU server -> client message IDs */ #define VNC_MSG_SERVER_QEMU_AUDIO 1 +#define VNC_MSG_SERVER_QEMU_CLIPBOARD_STATUS 2 =20 =20 =20 @@ -541,6 +544,10 @@ enum VncFeatures { #define VNC_CLIPBOARD_NOTIFY (1 << 27) #define VNC_CLIPBOARD_PROVIDE (1 << 28) =20 +/* guest side clipboard peer status */ +#define VNC_CLIPBOARD_PEER_ABSENT 0 +#define VNC_CLIPBOARD_PEER_PRESENT 1 + VncDisplay *vnc_display_new(const char *id, Error **errp); void vnc_display_free(VncDisplay *vd); =20 @@ -637,6 +644,7 @@ void vnc_zrle_clear(VncWorker *worker); =20 /* vnc-clipboard.c */ void vnc_clipboard_peer_register(VncState *vs); +void vnc_clipboard_peer_status_send(VncState *vs, bool present); void vnc_server_cut_text_caps(VncState *vs); void vnc_client_cut_text(VncState *vs, size_t len, uint8_t *text); void vnc_client_cut_text_ext(VncState *vs, int32_t len, uint32_t flags, ui= nt8_t *data); --=20 2.43.0