зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1351783 part 11 - Sync FocusTarget with WebRenderLayerManager. r=kats
MozReview-Commit-ID: LxWt22XY5IE --HG-- extra : rebase_source : c8eb965d1737d4f6791d96d4f975a31365790632
This commit is contained in:
Родитель
a6a2b4f7c4
Коммит
0785b2f849
|
@ -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);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче