diff --git a/gfx/gl/GLContextProviderEGL.cpp b/gfx/gl/GLContextProviderEGL.cpp index 4563fb532f88..e82e5ed04b7f 100644 --- a/gfx/gl/GLContextProviderEGL.cpp +++ b/gfx/gl/GLContextProviderEGL.cpp @@ -255,7 +255,7 @@ already_AddRefed GLContextEGLFactory::CreateImpl( int visualID = 0; #ifdef MOZ_X11 GdkDisplay* gdkDisplay = gdk_display_get_default(); - if (GdkIsX11Display(gdkDisplay)) { + if (GdkIsX11Display(gdkDisplay) && aWindow) { auto* display = GDK_DISPLAY_XDISPLAY(gdkDisplay); if (display) { XWindowAttributes windowAttrs; diff --git a/gfx/webrender_bindings/RenderCompositorEGL.cpp b/gfx/webrender_bindings/RenderCompositorEGL.cpp index c9c745b8a2b1..e31287b3c4b6 100644 --- a/gfx/webrender_bindings/RenderCompositorEGL.cpp +++ b/gfx/webrender_bindings/RenderCompositorEGL.cpp @@ -36,7 +36,7 @@ namespace mozilla::wr { UniquePtr RenderCompositorEGL::Create( RefPtr aWidget, nsACString& aError) { #ifdef MOZ_WAYLAND - if (!mozilla::widget::GdkIsWaylandDisplay()) { + if (!gfx::gfxVars::UseEGL()) { return nullptr; } #endif diff --git a/gfx/webrender_bindings/RenderThread.cpp b/gfx/webrender_bindings/RenderThread.cpp index 5c52a45ea2fc..4d39978bebb5 100644 --- a/gfx/webrender_bindings/RenderThread.cpp +++ b/gfx/webrender_bindings/RenderThread.cpp @@ -1125,7 +1125,7 @@ static already_AddRefed CreateGLContext(nsACString& aError) { #elif defined(MOZ_WIDGET_ANDROID) gl = CreateGLContextEGL(); #elif defined(MOZ_WAYLAND) - if (mozilla::widget::GdkIsWaylandDisplay()) { + if (gfx::gfxVars::UseEGL()) { gl = CreateGLContextEGL(); } #elif XP_MACOSX diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp index 9ae2d2deadba..14eee040cac3 100644 --- a/widget/gtk/nsWindow.cpp +++ b/widget/gtk/nsWindow.cpp @@ -4861,6 +4861,14 @@ nsresult nsWindow::Create(nsIWidget* aParent, nsNativeWidget aNativeParent, // the drawing window mGdkWindow = gtk_widget_get_window(eventWidget); +#ifdef MOZ_WAYLAND + if (mIsX11Display && gfx::gfxVars::UseEGL() && isAccelerated) { + mCompositorInitiallyPaused = true; + mNeedsCompositorResume = true; + MaybeResumeCompositor(); + } +#endif + if (mWindowType == eWindowType_popup) { // gdk does not automatically set the cursor for "temporary" // windows, which are what gtk uses for popups.