forked from mirrors/gecko-dev
Bug 1882779 [Linux] Don't try to get NS_NATIVE_EGL_WINDOW for destroyed windows r=emilio
Depends on D205633 Differential Revision: https://phabricator.services.mozilla.com/D205634
This commit is contained in:
parent
d69b233241
commit
d402a041f5
2 changed files with 5 additions and 3 deletions
|
|
@ -3421,9 +3421,11 @@ void* nsWindow::GetNativeData(uint32_t aDataType) {
|
||||||
// 2) If window is hidden on OnUnmap(), we replace EGLSurface/wl_surface
|
// 2) If window is hidden on OnUnmap(), we replace EGLSurface/wl_surface
|
||||||
// by offline surface and release XWindow.
|
// by offline surface and release XWindow.
|
||||||
|
|
||||||
|
// If nsWindow is already destroyed, don't try to get EGL window at all,
|
||||||
|
// we're going to be deleted anyway.
|
||||||
MutexAutoLock lock(mWindowVisibilityMutex);
|
MutexAutoLock lock(mWindowVisibilityMutex);
|
||||||
void* eglWindow = nullptr;
|
void* eglWindow = nullptr;
|
||||||
if (mIsMapped) {
|
if (mIsMapped && !mIsDestroyed) {
|
||||||
#ifdef MOZ_X11
|
#ifdef MOZ_X11
|
||||||
if (GdkIsX11Display()) {
|
if (GdkIsX11Display()) {
|
||||||
eglWindow = (void*)GDK_WINDOW_XID(mGdkWindow);
|
eglWindow = (void*)GDK_WINDOW_XID(mGdkWindow);
|
||||||
|
|
@ -5816,7 +5818,7 @@ void nsWindow::ConfigureCompositor() {
|
||||||
|
|
||||||
// too late
|
// too late
|
||||||
if (mIsDestroyed || !mIsMapped) {
|
if (mIsDestroyed || !mIsMapped) {
|
||||||
LOG(" quit, mIsDestroyed = %d mIsMapped = %d", mIsDestroyed,
|
LOG(" quit, mIsDestroyed = %d mIsMapped = %d", !!mIsDestroyed,
|
||||||
!!mIsMapped);
|
!!mIsMapped);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -641,7 +641,7 @@ class nsWindow final : public nsBaseWidget {
|
||||||
// It's set by OnMap/OnUnmap which is based on Gtk events.
|
// It's set by OnMap/OnUnmap which is based on Gtk events.
|
||||||
mozilla::Atomic<bool, mozilla::Relaxed> mIsMapped;
|
mozilla::Atomic<bool, mozilla::Relaxed> mIsMapped;
|
||||||
// Has this widget been destroyed yet?
|
// Has this widget been destroyed yet?
|
||||||
bool mIsDestroyed : 1;
|
mozilla::Atomic<bool, mozilla::Relaxed> mIsDestroyed;
|
||||||
// mIsShown tracks requested visible status from browser perspective, i.e.
|
// mIsShown tracks requested visible status from browser perspective, i.e.
|
||||||
// if the window should be visible or now.
|
// if the window should be visible or now.
|
||||||
bool mIsShown : 1;
|
bool mIsShown : 1;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue