Bug 1986185. r=aosmond a=RyanVM

Differential Revision: https://phabricator.services.mozilla.com/D263287
This commit is contained in:
Lee Salzman
2025-09-02 14:15:04 +00:00
committed by rvandermeulen@mozilla.com
parent 76673d8e1c
commit c07482a24d

View File

@@ -187,6 +187,10 @@ mozilla::ipc::IPCResult CanvasTranslator::RecvInitTranslator(
}
// Use the first buffer as our current buffer.
if (aBufferHandles.IsEmpty()) {
Deactivate();
return IPC_FAIL(this, "No canvas buffer shared memory supplied.");
}
mDefaultBufferSize = aBufferHandles[0].Size();
auto handleIter = aBufferHandles.begin();
mCurrentShmem.shmem = std::move(*handleIter).Map();
@@ -424,11 +428,19 @@ already_AddRefed<gfx::DataSourceSurface> CanvasTranslator::WaitForSurface(
}
void CanvasTranslator::RecycleBuffer() {
if (!mCurrentShmem.IsValid()) {
return;
}
mCanvasShmems.emplace(std::move(mCurrentShmem));
NextBuffer();
}
void CanvasTranslator::NextBuffer() {
if (mCanvasShmems.empty()) {
return;
}
// Check and signal the writer when we finish with a buffer, because it
// might have hit the buffer count limit and be waiting to use our old one.
CheckAndSignalWriter();