Bug 1986185. r=aosmond a=RyanVM
Differential Revision: https://phabricator.services.mozilla.com/D263287
This commit is contained in:
committed by
rvandermeulen@mozilla.com
parent
76673d8e1c
commit
c07482a24d
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user