Bug 1847336 [Linux] Skip frame rendering if we don't have EGL window to paint into r=sotaro

If SetEGLNativeWindowSize() returns false window size put to SetEGLNativeWindowSize() doesn't match screen scale and
will lead to Wayland protocol error. Skip this frame rendering and wait for new window size provided by layout.

Depends on D187890

Differential Revision: https://phabricator.services.mozilla.com/D187891
This commit is contained in:
stransky 2023-09-12 18:32:44 +00:00
Родитель 7aa5ec67ec
Коммит 231d42ad01
2 изменённых файлов: 9 добавлений и 2 удалений

Просмотреть файл

@ -747,7 +747,10 @@ Maybe<IntRect> CompositorOGL::BeginFrame(const nsIntRegion& aInvalidRegion,
mWidgetSize = LayoutDeviceIntSize::FromUnknownSize(rect.Size());
#ifdef MOZ_WIDGET_GTK
if (mWidget && mWidget->AsGTK()) {
mWidget->AsGTK()->SetEGLNativeWindowSize(mWidgetSize);
if (!mWidget->AsGTK()->SetEGLNativeWindowSize(mWidgetSize)) {
// We don't have correct window size to paint into.
return Nothing();
}
}
#endif
} else {

Просмотреть файл

@ -90,7 +90,11 @@ bool RenderCompositorEGL::BeginFrame() {
}
#ifdef MOZ_WIDGET_GTK
if (mWidget->AsGTK()) {
mWidget->AsGTK()->SetEGLNativeWindowSize(GetBufferSize());
if (!mWidget->AsGTK()->SetEGLNativeWindowSize(GetBufferSize())) {
gfxCriticalNote
<< "We don't have GTK/EGLWindow with correct size, can't draw.";
return false;
}
}
#endif
if (!MakeCurrent()) {