From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yw1-f169.google.com (mail-yw1-f169.google.com [209.85.128.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 674392F9C37 for ; Sun, 6 Sep 2026 16:06:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788710808; cv=none; b=bDZw33QT8na9ejxkE92LPaYwKmRZE1axkhSnOhKCfMth/5wxjLNtyYK2Zc5PElRiVZcM8dGlVcCskW6CLCh24PSLMQFod8uzOu7CslBYdGX8J1tCBCh94KSIHLUl2kBGGPPDReMg3jYIIzf34Qp+O4ibekhUPfX6rzlAGlU23io= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788710808; c=relaxed/simple; bh=jnZDT8Sv4Cj1A5f61+G4HgmBdnITr/OETP9KlUhlXV0=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=AH6yQynMnzEWUZ01vwGKyQslNHwsY8i3kwXHNY+lDYC5f/eBbqdcceLdWyI61+b79XSnF8HHJf2lyYfGpP2oL5PF1ir78aP46bpUXHU6numTZWJRxr6yD1WWGmnYNJt7csVXMC+vKsaO3JAIZmE8BroksPzjPw58dLb4tfuBURI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=qhm8MoOU; arc=none smtp.client-ip=209.85.128.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="qhm8MoOU" Received: by mail-yw1-f169.google.com with SMTP id 00721157ae682-86e7f44b773so28831317b3.2 for ; Sun, 06 Sep 2026 09:06:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1788710805; x=1789315605; darn=vger.kernel.org; h=cc:to:content-transfer-encoding:content-type:mime-version :message-id:date:subject:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=wSFdM2TEvYurq7tSF4Gk6z6k0v1njEuK783Dp9gtcPA=; b=qhm8MoOU6224BW8Lh5oqJ27Goal5D3Z6xwXQEVuM4keSQbsohCllNIf8Q6SybzIFdE 5Bdez5PpMvqStxRPyE8wVSmvvgIMyxGfUOjQrpmHfZrx0rQ/xk0UJ9EZAkocq+D7fXEN Dc/QU17+Acp71/Hg2o6O8pIFhIskb+Mtgf6pj9JojOL3x2hUY/9R2+3MEhekgPVmO+Ct IWE3byr46Gr1BHp+NvF6QYT4Xoar+bciRgQto9qEsgy9BZUyHUtKOJ72PcZXqI2ZgRqC 8FfcaXUCnMOrt9OukN9J2213RgBRNs5z/JuLJG7ZeBp+O+7QiNI1gJXMmSJDdlurRLU0 XUsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788710805; x=1789315605; h=cc:to:content-transfer-encoding:content-type:mime-version :message-id:date:subject:from:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=wSFdM2TEvYurq7tSF4Gk6z6k0v1njEuK783Dp9gtcPA=; b=P30QZHZ8jfyWjclH9BL6JMRUe3Zfv0DuUYWzJxwHMD0c2INH7Lkjlk2dIymGeujinR YcXdg7HWNrypgR9agBWekAUuXv7ySH85IEVql0kj9eFf3y66bF3CNcGL1LML7d0Q88AE 6+S1nJgopIZS9COgFNAojv052gg4fu3gWqbJLsmkhmnKpT0iAGU7nAk8kRrYwV/xzYDv hLnr9Gs5tXsboXrGhceC1GQRo0qu2NOCmASeky6WOCjdBUcaooJ7LTuqvdGIctYA2q97 KdvK8wDDoj5iBv/0xlkDb0yZxZrhC20py6YjhwGH9z1jSQy+LAmEQk87v9UeO59YpK1e /Fkw== X-Gm-Message-State: AFuF++nlZjeUm00YEORI9pw/lRhedn97N58FEKjisHO8N4r5lhEro2OG c8rpeY04GS4m8lg5QwU0in+sGPVLrLNt2KEzv5/ZzzDn1z8nE4taRiIV X-Gm-Gg: AYBFou2KSgI3RDaA1/RC4U2ei89zuV+KLH6N82C43gwtmiVLyNwXGw45hH6DBaBZFUa ZcD/t8LEsO/Uc+E+sNLkgtTFNZ2jO2VGks9ihegzntA/k0ZzIOiVegkP6O30Eu2t63SOpgxh0PL jw/6Ne4qIWflJve7k/nJjF/JeHg+NXrLjIEiqO8KnBcKyIB7Ei1dN+ri8zm5WJmhVe/j2mxJMEF isITeL6YnEHOWXebUU3tppzLXJAx5NZIQ28zjeZ/G3QY8HymHpyFFlPkYLPGgun9AeaE3vlI7HF Oi48woM3EmVFuDk93wgkmnCFHJ6EDmh///Lfumo5FkKENOR82GKNWzpr0250M8/3loue3J9hdEJ nQuDB2N5ETu1oEgnAu4JpoN+XlGYitV3COXVrX2lPN7Oj+Ba22QsRAgKU7xxTywnCdJhigYDAMJ KOFXBlv+x+m0iLbvsfCK9hz6M70PRckc+l9nOwNUaUEyg+5yYgpgbYk0K0lXHizA== X-Received: by 2002:a05:690c:5:b0:873:5ddf:d85c with SMTP id 00721157ae682-8735ddfda02mr35034637b3.39.1788710804269; Sun, 06 Sep 2026 09:06:44 -0700 (PDT) Received: from localhost ([2600:1702:7a90:6f9f:8bc4:8aec:108d:7a04]) by smtp.gmail.com with ESMTPSA id 00721157ae682-8714b62503dsm57819517b3.38.2026.09.06.09.06.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 06 Sep 2026 09:06:43 -0700 (PDT) From: Matt Turner Subject: [PATCH v3 0/2] perf tools: port UI from GTK2 to GTK4 Date: Sun, 06 Sep 2026 12:06:41 -0400 Message-Id: <20260906-perf-gtk2-v3-0-e1f2086214a0@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIAAAAAAAC/3WMwQ6CMBAFf4Xs2ZqypVU8+R/GQylbaBRKWtJoC P9u4eRBj/PyZhaIFBxFuBQLBEouOj9mEIcCTK/HjphrMwNyVLzmik0ULOvmBzIppdG8aholEfJ /CmTda2/d7pl7F2cf3ns6ldv6q5JKxtlJqqqxZ4lC19du0O55NH6ArZLwr4nZFGSMtVwK05bf5 rquH94gwZ/cAAAA X-Change-ID: 20260906-perf-gtk2-555ca04bb652 To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, bpf@vger.kernel.org, Matt Turner X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3276; i=mattst88@gmail.com; h=from:subject:message-id; bh=jnZDT8Sv4Cj1A5f61+G4HgmBdnITr/OETP9KlUhlXV0=; b=owGbwMvMwCW25rVmCc8sv+mMp9WSGLLm9k86sCNzyf/XgRu3LrN2/vbnzGkXdb/Cb1+SfRKXn glYYuu4u+MjC4MYF8NMMUWWuPWKLLPadiz1OS39C2YOKxPIEGmRBgYgYGHgy03MKzXSMdIz1TbU MwQydIziIXJ6DBqZxcWlqUW6aQVFDnn5JYklmfl5xXr5Bal5BekFemmZaSUZGflFxalAI/TyUkt MXR3djAwNTCwdLcycLBxNTZydnQyd3BwdnV2djCzNTQycLR1NXC3NGbg4BWCu6ZvNyLD+Xk04Y9 j95hfb7mcw/WdtMvnUcjl3ge4Z4buGHjlnRe4yMkwq4OrNlu8+0m62/FJO6cYlvK1rTR5mKaRcY NRtWMOsxAcA X-Developer-Key: i=mattst88@gmail.com; a=openpgp; fpr=3BB639E56F861FA2E86505690FDD682D974CA72A GTK2 is long dead upstream and increasingly hard to keep building on current distros. This series ports perf's GTK-based report browser to GTK4 and fixes it up so it's actually loadable at runtime after the port. Patch 1 does the mechanical port (build system, widget API changes). Patch 2 fixes a runtime issue found after the port that prevented the browser from loading. Signed-off-by: Matt Turner --- Changes in v3: - Fix GMainLoop leak if perf_gtk__error() is called re-entrantly: track active loops in a list instead of a single global pointer - Add explicit / includes instead of relying on transitive inclusion, which musl doesn't guarantee - Drop the gtk4-infobar feature check and HAVE_GTK_INFO_BAR_SUPPORT: GtkInfoBar has been unconditionally available since well before GTK 4, and the check was failing outright due to its deprecation warning - Link to v2: https://lore.kernel.org/r/20260906-perf-gtk2-v2-0-3eccff053cd1@gmail.com Changes in v2: - Fix error dialog's nested GMainLoop hanging if the parent window closes or a signal arrives while the dialog is open (quit from "destroy", not just "response") - Fix build with GTK_INFO_BAR_SUPPORT: gtk_info_bar_get_content_area() is gone in GTK 4, use gtk_info_bar_add_child() instead - Fix use-after-free in the progress dialog on manual close - Fix reuse of an exhausted va_list in the vasprintf() failure path - Link to v1: https://lore.kernel.org/r/20260906-perf-gtk2-v1-0-7564bf8523a9@gmail.com --- Matt Turner (2): tools: port perf ui from GTK 2 to GTK 4 perf tools: make the GTK4 report browser actually loadable at runtime tools/build/Makefile.feature | 4 +- tools/build/feature/Makefile | 10 +-- tools/build/feature/test-gtk2-infobar.c | 12 --- tools/build/feature/{test-gtk2.c => test-gtk4.c} | 4 +- tools/perf/Documentation/perf-report.txt | 2 +- tools/perf/Makefile | 2 +- tools/perf/Makefile.config | 27 +++---- tools/perf/Makefile.perf | 6 +- tools/perf/builtin-annotate.c | 8 +- tools/perf/builtin-report.c | 8 +- tools/perf/scripts/install-build-deps.sh | 4 +- tools/perf/tests/make | 4 +- tools/perf/ui/gtk/annotate.c | 27 +++---- tools/perf/ui/gtk/browser.c | 56 ++++++++++---- tools/perf/ui/gtk/gtk.h | 13 +--- tools/perf/ui/gtk/hists.c | 33 +++----- tools/perf/ui/gtk/progress.c | 40 +++++++--- tools/perf/ui/gtk/setup.c | 5 +- tools/perf/ui/gtk/util.c | 95 ++++++++++++++---------- tools/perf/ui/setup.c | 2 +- tools/perf/util/annotate.c | 11 +++ tools/perf/util/annotate.h | 12 +-- 22 files changed, 208 insertions(+), 177 deletions(-) --- base-commit: 9f0346dcbea363787186c94ef94dd01aaa215afa change-id: 20260906-perf-gtk2-555ca04bb652 Best regards, -- Matt Turner