Fennec/NativeUI/PanZoom: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(claim some items to work on)
(mark item fixed)
Line 16: Line 16:
* The saved screenshot doesn't always appear in the right part of the page. Page size is not saved. This is because we only save a screenshot, while we actually need to save some more info (page size, etc.) in order to pan and zoom during load.
* The saved screenshot doesn't always appear in the right part of the page. Page size is not saved. This is because we only save a screenshot, while we actually need to save some more info (page size, etc.) in order to pan and zoom during load.
* Chews through battery because it's trying to consistently render at 60 fps regardless of whether work needs to be done.
* Chews through battery because it's trying to consistently render at 60 fps regardless of whether work needs to be done.
* Physics are wrong when overscrolling, particularly diagonally (too long of a delay before bouncing back). (Kats looking at this)
* <strike>Physics are wrong when overscrolling, particularly diagonally (too long of a delay before bouncing back).</strike> (fixed with fastersnap patch)
* Touch event handling is incorrect in some cases
* Touch event handling is incorrect in some cases
** <strike>Under some conditions when two fingers are on the page, removing one will cause the page to snap-pan</strike> (fixed in panzoomfixups patch)
** <strike>Under some conditions when two fingers are on the page, removing one will cause the page to snap-pan</strike> (fixed in panzoomfixups patch)
** Touch down on a link, pan the page, and then touch up will trigger that link (need to figure out which events should actually be delivered to non-java code)
** Touch down on a link, pan the page, and then touch up will trigger that link (need to figure out which events should actually be delivered to non-java code)

Revision as of 18:46, 7 November 2011

Patch queue is here: http://hg.mozilla.org/users/pwalton_mozilla.com/birch-pan-zoom/

Known issues:

  • Some pages like TechCrunch have bad checkerboarding. Cause unknown, possibly due to the Like buttons.
  • When zoomed in, scrolling down too far results in checkerboards that don't go away. This is the result of an incorrectly-defined scissor rect in the renderer.
  • Sometimes the page size doesn't get picked up by Java and it ends up all wrong, especially when using back and forward. This is due to the hacky method used to query the page size. (Kats looking at this)
  • Page size is set by monkey patching content CSS. This is not only ugly but may fail if the page overrides it. The correct solution to this is non-e10s SetDisplayPort, coupled with SetCSSViewport (the latter of which works now, but is useless without a display port because it clips at the viewport).
  • Sometimes the scale gesture detection gets confused and the page ends up very tiny or very big. Cause unknown, possibly due to incorrect interaction between the scale gesture detector and the panning code.
  • When zoomed in far, the physics doesn't feel smooth. This is due to integer truncation happening too early.
  • Pages like Fennec Start and Google are smaller than the screen.
  • We don't start zoomed out to the width of the device.
  • Occasional OOM crashes on complex pages like TechCrunch. We may be allocating too much in the rendering loop -- GC statistics seem to suggest this.
  • Occasional display corruption when dropping frames. This is probably due to not unioning dirty rectangles.
  • Zooming is broken; the page never rerenders. This is due to the lack of non-e10s SetResolution. It may be possible to work around this with CSS transforms, but they will create redraw lag.
  • Flicker when Gecko loads.
  • The saved screenshot doesn't always appear in the right part of the page. Page size is not saved. This is because we only save a screenshot, while we actually need to save some more info (page size, etc.) in order to pan and zoom during load.
  • Chews through battery because it's trying to consistently render at 60 fps regardless of whether work needs to be done.
  • Physics are wrong when overscrolling, particularly diagonally (too long of a delay before bouncing back). (fixed with fastersnap patch)
  • Touch event handling is incorrect in some cases
    • Under some conditions when two fingers are on the page, removing one will cause the page to snap-pan (fixed in panzoomfixups patch)
    • Touch down on a link, pan the page, and then touch up will trigger that link (need to figure out which events should actually be delivered to non-java code)