File tree Expand file tree Collapse file tree
src/Avalonia.Controls.WebView.Core/Gtk Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -339,6 +339,10 @@ internal static partial IntPtr webkit_website_data_manager_new(
339339 [ DllImport ( LibGdk ) ]
340340 internal static extern IntPtr gdk_x11_window_get_xid ( IntPtr window ) ;
341341
342+ [ DllImport ( LibGdk ) ]
343+ internal static extern void gdk_x11_window_set_frame_sync_enabled ( IntPtr window ,
344+ [ MarshalAs ( UnmanagedType . Bool ) ] bool frameSyncEnabled ) ;
345+
342346 [ DllImport ( LibGdk ) ]
343347 internal static extern IntPtr gdk_display_get_default ( ) ;
344348 [ DllImport ( LibGdk ) ]
Original file line number Diff line number Diff line change @@ -23,7 +23,14 @@ private GtkX11WebViewAdapter(GtkWebViewEnvironmentRequestedEventArgs environment
2323 gtk_container_add ( _windowHandle , WebViewHandle ) ;
2424 gtk_widget_show_all ( WebViewHandle ) ;
2525 gtk_widget_realize ( _windowHandle ) ;
26- _x11Window = gdk_x11_window_get_xid ( gtk_widget_get_window ( _windowHandle ) ) ;
26+
27+ var gdkWindow = gtk_widget_get_window ( _windowHandle ) ;
28+ _x11Window = gdk_x11_window_get_xid ( gdkWindow ) ;
29+
30+ // Reparenting this window into the Avalonia window takes it away from the window manager,
31+ // so the _NET_WM_FRAME_DRAWN replies GDK throttles drawing on never arrive.
32+ // Without this GTK paints one frame and then waits forever.
33+ gdk_x11_window_set_frame_sync_enabled ( gdkWindow , false ) ;
2734 }
2835
2936 public static Task < WebViewAdapter . NativeWebViewAdapterBuilder > CreateBuilder (
You can’t perform that action at this time.
0 commit comments