mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 13:21:05 +00:00
Bug 1598582: Create a DataSourceSurface in RecordedSourceSurfaceCreation::PlayEvent. r=jrmuizel
This is instead of using the reference DrawTarget to create it, because that will sometimes fail for large surfaces. Differential Revision: https://phabricator.services.mozilla.com/D55148 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
9fa23d568b
commit
599d8c4b43
@ -882,7 +882,7 @@ class RecordedSourceSurfaceCreation
|
||||
int32_t mStride;
|
||||
IntSize mSize;
|
||||
SurfaceFormat mFormat;
|
||||
bool mDataOwned;
|
||||
mutable bool mDataOwned;
|
||||
|
||||
template <class S>
|
||||
MOZ_IMPLICIT RecordedSourceSurfaceCreation(S& aStream);
|
||||
@ -2798,9 +2798,13 @@ inline bool RecordedSourceSurfaceCreation::PlayEvent(
|
||||
return false;
|
||||
}
|
||||
|
||||
RefPtr<SourceSurface> src =
|
||||
aTranslator->GetReferenceDrawTarget()->CreateSourceSurfaceFromData(
|
||||
mData, mSize, mSize.width * BytesPerPixel(mFormat), mFormat);
|
||||
RefPtr<SourceSurface> src = Factory::CreateWrappingDataSourceSurface(
|
||||
mData, mSize.width * BytesPerPixel(mFormat), mSize, mFormat,
|
||||
[](void* aClosure) { delete[] static_cast<uint8_t*>(aClosure); }, mData);
|
||||
if (src) {
|
||||
mDataOwned = false;
|
||||
}
|
||||
|
||||
aTranslator->AddSourceSurface(mRefPtr, src);
|
||||
return true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user