зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
d18c0b5d1c
Коммит
9751510294
|
@ -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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче