зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1357754 - Record the isFirstPaint flag in the WebRenderScrollData. r=jrmuizel
MozReview-Commit-ID: KKiRBLRTfEj
This commit is contained in:
Родитель
194523e5d1
Коммит
6118b38f49
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче