On 08.02.20 15:30, Philippe Mathieu-Daudé wrote:
Fix using virtual console under gtk 3.22.30 (mate 1.20.1):

   qemu-system-x86_64: Gdk: gdk_window_get_origin: assertion 'GDK_IS_WINDOW 
(window)' failed

Fixes: c4c00922cc and 28b58f19d2 (display/gtk: get proper refreshrate)
Reported-by: Jan Kiszka <jan.kis...@web.de>
Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org>
---
Cc: Nikola Pavlica <pavlica.nik...@gmail.com>
Report:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg678130.html
---
  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);

Nope, no change. It's triggered right from ui/gtk.c:1973, the line above.


      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;
      }


Jan

Reply via email to