Bug 1357754 - Record the isFirstPaint flag in the WebRenderScrollData. r=jrmuizel

MozReview-Commit-ID: KKiRBLRTfEj
This commit is contained in:
Kartikaya Gupta 2017-04-20 10:38:06 -04:00
Родитель 194523e5d1
Коммит 6118b38f49
4 изменённых файлов: 32 добавлений и 3 удалений

Просмотреть файл

@ -238,6 +238,7 @@ WebRenderLayerManager::WebRenderLayerManager(nsIWidget* aWidget)
: mWidget(aWidget)
, mLatestTransactionId(0)
, mNeedsComposite(false)
, mIsFirstPaint(false)
, mTarget(nullptr)
{
MOZ_COUNT_CTOR(WebRenderLayerManager);
@ -403,8 +404,14 @@ WebRenderLayerManager::EndTransactionInternal(DrawPaintedLayerCallback aCallback
}
WebRenderScrollData scrollData;
if (mRoot && mWidget->AsyncPanZoomEnabled()) {
PopulateScrollData(scrollData, mRoot.get());
if (mWidget->AsyncPanZoomEnabled()) {
if (mIsFirstPaint) {
scrollData.SetIsFirstPaint();
mIsFirstPaint = false;
}
if (mRoot) {
PopulateScrollData(scrollData, mRoot.get());
}
}
bool sync = mTarget != nullptr;

Просмотреть файл

@ -143,6 +143,7 @@ public:
mNeedsComposite = aNeedsComposite;
}
virtual bool NeedsComposite() const override { return mNeedsComposite; }
virtual void SetIsFirstPaint() override { mIsFirstPaint = true; }
DrawPaintedLayerCallback GetPaintedLayerCallback() const
{ return mPaintedLayerCallback; }
@ -212,6 +213,7 @@ private:
bool mTransactionIncomplete;
bool mNeedsComposite;
bool mIsFirstPaint;
// When we're doing a transaction in order to draw to a non-default
// target, the layers transaction is only performed in order to send

Просмотреть файл

@ -74,6 +74,7 @@ WebRenderLayerScrollData::GetScrollMetadata(const WebRenderScrollData& aOwner,
}
WebRenderScrollData::WebRenderScrollData()
: mIsFirstPaint(false)
{
}
@ -133,5 +134,17 @@ WebRenderScrollData::GetScrollMetadata(size_t aIndex) const
return mScrollMetadatas[aIndex];
}
void
WebRenderScrollData::SetIsFirstPaint()
{
mIsFirstPaint = true;
}
bool
WebRenderScrollData::IsFirstPaint() const
{
return mIsFirstPaint;
}
} // namespace layers
} // namespace mozilla

Просмотреть файл

@ -116,6 +116,9 @@ public:
const ScrollMetadata& GetScrollMetadata(size_t aIndex) const;
void SetIsFirstPaint();
bool IsFirstPaint() const;
friend struct IPC::ParamTraits<WebRenderScrollData>;
private:
@ -138,6 +141,8 @@ private:
// descendants that layer had, which allows reconstructing the traversal on the
// other side.
nsTArray<WebRenderLayerScrollData> mLayerScrollData;
bool mIsFirstPaint;
};
} // namespace layers
@ -197,13 +202,15 @@ struct ParamTraits<mozilla::layers::WebRenderScrollData>
{
WriteParam(aMsg, aParam.mScrollMetadatas);
WriteParam(aMsg, aParam.mLayerScrollData);
WriteParam(aMsg, aParam.mIsFirstPaint);
}
static bool
Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult)
{
return ReadParam(aMsg, aIter, &aResult->mScrollMetadatas)
&& ReadParam(aMsg, aIter, &aResult->mLayerScrollData);
&& ReadParam(aMsg, aIter, &aResult->mLayerScrollData)
&& ReadParam(aMsg, aIter, &aResult->mIsFirstPaint);
}
};