зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1619040 - Add a new WebRenderData specific for APZ. r=kats
AnimationInfo has a bunch of member variables that are not necessary for APZ. Differential Revision: https://phabricator.services.mozilla.com/D64855 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
bf1bb4a845
Коммит
f0bdb9d256
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include "WebRenderUserData.h"
|
||||
|
||||
#include "mozilla/layers/AnimationHelper.h"
|
||||
#include "mozilla/layers/CompositorBridgeChild.h"
|
||||
#include "mozilla/layers/ImageClient.h"
|
||||
#include "mozilla/layers/WebRenderBridgeChild.h"
|
||||
|
@ -336,6 +337,11 @@ WebRenderImageData* WebRenderFallbackData::PaintIntoImage() {
|
|||
return mImageData.get();
|
||||
}
|
||||
|
||||
WebRenderAPZAnimationData::WebRenderAPZAnimationData(
|
||||
RenderRootStateManager* aManager, nsDisplayItem* aItem)
|
||||
: WebRenderUserData(aManager, aItem),
|
||||
mAnimationId(AnimationHelper::GetNextCompositorAnimationsId()) {}
|
||||
|
||||
WebRenderAnimationData::WebRenderAnimationData(RenderRootStateManager* aManager,
|
||||
nsDisplayItem* aItem)
|
||||
: WebRenderUserData(aManager, aItem) {}
|
||||
|
|
|
@ -78,6 +78,7 @@ class WebRenderUserData {
|
|||
enum class UserDataType {
|
||||
eImage,
|
||||
eFallback,
|
||||
eAPZAnimation,
|
||||
eAnimation,
|
||||
eCanvas,
|
||||
eRemote,
|
||||
|
@ -220,6 +221,20 @@ class WebRenderFallbackData : public WebRenderUserData {
|
|||
bool mInvalid;
|
||||
};
|
||||
|
||||
class WebRenderAPZAnimationData : public WebRenderUserData {
|
||||
public:
|
||||
WebRenderAPZAnimationData(RenderRootStateManager* aManager,
|
||||
nsDisplayItem* aItem);
|
||||
virtual ~WebRenderAPZAnimationData() = default;
|
||||
|
||||
UserDataType GetType() override { return UserDataType::eAPZAnimation; }
|
||||
static UserDataType Type() { return UserDataType::eAPZAnimation; }
|
||||
uint64_t GetAnimationId() { return mAnimationId; }
|
||||
|
||||
private:
|
||||
uint64_t mAnimationId;
|
||||
};
|
||||
|
||||
class WebRenderAnimationData : public WebRenderUserData {
|
||||
public:
|
||||
WebRenderAnimationData(RenderRootStateManager* aManager,
|
||||
|
|
|
@ -6942,13 +6942,11 @@ bool nsDisplayOwnLayer::CreateWebRenderCommands(
|
|||
// APZ is enabled and this is a scroll thumb or zooming layer, so we need
|
||||
// to create and set an animation id. That way APZ can adjust the position/
|
||||
// zoom of this content asynchronously as needed.
|
||||
RefPtr<WebRenderAnimationData> animationData =
|
||||
RefPtr<WebRenderAPZAnimationData> animationData =
|
||||
aManager->CommandBuilder()
|
||||
.CreateOrRecycleWebRenderUserData<WebRenderAnimationData>(
|
||||
.CreateOrRecycleWebRenderUserData<WebRenderAPZAnimationData>(
|
||||
this, aBuilder.GetRenderRoot());
|
||||
AnimationInfo& animationInfo = animationData->GetAnimationInfo();
|
||||
animationInfo.EnsureAnimationsId();
|
||||
mWrAnimationId = animationInfo.GetCompositorAnimationsId();
|
||||
mWrAnimationId = animationData->GetAnimationId();
|
||||
|
||||
prop.emplace();
|
||||
prop->id = mWrAnimationId;
|
||||
|
|
Загрузка…
Ссылка в новой задаче