author | Nicholas Nethercote <nnethercote@mozilla.com> |
Mon, 16 Nov 2015 20:34:00 -0800 | |
changeset 309540 | 81cb37b5d061b7e51ab465482a219315867b2535 |
parent 309539 | dccb1af2b609e003e6dcc9726ea73070eadb30a3 |
child 309541 | e091d14c936c948a490457a6420261abe8c16cc6 |
push id | 5513 |
push user | raliiev@mozilla.com |
push date | Mon, 25 Jan 2016 13:55:34 +0000 |
treeherder | mozilla-beta@5ee97dd05b5c [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | botond |
bugs | 1229237 |
milestone | 45.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/gfx/2d/Rect.h +++ b/gfx/2d/Rect.h @@ -238,16 +238,24 @@ IntRectTyped<units> RoundedOut(const Rec copy.RoundOut(); return IntRectTyped<units>(int32_t(copy.x), int32_t(copy.y), int32_t(copy.width), int32_t(copy.height)); } template<class units> +IntRectTyped<units> TruncatedToInt(const RectTyped<units>& aRect) { + return IntRectTyped<units>(int32_t(aRect.x), + int32_t(aRect.y), + int32_t(aRect.width), + int32_t(aRect.height)); +} + +template<class units> RectTyped<units> IntRectToRect(const IntRectTyped<units>& aRect) { return RectTyped<units>(aRect.x, aRect.y, aRect.width, aRect.height); } } // namespace gfx } // namespace mozilla
--- a/gfx/layers/composite/LayerManagerComposite.cpp +++ b/gfx/layers/composite/LayerManagerComposite.cpp @@ -854,20 +854,18 @@ LayerManagerComposite::Render(const nsIn } if (actualBounds.IsEmpty()) { mCompositor->GetWidget()->PostRender(this); return; } // Allow widget to render a custom background. - mCompositor->GetWidget()->DrawWindowUnderlay(this, IntRect(actualBounds.x, - actualBounds.y, - actualBounds.width, - actualBounds.height)); + mCompositor->GetWidget()->DrawWindowUnderlay( + this, LayoutDeviceIntRect::FromUnknownRect(TruncatedToInt(actualBounds))); RefPtr<CompositingRenderTarget> previousTarget; if (haveLayerEffects) { previousTarget = PushGroupForLayerEffects(); } else { mTwoPassTmpTarget = nullptr; } @@ -886,18 +884,17 @@ LayerManagerComposite::Render(const nsIn if (mTwoPassTmpTarget) { MOZ_ASSERT(haveLayerEffects); PopGroupForLayerEffects(previousTarget, clipRect.ToUnknownRect(), grayscaleVal, invertVal, contrastVal); } // Allow widget to render a custom foreground. mCompositor->GetWidget()->DrawWindowOverlay( - this, LayoutDeviceIntRect(actualBounds.x, actualBounds.y, - actualBounds.width, actualBounds.height)); + this, LayoutDeviceIntRect::FromUnknownRect(TruncatedToInt(actualBounds))); // Debugging RenderDebugOverlay(actualBounds); { PROFILER_LABEL("LayerManagerComposite", "EndFrame", js::ProfileEntry::Category::GRAPHICS);
--- a/widget/android/nsWindow.cpp +++ b/widget/android/nsWindow.cpp @@ -2601,17 +2601,18 @@ nsWindow::GetIMEUpdatePreference() return nsIMEUpdatePreference(); } return nsIMEUpdatePreference( nsIMEUpdatePreference::NOTIFY_SELECTION_CHANGE | nsIMEUpdatePreference::NOTIFY_TEXT_CHANGE); } void -nsWindow::DrawWindowUnderlay(LayerManagerComposite* aManager, nsIntRect aRect) +nsWindow::DrawWindowUnderlay(LayerManagerComposite* aManager, + LayoutDeviceIntRect aRect) { GeckoLayerClient::LocalRef client = AndroidBridge::Bridge()->GetLayerClient(); if (!client) { ALOG_BRIDGE("Exceptional Exit: %s", __PRETTY_FUNCTION__); return; } AutoLocalJNIFrame jniFrame(client.Env());
--- a/widget/android/nsWindow.h +++ b/widget/android/nsWindow.h @@ -146,17 +146,17 @@ public: LayerManager* GetLayerManager (PLayerTransactionChild* aShadowManager = nullptr, LayersBackend aBackendHint = mozilla::layers::LayersBackend::LAYERS_NONE, LayerManagerPersistence aPersistence = LAYER_MANAGER_CURRENT, bool* aAllowRetaining = nullptr) override; NS_IMETHOD ReparentNativeWidget(nsIWidget* aNewParent) override; virtual bool NeedsPaint() override; - virtual void DrawWindowUnderlay(LayerManagerComposite* aManager, nsIntRect aRect) override; + virtual void DrawWindowUnderlay(LayerManagerComposite* aManager, LayoutDeviceIntRect aRect) override; virtual void DrawWindowOverlay(LayerManagerComposite* aManager, LayoutDeviceIntRect aRect) override; virtual mozilla::layers::CompositorParent* NewCompositorParent(int aSurfaceWidth, int aSurfaceHeight) override; static void SetCompositor(mozilla::layers::LayerManager* aLayerManager, mozilla::layers::CompositorParent* aCompositorParent, mozilla::layers::CompositorChild* aCompositorChild); static bool IsCompositionPaused();
--- a/widget/nsBaseWidget.h +++ b/widget/nsBaseWidget.h @@ -161,17 +161,17 @@ public: void CreateCompositorVsyncDispatcher(); virtual CompositorParent* NewCompositorParent(int aSurfaceWidth, int aSurfaceHeight); virtual void CreateCompositor(); virtual void CreateCompositor(int aWidth, int aHeight); virtual void PrepareWindowEffects() override {} virtual void CleanupWindowEffects() override {} virtual bool PreRender(LayerManagerComposite* aManager) override { return true; } virtual void PostRender(LayerManagerComposite* aManager) override {} - virtual void DrawWindowUnderlay(LayerManagerComposite* aManager, nsIntRect aRect) override {} + virtual void DrawWindowUnderlay(LayerManagerComposite* aManager, LayoutDeviceIntRect aRect) override {} virtual void DrawWindowOverlay(LayerManagerComposite* aManager, LayoutDeviceIntRect aRect) override {} virtual already_AddRefed<mozilla::gfx::DrawTarget> StartRemoteDrawing() override; virtual void EndRemoteDrawing() override { }; virtual void CleanupRemoteDrawing() override { }; virtual void UpdateThemeGeometries(const nsTArray<ThemeGeometry>& aThemeGeometries) override {} NS_IMETHOD SetModal(bool aModal) override; virtual uint32_t GetMaxTouchPoints() const override; NS_IMETHOD SetWindowClass(const nsAString& xulWinType) override;
--- a/widget/nsIWidget.h +++ b/widget/nsIWidget.h @@ -1220,17 +1220,18 @@ class nsIWidget : public nsISupports { */ virtual void PostRender(LayerManagerComposite* aManager) = 0; /** * Called before the LayerManager draws the layer tree. * * Always called from the compositing thread. */ - virtual void DrawWindowUnderlay(LayerManagerComposite* aManager, nsIntRect aRect) = 0; + virtual void DrawWindowUnderlay(LayerManagerComposite* aManager, + LayoutDeviceIntRect aRect) = 0; /** * Called after the LayerManager draws the layer tree * * Always called from the compositing thread. */ virtual void DrawWindowOverlay(LayerManagerComposite* aManager, LayoutDeviceIntRect aRect) = 0;