mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-06 00:31:27 +00:00
Bug 1372225 - Add recording for IntoLumaSource. r=mchang
This lets us avoid using the default implementation and allows us to do the actual work on during playback.
This commit is contained in:
parent
fd0bdd7710
commit
07374b97fe
@ -480,6 +480,18 @@ DrawTargetRecording::Snapshot()
|
||||
return retSurf.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<SourceSurface>
|
||||
DrawTargetRecording::IntoLuminanceSource(LuminanceType aLuminanceType, float aOpacity)
|
||||
{
|
||||
RefPtr<SourceSurface> surf = mFinalDT->IntoLuminanceSource(aLuminanceType, aOpacity);
|
||||
|
||||
RefPtr<SourceSurface> retSurf = new SourceSurfaceRecording(surf, mRecorder);
|
||||
|
||||
mRecorder->RecordEvent(RecordedIntoLuminanceSource(retSurf, this, aLuminanceType, aOpacity));
|
||||
|
||||
return retSurf.forget();
|
||||
}
|
||||
|
||||
void
|
||||
DrawTargetRecording::DetachAllSnapshots()
|
||||
{
|
||||
|
@ -26,6 +26,7 @@ public:
|
||||
virtual bool IsRecording() const override { return true; }
|
||||
|
||||
virtual already_AddRefed<SourceSurface> Snapshot() override;
|
||||
virtual already_AddRefed<SourceSurface> IntoLuminanceSource(LuminanceType aLuminanceType, float aOpacity) override;
|
||||
|
||||
virtual void DetachAllSnapshots() override;
|
||||
|
||||
|
@ -1497,6 +1497,38 @@ RecordedGradientStopsDestruction::OutputSimpleEventInfo(stringstream &aStringStr
|
||||
aStringStream << "[" << mRefPtr << "] GradientStops Destroyed";
|
||||
}
|
||||
|
||||
bool
|
||||
RecordedIntoLuminanceSource::PlayEvent(Translator *aTranslator) const
|
||||
{
|
||||
RefPtr<SourceSurface> src = aTranslator->LookupDrawTarget(mDT)->IntoLuminanceSource(mLuminanceType, mOpacity);
|
||||
aTranslator->AddSourceSurface(mRefPtr, src);
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
RecordedIntoLuminanceSource::RecordToStream(ostream &aStream) const
|
||||
{
|
||||
WriteElement(aStream, mRefPtr);
|
||||
WriteElement(aStream, mDT);
|
||||
WriteElement(aStream, mLuminanceType);
|
||||
WriteElement(aStream, mOpacity);
|
||||
}
|
||||
|
||||
RecordedIntoLuminanceSource::RecordedIntoLuminanceSource(istream &aStream)
|
||||
: RecordedEvent(SNAPSHOT)
|
||||
{
|
||||
ReadElement(aStream, mRefPtr);
|
||||
ReadElement(aStream, mDT);
|
||||
ReadElement(aStream, mLuminanceType);
|
||||
ReadElement(aStream, mOpacity);
|
||||
}
|
||||
|
||||
void
|
||||
RecordedIntoLuminanceSource::OutputSimpleEventInfo(stringstream &aStringStream) const
|
||||
{
|
||||
aStringStream << "[" << mRefPtr << "] Into Luminance Source (DT: " << mDT << ")";
|
||||
}
|
||||
|
||||
bool
|
||||
RecordedSnapshot::PlayEvent(Translator *aTranslator) const
|
||||
{
|
||||
@ -1524,7 +1556,6 @@ RecordedSnapshot::OutputSimpleEventInfo(stringstream &aStringStream) const
|
||||
{
|
||||
aStringStream << "[" << mRefPtr << "] Snapshot Created (DT: " << mDT << ")";
|
||||
}
|
||||
|
||||
RecordedFontData::~RecordedFontData()
|
||||
{
|
||||
delete[] mData;
|
||||
|
@ -1015,6 +1015,33 @@ private:
|
||||
MOZ_IMPLICIT RecordedSnapshot(std::istream &aStream);
|
||||
};
|
||||
|
||||
class RecordedIntoLuminanceSource : public RecordedEvent {
|
||||
public:
|
||||
RecordedIntoLuminanceSource(ReferencePtr aRefPtr, DrawTarget *aDT,
|
||||
LuminanceType aLuminanceType, float aOpacity)
|
||||
: RecordedEvent(SNAPSHOT), mRefPtr(aRefPtr), mDT(aDT),
|
||||
mLuminanceType(aLuminanceType), mOpacity(aOpacity)
|
||||
{
|
||||
}
|
||||
|
||||
virtual bool PlayEvent(Translator *aTranslator) const;
|
||||
|
||||
virtual void RecordToStream(std::ostream &aStream) const;
|
||||
virtual void OutputSimpleEventInfo(std::stringstream &aStringStream) const;
|
||||
|
||||
virtual std::string GetName() const { return "IntoLuminanceSource"; }
|
||||
virtual ReferencePtr GetObjectRef() const { return mRefPtr; }
|
||||
private:
|
||||
friend class RecordedEvent;
|
||||
|
||||
ReferencePtr mRefPtr;
|
||||
ReferencePtr mDT;
|
||||
LuminanceType mLuminanceType;
|
||||
float mOpacity;
|
||||
|
||||
MOZ_IMPLICIT RecordedIntoLuminanceSource(std::istream &aStream);
|
||||
};
|
||||
|
||||
class RecordedFontData : public RecordedEvent {
|
||||
public:
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user