tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit ecb3a4ee22be3258fc8bec32c81ea37b299bdbce
parent 963def82ec765769d893a03d9c55ba26753c9dad
Author: stransky <stransky@redhat.com>
Date:   Mon, 15 Dec 2025 09:45:48 +0000

Bug 2004199 [Wayland] Use DesktopIntRect for viewporter source rect r=emilio

Differential Revision: https://phabricator.services.mozilla.com/D276200

Diffstat:
Mwidget/gtk/WaylandSurface.cpp | 36++++++++++++++++++++----------------
Mwidget/gtk/WaylandSurface.h | 6+++---
2 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/widget/gtk/WaylandSurface.cpp b/widget/gtk/WaylandSurface.cpp @@ -544,7 +544,7 @@ void WaylandSurface::UnmapLocked(WaylandSurfaceLock& aSurfaceLock) { MozClearPointer(mViewport, wp_viewport_destroy); mViewportDestinationSize = DesktopIntSize(-1, -1); - mViewportSourceRect = gfx::Rect(-1, -1, -1, -1); + mViewportSourceRect = DesktopIntRect(-1, -1, -1, -1); MozClearPointer(mFractionalScaleListener, wp_fractional_scale_v1_destroy); MozClearPointer(mSubsurface, wl_subsurface_destroy); @@ -793,7 +793,7 @@ void WaylandSurface::SetCeiledScaleLocked( } void WaylandSurface::SetViewPortDestLocked( - const WaylandSurfaceLock& aProofOfLock, DesktopIntSize aDestSize) { + const WaylandSurfaceLock& aProofOfLock, const DesktopIntSize& aDestSize) { MOZ_DIAGNOSTIC_ASSERT(&aProofOfLock == mSurfaceLock); if (!mViewport) { return; @@ -801,47 +801,51 @@ void WaylandSurface::SetViewPortDestLocked( if (mViewportDestinationSize == aDestSize) { return; } + mViewportDestinationSize = aDestSize; LOGWAYLAND("WaylandSurface::SetViewPortDestLocked(): Size [%d x %d]", - aDestSize.width, aDestSize.height); - if (aDestSize.width < 1 || aDestSize.height < 1) { + mViewportDestinationSize.width, mViewportDestinationSize.height); + if (mViewportDestinationSize.width < 1 || + mViewportDestinationSize.height < 1) { NS_WARNING( nsPrintfCString( "WaylandSurface::SetViewPortDestLocked(%s): Wrong coordinates!", - ToString(aDestSize).c_str()) + ToString(mViewportDestinationSize).c_str()) .get()); - aDestSize.width = aDestSize.height = -1; + mViewportDestinationSize.width = mViewportDestinationSize.height = -1; } - mViewportDestinationSize = aDestSize; wp_viewport_set_destination(mViewport, mViewportDestinationSize.width, mViewportDestinationSize.height); mSurfaceNeedsCommit = true; } void WaylandSurface::SetViewPortSourceRectLocked( - const WaylandSurfaceLock& aProofOfLock, gfx::Rect aRect) { + const WaylandSurfaceLock& aProofOfLock, const DesktopIntRect& aRect) { MOZ_DIAGNOSTIC_ASSERT(&aProofOfLock == mSurfaceLock); if (!mViewport || mViewportSourceRect == aRect) { return; } + mViewportSourceRect = aRect; LOGWAYLAND( - "WaylandSurface::SetViewPortSourceRectLocked(): [%f, %f] -> [%f x %f]", - aRect.x, aRect.y, aRect.width, aRect.height); + "WaylandSurface::SetViewPortSourceRectLocked(): [%d, %d] -> [%d x %d]", + mViewportSourceRect.x, mViewportSourceRect.y, mViewportSourceRect.width, + mViewportSourceRect.height); // Don't throw protocol error with bad coords - if (aRect.x < 0 || aRect.y < 0 || aRect.width < 1 || aRect.height < 1) { + if (mViewportSourceRect.x < 0 || mViewportSourceRect.y < 0 || + mViewportSourceRect.width < 1 || mViewportSourceRect.height < 1) { NS_WARNING(nsPrintfCString("WaylandSurface::SetViewPortSourceRectLocked(%s)" ": Wrong coordinates!", ToString(aRect).c_str()) .get()); - aRect.x = aRect.y = aRect.width = aRect.height = -1; + mViewportSourceRect = DesktopIntRect(-1, -1, -1, -1); } - mViewportSourceRect = aRect; - wp_viewport_set_source( - mViewport, wl_fixed_from_double(aRect.x), wl_fixed_from_double(aRect.y), - wl_fixed_from_double(aRect.width), wl_fixed_from_double(aRect.height)); + wp_viewport_set_source(mViewport, wl_fixed_from_int(mViewportSourceRect.x), + wl_fixed_from_int(mViewportSourceRect.y), + wl_fixed_from_int(mViewportSourceRect.width), + wl_fixed_from_int(mViewportSourceRect.height)); mSurfaceNeedsCommit = true; } diff --git a/widget/gtk/WaylandSurface.h b/widget/gtk/WaylandSurface.h @@ -170,9 +170,9 @@ class WaylandSurface final { void MoveLocked(const WaylandSurfaceLock& aProofOfLock, DesktopIntPoint aPosition); void SetViewPortSourceRectLocked(const WaylandSurfaceLock& aProofOfLock, - gfx::Rect aRect); + const DesktopIntRect& aRect); void SetViewPortDestLocked(const WaylandSurfaceLock& aProofOfLock, - DesktopIntSize aDestSize); + const DesktopIntSize& aDestSize); void SetTransformFlippedLocked(const WaylandSurfaceLock& aProofOfLock, bool aFlippedX, bool aFlippedY); @@ -378,7 +378,7 @@ class WaylandSurface final { bool mViewportFollowsSizeChanges = true; wp_viewport* mViewport = nullptr; - gfx::Rect mViewportSourceRect{-1, -1, -1, -1}; + DesktopIntRect mViewportSourceRect{-1, -1, -1, -1}; DesktopIntSize mViewportDestinationSize{-1, -1}; // Surface flip state on X/Y asix