Good news in dillo's rendering!
Jorge Arellano Cid <[email protected]>
| Newsgroups | gmane.comp.web.dillo.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi there,
Here go some good news.
Originally I was to send this internally to the core devs, but
as we've benefitted from the feedback of active users in the
list, and their experiences with the patches (before/afterwards),
on the sites they usually browse, it looks like a good idea to do
it again.
Since June 6, when this thread [1] was started by Sebastian,
I've been investigating/working in problems related to it. This
led to some extensive rendering tests that catched a laundry list
of problems with our current tip (#4643 today).
This is a list with brief explanations, taken from the testing
data tables I've gathered so far:
Problems:
1: overwrites text with images.
2: crops images (aspect ratio).
3: different layout.
4: overwrites text with text float.
5: overwrites text with text.
6: CPU HOG with: tmp.num.html, tmp.num.small.html
7: Missing page sections (sometimes works for the same page).
8: Small images cut in two sometimes ("ESP", "CRO", ...)
9: Wrong aspect ratio for images (text line height)
10: Page drawn with offset (but browser thinks other section is
on screen).
There're test cases for each one, and most of them were taken
and reduced from real pages.
Having reduced test cases is good, reduced and isolated tests
is better, but the good news is that I have a couple of patches
that solve all of them!
I'm not saying dillo will be error-free hereafter, but that the
root of a whole family of problems has been found and fixed, and
this will make future testing much simpler.
GROWS2 is the "Grand Redesign Of Widget Sizes" v2 by Sebastian.
This is a very powerful and flexible concept whose design allows
floats, layers (and absolutes in the future, and more). It has
proven very fast so far, even without optimizations.
Well the patches are two simple but deep changes in the way
markSizeChange() and queueResize() interact. The patch idea is
close to graph coverage recursions (with pruning), applied to the
widget tree.
I'd like to commit it, upload the test suite I'm using, and
show the testing data tables I've gathered so everyone can check
it with their use cases and report on it.
@Sebastian: May I, or would you prefer to review them before?
(the patches are the "middle ground" you mentioned. Solve the dw
hog problems at dw level, not in the parser, and reuse code
you've already seen. A couple of days should be enough to review)
@Sebastian: Problem #10 is not related to GROWS2, but a three
year old bug discovered during the tests. So let's get it done
first. How to reproduce it: Go to [2], wait a bit for most images
to load, then use "find text" to find the "re-re" string, scroll
a bit downwards to find the image and center it. Go back then
forward; no image! But dillo thinks it *is* there so move the
cursor to the center of the page and you'll see the hand cursor,
wait for the tooltip and drag it a bit downwards to the right.
Dillo will repaint from the image data.
Bisect shows the bug was introduced by #2863. Attached is a
simple concept patch for it. Please review/fix/commit, as I don't
know the updated invariants of resize idle.
[1] http://lists.dillo.org/pipermail/dillo-dev/2016-June/010887.html
[2] http://tinyurl.com/huvf6pn
--
Cheers
Jorge.-