If we sent a viewport to Gecko that causes no change in what's drawn on the
screen, we wouldn't receive a reply and this would cause us to deadlock until
a redraw happens for some other reason.
As viewport changes are throttled at max 1 per 350ms, just remove this check.
After IRC discussion, it was deemed unnecessary.
Earlier patches mistakenly removed the redraw hint. This restores it, and
alters its behaviour to work correctly with regards to the viewport. This
should help mitigate some checker-boarding and performance issues when panning
and zooming.
This patch reinstates pinch-zooming and adds CSS re-scaling so that after
zooming, the page is rendered at the scaled resolution and you get clear text.
--HG--
rename : mobile/android/base/gfx/IntSize.java => mobile/android/base/gfx/FloatSize.java
This patch refactors the code to make some of the value names and ownership
clearer, and to add the idea of a 'viewport' within a 'displayport'. The
displayport is the area of the page which is visible to the underlying buffer
and the viewport is the area of the page which is visible through the
application window.
--HG--
rename : mobile/android/base/ui/ViewportController.java => mobile/android/base/gfx/ViewportMetrics.java
Tapping while the page is in overscroll cancels the snap
back and leaves the page stuck in overscroll. To fix,
ensure we always try a snapback when the user removes their
finger.
Code in GeckoApp assumes that the title and url fields
in HistoryEntry will always be non-null, so fix possible
NPEs by not putting null values in them.
During startup there is a race condition where the
LayerRenderer might request a paint of the root layer before
the root layer has successfully generated a texture.
This might happen if the transaction lock is already held
when the root layer attempts to generate the texture. Fix
by inserting a null guard that aborts the paint if the texture
has not been generated.
There exist conditions where the position of the page can change
between the call to fling() and the running of the FlingRunnable,
since the FlingRunnable gets bounced off two threads. This can
cause the Axis to end up in state WAITING_TO_SNAP with no
overscroll. Instead of crashing, handle this case more gracefully.
Maintain an axis lock when the user is panning within
12 degrees on either side of the vertical or horizontal
axes. When the axis lock is enabled movement along
the other axis is ignored.