зеркало из https://github.com/mozilla/gecko-dev.git
Bug 950487 - Remove unnecessary UpdateCompositionBounds function on APZC. r=Cwiiis
This commit is contained in:
Родитель
af4e40ef70
Коммит
0ea9aefa0c
|
@ -484,10 +484,6 @@ TabParent::UpdateDimensions(const nsRect& rect, const nsIntSize& size)
|
|||
mOrientation = orientation;
|
||||
|
||||
unused << SendUpdateDimensions(mRect, mDimensions, mOrientation);
|
||||
if (RenderFrameParent* rfp = GetRenderFrame()) {
|
||||
rfp->NotifyDimensionsChanged(ScreenIntSize::FromUnknownSize(
|
||||
gfx::IntSize(mDimensions.width, mDimensions.height)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1687,12 +1683,6 @@ TabParent::RecvPRenderFrameConstructor(PRenderFrameParent* actor,
|
|||
TextureFactoryIdentifier* factoryIdentifier,
|
||||
uint64_t* layersId)
|
||||
{
|
||||
RenderFrameParent* rfp = GetRenderFrame();
|
||||
if (mDimensions != nsIntSize() && rfp) {
|
||||
rfp->NotifyDimensionsChanged(ScreenIntSize::FromUnknownSize(
|
||||
gfx::IntSize(mDimensions.width, mDimensions.height)));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -553,20 +553,6 @@ APZCTreeManager::ReceiveInputEvent(WidgetInputEvent& aEvent,
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
APZCTreeManager::UpdateRootCompositionBounds(const uint64_t& aLayersId,
|
||||
const ScreenIntRect& aCompositionBounds)
|
||||
{
|
||||
// There can be multiple root APZCs for a given layers id (e.g. tabs in
|
||||
// a single-process setup) and in such a case we probably want to notify
|
||||
// all of them.
|
||||
nsTArray< nsRefPtr<AsyncPanZoomController> > rootApzcs;
|
||||
GetRootAPZCsFor(aLayersId, &rootApzcs);
|
||||
for (size_t i = 0; i < rootApzcs.Length(); i++) {
|
||||
rootApzcs[i]->UpdateCompositionBounds(aCompositionBounds);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
APZCTreeManager::ZoomToRect(const ScrollableLayerGuid& aGuid,
|
||||
const CSSRect& aRect)
|
||||
|
@ -774,17 +760,6 @@ APZCTreeManager::BuildOverscrollHandoffChain(const nsRefPtr<AsyncPanZoomControll
|
|||
CompareByScrollPriority());
|
||||
}
|
||||
|
||||
void
|
||||
APZCTreeManager::GetRootAPZCsFor(const uint64_t& aLayersId,
|
||||
nsTArray< nsRefPtr<AsyncPanZoomController> >* aOutRootApzcs)
|
||||
{
|
||||
MonitorAutoLock lock(mTreeLock);
|
||||
// The root may have siblings, check those too
|
||||
for (AsyncPanZoomController* apzc = mRootApzc; apzc; apzc = apzc->GetPrevSibling()) {
|
||||
FindRootAPZCs(apzc, aLayersId, aOutRootApzcs);
|
||||
}
|
||||
}
|
||||
|
||||
AsyncPanZoomController*
|
||||
APZCTreeManager::FindTargetAPZC(AsyncPanZoomController* aApzc, const ScrollableLayerGuid& aGuid)
|
||||
{
|
||||
|
@ -861,25 +836,6 @@ APZCTreeManager::GetAPZCAtPoint(AsyncPanZoomController* aApzc, const gfxPoint& a
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
APZCTreeManager::FindRootAPZCs(AsyncPanZoomController* aApzc,
|
||||
const uint64_t& aLayersId,
|
||||
nsTArray< nsRefPtr<AsyncPanZoomController> >* aOutRootApzcs)
|
||||
{
|
||||
mTreeLock.AssertCurrentThreadOwns();
|
||||
|
||||
if (aApzc->IsRootForLayersId(aLayersId)) {
|
||||
aOutRootApzcs->AppendElement(aApzc);
|
||||
// If this APZC is a root for this layers id then we know nothing else
|
||||
// in the subtree rooted here will match so we can early-exit
|
||||
return;
|
||||
}
|
||||
|
||||
for (AsyncPanZoomController* child = aApzc->GetLastChild(); child; child = child->GetPrevSibling()) {
|
||||
FindRootAPZCs(child, aLayersId, aOutRootApzcs);
|
||||
}
|
||||
}
|
||||
|
||||
/* This function sets the aTransformToApzcOut and aTransformToGeckoOut out-parameters
|
||||
to some useful transformations that input events may need applied. This is best
|
||||
illustrated with an example. Consider a chain of layers, L, M, N, O, P, Q, R. Layer L
|
||||
|
|
|
@ -134,17 +134,6 @@ public:
|
|||
void TransformCoordinateToGecko(const ScreenIntPoint& aPoint,
|
||||
LayoutDeviceIntPoint* aOutTransformedPoint);
|
||||
|
||||
/**
|
||||
* Updates the composition bounds on the root APZC for the given layers id.
|
||||
* See FrameMetrics::mCompositionBounds for the definition of what the
|
||||
* composition bounds are. This function is only meant for updating the
|
||||
* composition bounds on the root APZC because that is the one that is
|
||||
* zoomable, and the zoom may need to be adjusted immediately upon a change
|
||||
* in the composition bounds.
|
||||
*/
|
||||
void UpdateRootCompositionBounds(const uint64_t& aLayersId,
|
||||
const ScreenIntRect& aCompositionBounds);
|
||||
|
||||
/**
|
||||
* Kicks an animation to zoom to a rect. This may be either a zoom out or zoom
|
||||
* in. The actual animation is done on the compositor thread after being set
|
||||
|
@ -263,17 +252,12 @@ public:
|
|||
*/
|
||||
already_AddRefed<AsyncPanZoomController> GetTargetAPZC(const ScrollableLayerGuid& aGuid);
|
||||
already_AddRefed<AsyncPanZoomController> GetTargetAPZC(const ScreenPoint& aPoint);
|
||||
void GetRootAPZCsFor(const uint64_t& aLayersId,
|
||||
nsTArray< nsRefPtr<AsyncPanZoomController> >* aOutRootApzcs);
|
||||
void GetInputTransforms(AsyncPanZoomController *aApzc, gfx3DMatrix& aTransformToApzcOut,
|
||||
gfx3DMatrix& aTransformToGeckoOut);
|
||||
private:
|
||||
/* Helpers */
|
||||
AsyncPanZoomController* FindTargetAPZC(AsyncPanZoomController* aApzc, const ScrollableLayerGuid& aGuid);
|
||||
AsyncPanZoomController* GetAPZCAtPoint(AsyncPanZoomController* aApzc, const gfxPoint& aHitTestPoint);
|
||||
void FindRootAPZCs(AsyncPanZoomController* aApzc,
|
||||
const uint64_t& aLayersId,
|
||||
nsTArray< nsRefPtr<AsyncPanZoomController> >* aOutRootApzcs);
|
||||
already_AddRefed<AsyncPanZoomController> CommonAncestor(AsyncPanZoomController* aApzc1, AsyncPanZoomController* aApzc2);
|
||||
already_AddRefed<AsyncPanZoomController> RootAPZCForLayersId(AsyncPanZoomController* aApzc);
|
||||
already_AddRefed<AsyncPanZoomController> GetTouchInputBlockAPZC(const WidgetTouchEvent& aEvent, ScreenPoint aPoint);
|
||||
|
|
|
@ -1483,28 +1483,6 @@ const FrameMetrics& AsyncPanZoomController::GetFrameMetrics() {
|
|||
return mFrameMetrics;
|
||||
}
|
||||
|
||||
void AsyncPanZoomController::UpdateCompositionBounds(const ScreenIntRect& aCompositionBounds) {
|
||||
ReentrantMonitorAutoEnter lock(mMonitor);
|
||||
|
||||
ScreenIntRect oldCompositionBounds = mFrameMetrics.mCompositionBounds;
|
||||
mFrameMetrics.mCompositionBounds = aCompositionBounds;
|
||||
|
||||
// If the window had 0 dimensions before, or does now, we don't want to
|
||||
// repaint or update the zoom since we'll run into rendering issues and/or
|
||||
// divide-by-zero. This manifests itself as the screen flashing. If the page
|
||||
// has gone out of view, the buffer will be cleared elsewhere anyways.
|
||||
if (aCompositionBounds.width && aCompositionBounds.height &&
|
||||
oldCompositionBounds.width && oldCompositionBounds.height) {
|
||||
float adjustmentFactor = float(aCompositionBounds.width) / float(oldCompositionBounds.width);
|
||||
mFrameMetrics.mZoom.scale =
|
||||
clamped(mFrameMetrics.mZoom.scale * adjustmentFactor,
|
||||
mMinZoom.scale, mMaxZoom.scale);
|
||||
|
||||
// Repaint on a rotation so that our new resolution gets properly updated.
|
||||
RequestContentRepaint();
|
||||
}
|
||||
}
|
||||
|
||||
void AsyncPanZoomController::ZoomToRect(CSSRect aRect) {
|
||||
SetState(ANIMATING_ZOOM);
|
||||
|
||||
|
|
|
@ -104,15 +104,6 @@ public:
|
|||
*/
|
||||
nsEventStatus ReceiveInputEvent(const InputData& aEvent);
|
||||
|
||||
/**
|
||||
* Updates the composition bounds, i.e. the dimensions of the final size of
|
||||
* the frame this is tied to during composition onto, in device pixels. In
|
||||
* general, this will just be:
|
||||
* { x = 0, y = 0, width = surface.width, height = surface.height }, however
|
||||
* there is no hard requirement for this.
|
||||
*/
|
||||
void UpdateCompositionBounds(const ScreenIntRect& aCompositionBounds);
|
||||
|
||||
/**
|
||||
* Kicks an animation to zoom to a rect. This may be either a zoom out or zoom
|
||||
* in. The actual animation is done on the compositor thread after being set
|
||||
|
|
|
@ -910,15 +910,6 @@ RenderFrameParent::NotifyInputEvent(const WidgetInputEvent& aEvent,
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
RenderFrameParent::NotifyDimensionsChanged(ScreenIntSize size)
|
||||
{
|
||||
if (GetApzcTreeManager()) {
|
||||
GetApzcTreeManager()->UpdateRootCompositionBounds(
|
||||
mLayersId, ScreenIntRect(ScreenIntPoint(), size));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RenderFrameParent::ActorDestroy(ActorDestroyReason why)
|
||||
{
|
||||
|
|
|
@ -110,8 +110,6 @@ public:
|
|||
ScrollableLayerGuid* aOutTargetGuid,
|
||||
WidgetInputEvent* aOutEvent);
|
||||
|
||||
void NotifyDimensionsChanged(ScreenIntSize size);
|
||||
|
||||
void ZoomToRect(uint32_t aPresShellId, ViewID aViewId, const CSSRect& aRect);
|
||||
|
||||
void ContentReceivedTouch(const ScrollableLayerGuid& aGuid,
|
||||
|
|
Загрузка…
Ссылка в новой задаче