From patchwork Sat Feb 8 16:10:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 11371679 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 614CC186E for ; Sat, 8 Feb 2020 16:11:43 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 384E321741 for ; Sat, 8 Feb 2020 16:11:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EsbsnAih" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 384E321741 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:42946 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j0Shq-00077G-DP for patchwork-qemu-devel@patchwork.kernel.org; Sat, 08 Feb 2020 11:11:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44051) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j0Sh4-0005Hc-Nu for qemu-devel@nongnu.org; Sat, 08 Feb 2020 11:10:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j0Sh3-000874-Q6 for qemu-devel@nongnu.org; Sat, 08 Feb 2020 11:10:54 -0500 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:32965) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j0Sh3-00084B-Jw for qemu-devel@nongnu.org; Sat, 08 Feb 2020 11:10:53 -0500 Received: by mail-wr1-x443.google.com with SMTP id u6so2440985wrt.0 for ; Sat, 08 Feb 2020 08:10:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IF1no8gDZSvKkX0JGnOQNf/3E5e3U8HxwXO56c6MsQY=; b=EsbsnAihxu5sY8c5VZLtDWF0bkerpgyZQAIS92rLkQRqe1Nne+uYSLdyyQdXwczGab ZtRKNwOS8xYsPdqG3494K6S7D7X3Rg711RIP1sSEJazWEfs349yEVheN/oZZ6DCHSfJO 82aT+QHAsUexuxmeP35BdsjEE9NBC0yhcZSDwJ9+jANa1nKCI8c1Dyx3mQa78HF4a7+6 GZJqOTiWKOGrRXdNLNIAk6711Yhui3c21PTxbQQscVyGNucrD38FzyHSzQCayWoc5T7/ ERozqs9c3FCWllpWCkFHDB0A+2J3+dCGwzRNlV5sHk8JqMBPKJq+pNzhWypo+bG3EqDb hK+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=IF1no8gDZSvKkX0JGnOQNf/3E5e3U8HxwXO56c6MsQY=; b=klGD++ccpovhakDvSstSrma1n177uu8jL4Csrs5MVjSWjdQQNP9llktCSAle0NJd4C O7i36426hABmPTFvSgwaiZqarcPUsPLjuE/Vx6Y6oObM5Rqckj+/GZpijEtgoEfy04Jq ItPRO1pJVmzEUJ1m5kSSWB8JfJqI8f+Ky4iuMmI2NO1yDLydu8arUeMtd3XIKzm9jNI9 wKigGQPxTZADcF71wK6Mb5Tgn5CehlGqKysEz/tCrmqbaQkLO5+p2QbBLguSR/N3t6SL 8smixxIIAGPd5JmDmPL3RKy0u4p2aVn3EfUtFEAZeEFRzeSFInG2UTOTpTCb60Fnl4qF 96Cg== X-Gm-Message-State: APjAAAWhsVFjYvgozJx8DaJWHM+IYScmQt/vDEd9gLtuwxwK3O1R0zY5 dB4KpFdxTEEubQQ9EVAEnLXh5yMY X-Google-Smtp-Source: APXvYqx6gd9yvgkMnvGU2qe0rKK+yKp5Ue8GzVivjmge6XmRPX24XHyl4Z6CS5JpgdWZ8UC5m4ozBg== X-Received: by 2002:adf:a285:: with SMTP id s5mr6320362wra.118.1581178252369; Sat, 08 Feb 2020 08:10:52 -0800 (PST) Received: from localhost.localdomain (78.red-88-21-202.staticip.rima-tde.net. [88.21.202.78]) by smtp.gmail.com with ESMTPSA id l8sm7931669wmj.2.2020.02.08.08.10.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2020 08:10:51 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Jan Kiszka Subject: [PATCH v2 1/2] ui/gtk: Update gd_refresh_rate_millihz() to handle VirtualConsole Date: Sat, 8 Feb 2020 17:10:47 +0100 Message-Id: <20200208161048.11311-2-f4bug@amsat.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200208161048.11311-1-f4bug@amsat.org> References: <20200208161048.11311-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::443 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Gerd Hoffmann , Nikola Pavlica Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé --- ui/gtk.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ui/gtk.c b/ui/gtk.c index d18892d1de..c59297ff4d 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1965,11 +1965,11 @@ static GtkWidget *gd_create_menu_machine(GtkDisplayState *s) * If available, return the refresh rate of the display in milli-Hertz, * else return 0. */ -static int gd_refresh_rate_millihz(GtkDisplayState *s) +static int gd_refresh_rate_millihz(GtkWidget *window) { #ifdef GDK_VERSION_3_22 - GdkDisplay *dpy = gtk_widget_get_display(s->window); - GdkWindow *win = gtk_widget_get_window(s->window); + GdkDisplay *dpy = gtk_widget_get_display(window); + GdkWindow *win = gtk_widget_get_window(window); GdkMonitor *monitor = gdk_display_get_monitor_at_window(dpy, win); return gdk_monitor_get_refresh_rate(monitor); @@ -2045,7 +2045,8 @@ static GSList *gd_vc_gfx_init(GtkDisplayState *s, VirtualConsole *vc, vc->gfx.kbd = qkbd_state_init(con); vc->gfx.dcl.con = con; - refresh_rate_millihz = gd_refresh_rate_millihz(s); + refresh_rate_millihz = gd_refresh_rate_millihz(vc->window ? + vc->window : s->window); if (refresh_rate_millihz) { vc->gfx.dcl.update_interval = MILLISEC_PER_SEC / refresh_rate_millihz; } From patchwork Sat Feb 8 16:10:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 11371681 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6E4C8921 for ; Sat, 8 Feb 2020 16:11:43 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 45AD221775 for ; Sat, 8 Feb 2020 16:11:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AdI0qJAF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 45AD221775 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Received: from localhost ([::1]:42948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j0Shq-00077J-D0 for patchwork-qemu-devel@patchwork.kernel.org; Sat, 08 Feb 2020 11:11:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44062) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j0Sh6-0005L6-Kd for qemu-devel@nongnu.org; Sat, 08 Feb 2020 11:10:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j0Sh5-0008Bj-Jn for qemu-devel@nongnu.org; Sat, 08 Feb 2020 11:10:56 -0500 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:35611) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j0Sh5-00089N-De for qemu-devel@nongnu.org; Sat, 08 Feb 2020 11:10:55 -0500 Received: by mail-wr1-x441.google.com with SMTP id w12so2429039wrt.2 for ; Sat, 08 Feb 2020 08:10:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FoWmL8sKylM8WJIpC88DanoYTeGhcfzC10Wj5Ji+jA4=; b=AdI0qJAFfPTKevtGMBS0JiisLq0VHg9mFKPXFrQLw5oRs4gdaputMeEeWcwaJix4B5 1HTRGWTR3A6C36aUbDBoifrisztDXg46iz22P/8sj6jgYa9Jd+TrYBpdWMwu1mJ7Z+4t PbvkPW17yA1oVK4a3pfGSG6KwQ8mDuwo6A7/oY8uEwmnO4aA0Y6XqfNsv8ZECZIILr7B cRdvnE6xc9FNrYkfNCARB6psT/VGPoKq6JbdxT0Uv786pL8LGLz7SL+YtDslXS6h52qT k3Red+JidBLcr1X13GwJsUG8TiPICFdHU28TStfuxczbC42HNlpqqtb1GkcCk//0DgQl ICCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=FoWmL8sKylM8WJIpC88DanoYTeGhcfzC10Wj5Ji+jA4=; b=eU0OhH3tgAhOtONg4WxLNCuUJTaCDvFwgziDOBdYBPslRHpQKGa4rxWabrYsLsWS70 VwRWFBvAWVvY/V6PtyC7yZFSlor2WVNIT/RTkI5gJBvS5UjFzNL5uRZnjnMsTu7yt5Bj Bz9K0vjT+YtFAwKQRDoUekD9knddClch4H5B6JrxkIeT8TaPm4PLcFIolb0ZMa+Mz7MT 49/ZanZKhhp/kh97JOxaojEBtjXUeYs7z7ztWHhMd2hh6ltz/DoM0rjJ+OY+esuyD39o jIEqXbQuZUMQ4zOvsouLnVmv5ASuuYzkG+dSY7IgheqHLEH9ZWKWo7hGfrx//n8PtAmh bb0A== X-Gm-Message-State: APjAAAVaULJeI0h4X0G3/mCVyyHV9H/3y8sQ7R37uqLByz5Pemwh4t2o DVWDoTWK7chMzZR8Th6Fd1SYOSwg X-Google-Smtp-Source: APXvYqxGpKDkOs2Py73RTJhZ9YMuL34RAdd+SQ/74J7wjMIvf/2gMxsXS62LYdISlZDGoq/k6fzhtA== X-Received: by 2002:a05:6000:1183:: with SMTP id g3mr6064565wrx.374.1581178254241; Sat, 08 Feb 2020 08:10:54 -0800 (PST) Received: from localhost.localdomain (78.red-88-21-202.staticip.rima-tde.net. [88.21.202.78]) by smtp.gmail.com with ESMTPSA id l8sm7931669wmj.2.2020.02.08.08.10.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2020 08:10:53 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Jan Kiszka Subject: [PATCH v2 2/2] ui/gtk: Fix gd_refresh_rate_millihz() when widget window is not realized Date: Sat, 8 Feb 2020 17:10:48 +0100 Message-Id: <20200208161048.11311-3-f4bug@amsat.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200208161048.11311-1-f4bug@amsat.org> References: <20200208161048.11311-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::441 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Gerd Hoffmann , Nikola Pavlica Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" gtk_widget_get_window() returns NULL if the widget's window is not realized, and QEMU crashes. Example under gtk 3.22.30 (mate 1.20.1): qemu-system-x86_64: Gdk: gdk_window_get_origin: assertion 'GDK_IS_WINDOW (window)' failed (gdb) bt #0 0x00007ffff496cf70 in gdk_window_get_origin () from /usr/lib64/libgdk-3.so.0 #1 0x00007ffff49582a0 in gdk_display_get_monitor_at_window () from /usr/lib64/libgdk-3.so.0 #2 0x0000555555bb73e2 in gd_refresh_rate_millihz (window=0x5555579d6280) at ui/gtk.c:1973 #3 gd_vc_gfx_init (view_menu=0x5555579f0590, group=0x0, idx=0, con=, vc=0x5555579d4a90, s=0x5555579d49f0) at ui/gtk.c:2048 #4 gd_create_menu_view (s=0x5555579d49f0) at ui/gtk.c:2149 #5 gd_create_menus (s=0x5555579d49f0) at ui/gtk.c:2188 #6 gtk_display_init (ds=, opts=0x55555661ed80 ) at ui/gtk.c:2256 #7 0x000055555583d5a0 in main (argc=, argv=, envp=) at vl.c:4358 Fixes: c4c00922cc and 28b58f19d2 (display/gtk: get proper refreshrate) Reported-by: Jan Kiszka Signed-off-by: Philippe Mathieu-Daudé --- ui/gtk.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ui/gtk.c b/ui/gtk.c index c59297ff4d..850c49bee0 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1968,14 +1968,16 @@ static GtkWidget *gd_create_menu_machine(GtkDisplayState *s) static int gd_refresh_rate_millihz(GtkWidget *window) { #ifdef GDK_VERSION_3_22 - GdkDisplay *dpy = gtk_widget_get_display(window); GdkWindow *win = gtk_widget_get_window(window); - GdkMonitor *monitor = gdk_display_get_monitor_at_window(dpy, win); - return gdk_monitor_get_refresh_rate(monitor); -#else - return 0; + if (win) { + GdkDisplay *dpy = gtk_widget_get_display(window); + GdkMonitor *monitor = gdk_display_get_monitor_at_window(dpy, win); + + return gdk_monitor_get_refresh_rate(monitor); + } #endif + return 0; } static GSList *gd_vc_gfx_init(GtkDisplayState *s, VirtualConsole *vc,