Bug 1794284 [Wayland] Handle missing shm interface in WaylandBufferSHM/WindowSurfaceWaylandMultiBuffer r=rmader

Differential Revision: https://phabricator.services.mozilla.com/D158946
This commit is contained in:
stransky 2022-10-11 20:09:59 +00:00
Родитель d18c0b5d1c
Коммит 9751510294
2 изменённых файлов: 11 добавлений и 2 удалений

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

@ -103,6 +103,11 @@ static int WaylandAllocateShmMemory(int aSize) {
/* static */
RefPtr<WaylandShmPool> WaylandShmPool::Create(
const RefPtr<nsWaylandDisplay>& aWaylandDisplay, int aSize) {
if (!aWaylandDisplay->GetShm()) {
NS_WARNING("Missing Wayland shm interface!");
return nullptr;
}
RefPtr<WaylandShmPool> shmPool = new WaylandShmPool(aSize);
shmPool->mShmPoolFd = WaylandAllocateShmMemory(aSize);
@ -117,7 +122,6 @@ RefPtr<WaylandShmPool> WaylandShmPool::Create(
return nullptr;
}
MOZ_DIAGNOSTIC_ASSERT(aWaylandDisplay->GetShm(), "Missing Shm!");
shmPool->mShmPool =
wl_shm_create_pool(aWaylandDisplay->GetShm(), shmPool->mShmPoolFd, aSize);
if (!shmPool->mShmPool) {

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

@ -197,6 +197,9 @@ already_AddRefed<DrawTarget> WindowSurfaceWaylandMB::Lock(
mInProgressBuffer = mFrontBuffer;
} else {
mInProgressBuffer = ObtainBufferFromPool(lock, mMozContainerSize);
if (!mInProgressBuffer) {
return nullptr;
}
if (mFrontBuffer) {
HandlePartialUpdate(lock, aInvalidRegion);
ReturnBufferToPool(lock, mFrontBuffer);
@ -326,7 +329,9 @@ RefPtr<WaylandBufferSHM> WindowSurfaceWaylandMB::ObtainBufferFromPool(
}
RefPtr<WaylandBufferSHM> buffer = WaylandBufferSHM::Create(aSize);
mInUseBuffers.AppendElement(buffer);
if (buffer) {
mInUseBuffers.AppendElement(buffer);
}
return buffer;
}