icecat: add release icecat-140.10.1-1gnu1 for ecne
This commit is contained in:
parent
a5f93cb214
commit
ff85d7c623
1256 changed files with 63469 additions and 24141 deletions
|
|
@ -810,7 +810,9 @@ std::shared_ptr<EglDisplay> EglDisplay::Create(
|
|||
|
||||
const auto ret =
|
||||
std::make_shared<EglDisplay>(PrivateUseOnly{}, lib, display, isWarp);
|
||||
lib.mActiveDisplays.insert({display, ret});
|
||||
// Insert if there is no existing display entry, or assign if there is an
|
||||
// expired weak_ptr that failed to lock above and was awaiting removal.
|
||||
lib.mActiveDisplays.insert_or_assign(display, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -858,6 +860,13 @@ EglDisplay::EglDisplay(const PrivateUseOnly&, GLLibraryEGL& lib,
|
|||
|
||||
EglDisplay::~EglDisplay() {
|
||||
StaticMutexAutoLock lock(GLLibraryEGL::sMutex);
|
||||
// EglDisplay is being destructed, so its weak_ptr should be expired. If there
|
||||
// is an entry that is still live, it means a new EGLDisplay was subsequently
|
||||
// created that needs to use this display, so avoid terminating it.
|
||||
const auto itr = mLib->mActiveDisplays.find(mDisplay);
|
||||
if (itr != mLib->mActiveDisplays.end() && !itr->second.expired()) {
|
||||
return;
|
||||
}
|
||||
fTerminate();
|
||||
mLib->mActiveDisplays.erase(mDisplay);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue