Bug 1351783 part 11 - Sync FocusTarget with WebRenderLayerManager. r=kats

MozReview-Commit-ID: LxWt22XY5IE

--HG--
extra : rebase_source : c8eb965d1737d4f6791d96d4f975a31365790632
This commit is contained in:
Ryan Hunt 2017-06-13 02:43:59 -04:00
Родитель a6a2b4f7c4
Коммит 0785b2f849
5 изменённых файлов: 29 добавлений и 0 удалений

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

@ -392,6 +392,8 @@ WebRenderBridgeParent::UpdateAPZ()
return;
}
if (RefPtr<APZCTreeManager> apzc = cbp->GetAPZCTreeManager()) {
apzc->UpdateFocusState(rootLayersId, GetLayersId(),
rootWrbp->GetScrollData().GetFocusTarget());
apzc->UpdateHitTestingTree(rootLayersId, rootWrbp->GetScrollData(),
mScrollData.IsFirstPaint(), GetLayersId(),
mScrollData.GetPaintSequenceNumber());

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

@ -219,6 +219,9 @@ WebRenderLayerManager::EndTransactionInternal(DrawPaintedLayerCallback aCallback
WebRenderScrollData scrollData;
if (AsyncPanZoomEnabled()) {
scrollData.SetFocusTarget(mFocusTarget);
mFocusTarget = FocusTarget();
if (mIsFirstPaint) {
scrollData.SetIsFirstPaint();
mIsFirstPaint = false;
@ -251,6 +254,12 @@ WebRenderLayerManager::EndTransactionInternal(DrawPaintedLayerCallback aCallback
return true;
}
void
WebRenderLayerManager::SetFocusTarget(const FocusTarget& aFocusTarget)
{
mFocusTarget = aFocusTarget;
}
bool
WebRenderLayerManager::AsyncPanZoomEnabled() const
{

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

@ -9,6 +9,7 @@
#include "Layers.h"
#include "mozilla/MozPromise.h"
#include "mozilla/layers/APZTestData.h"
#include "mozilla/layers/FocusTarget.h"
#include "mozilla/layers/TransactionIdAllocator.h"
#include "mozilla/webrender/WebRenderTypes.h"
@ -98,6 +99,7 @@ public:
}
virtual bool NeedsComposite() const override { return mNeedsComposite; }
virtual void SetIsFirstPaint() override { mIsFirstPaint = true; }
virtual void SetFocusTarget(const FocusTarget& aFocusTarget) override;
bool AsyncPanZoomEnabled() const override;
@ -180,6 +182,7 @@ private:
bool mNeedsComposite;
bool mIsFirstPaint;
FocusTarget mFocusTarget;
// 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

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

@ -144,6 +144,12 @@ WebRenderScrollData::GetScrollMetadata(size_t aIndex) const
return mScrollMetadatas[aIndex];
}
void
WebRenderScrollData::SetFocusTarget(const FocusTarget& aFocusTarget)
{
mFocusTarget = aFocusTarget;
}
void
WebRenderScrollData::SetIsFirstPaint()
{

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

@ -15,6 +15,7 @@
#include "mozilla/GfxMessageUtils.h"
#include "mozilla/layers/LayerAttributes.h"
#include "mozilla/layers/LayersMessageUtils.h"
#include "mozilla/layers/FocusTarget.h"
#include "mozilla/Maybe.h"
#include "nsTArrayForwardDeclare.h"
@ -123,6 +124,9 @@ public:
const ScrollMetadata& GetScrollMetadata(size_t aIndex) const;
const FocusTarget& GetFocusTarget() const { return mFocusTarget; }
void SetFocusTarget(const FocusTarget& aFocusTarget);
void SetIsFirstPaint();
bool IsFirstPaint() const;
void SetPaintSequenceNumber(uint32_t aPaintSequenceNumber);
@ -151,6 +155,9 @@ private:
// other side.
nsTArray<WebRenderLayerScrollData> mLayerScrollData;
// The focus information for this layer tree
FocusTarget mFocusTarget;
bool mIsFirstPaint;
uint32_t mPaintSequenceNumber;
};
@ -225,6 +232,7 @@ struct ParamTraits<mozilla::layers::WebRenderScrollData>
{
WriteParam(aMsg, aParam.mScrollMetadatas);
WriteParam(aMsg, aParam.mLayerScrollData);
WriteParam(aMsg, aParam.mFocusTarget);
WriteParam(aMsg, aParam.mIsFirstPaint);
WriteParam(aMsg, aParam.mPaintSequenceNumber);
}
@ -234,6 +242,7 @@ struct ParamTraits<mozilla::layers::WebRenderScrollData>
{
return ReadParam(aMsg, aIter, &aResult->mScrollMetadatas)
&& ReadParam(aMsg, aIter, &aResult->mLayerScrollData)
&& ReadParam(aMsg, aIter, &aResult->mFocusTarget)
&& ReadParam(aMsg, aIter, &aResult->mIsFirstPaint)
&& ReadParam(aMsg, aIter, &aResult->mPaintSequenceNumber);
}