Closed Bug 222972 Opened 21 years ago Closed 21 years ago

[panther] drawing of the page is totally cluttered up with whitespaces and some areas are blinking.

Categories

(Camino Graveyard :: OS Integration, defect)

PowerPC
macOS
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED FIXED
Camino0.8

People

(Reporter: andreas, Assigned: mikepinkerton)

References

()

Details

Attachments

(10 files, 3 obsolete files)

User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.5b) Gecko/20030901 Camino/0.7+ Build Identifier: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.5b) Gecko/20030901 Camino/0.7+ go to http://www.swisstalk.ch register, log in. you will see a chat. If you do the same on MacOS 10.3 Build 7B85 (release version from last saturday), the page is totally screwed up. Everything is at the right place but some areas are not visible (white) and some areas are blinking (which never did before) I have a screenshoot to share. This is probably related to hardware acceleration now used in 10.3 which was not in 10.2.8. I was reproducing this problem on my PowerBook G4 17". system profile report available. Reproducible: Always Steps to Reproduce: 1. log in to www.swisstalk.ch to see it working 2. upgrade your computer to 10.3 3. log into www.swisstalk.ch to see it not working. Actual Results: white spaces are displayed in some areas some areas blink which they shouldnt Expected Results: display as before. probably hardware accelleration related.
Attached file Screenshoot
forgot to mention, tested with latest nightly build of camino and previous releases.
I can't reproduce this always. Common factor seems to be frames. Spymac.com and also Railheaddesign.com have the same issue, but are not always reproducable. Mozilla doesn't have this issue.
Attached file reproducable test case
expand this stuff it archive. open the file "Swisstalk - Lifestyle und Entertainment!.html". You will get two errors that two sub url's could not be loaded (doesnt matter really) then the chat window should draw. if it draws ok, click on some other window (in my case ICQ) and click back on the Camino window. It wil redraw but with defects.
Another url that will work for me most of the time: http://nl.secondhandmac.com/ Perhaps it's a combination of frames and animated gifs?
Note that Bug 224213 is also one of the things that is involved in this bug.
This page make's it too http://xchat.centrum.cz/~guest~/modchat?op=roomframe&rid=3016497&menuaction=whoinroom I often can see it on other pages, which don't use frames, but can use iFrames...
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Target Milestone: --- → Camino0.8
This sounds very similar to the problem that Mike has identified. These pages have either a frameset or iframes (or a combination of the two). Mike is this basically a duplicate of 24213 ?
similar, but i'm not yet convinced something else isn't going on here. it looks slightly different, but probably the same root cause (coordinate bugs in NSQDView introduced in panther)
Since 10.3, slashdot has been OCCASIONALLY corrupted. A 'refresh' often solves the problem, and it's not exactly reproducable. I suspect it has something to do with the rotating banner ads, where some ads cause the corruption, and some do not. Unfortuantely, its hard to capture the information since a 'view Source' will actually reload the page from the server rather than showing the source of the currently loaded page, meaning you get a different ad. Not sure if this is similiar to the bug listed here... will re-submit if a fix is made to this bug, but doesn't fix Slashdot.
And, here's the same page with the scrollbar moved slightly to the right, demonstrating that the text has been 'pushed out' rather than overwritten.
can someone give me a further reduced testcase? the swisstalk example is a good one, but it's far from minimal to repro the problem. it would be nice to know what the minimal html is to get this to happen.
i commented out image blitting and it is still reproduceable. it looks like it's trying to repaint frames in the wrong place, but i can't prove that. again, this is where a simplified testcase would come in very handy.
Summary: with MacOS 10.3 (Panther), the drawing of the page is totally cluttered up with whitespaces and some areas are blinking. → [panther] drawing of the page is totally cluttered up with whitespaces and some areas are blinking.
I made a very simple 3 frames with animated gifs testcase that will reproduce the problems. http://www.jasperhauser.nl/camino/bla/bug222972/ without the animinated gifs the paint errors only occur when some kind of selection and frame switching (attention) is done. But with the animated gifs all hell goes loose.
turning off AA does not fix this bug, therefore it is different from the other bug in panther. the testpages jasper provided show whitespace even when image blitting has been disabled. something else is blitting out that space.
Attached file New test case (without JavaScript) (obsolete) —
The attached test case shows that it has nothing to do with JavaScript. The problem seems to be caused by background images of body or table cells. In the file top.html of this test case, if you suppress the background image of the table, the problem goes away. Same thing if you suppress the background image of the body of file left.html. Experiments done using build ID 2003120503 (v0.7+) with a fresh (empty) profile.
Here is another test case that gets totally screwed up...: http://www.kids-hotline.de/ Notes on this example: - after the preload-frameset has loaded (which is okay), the top frame is screwed up (only a part of it has its background color), and surfing into the forums ("Forenberatung") screws up the left frame. White areas appear... - The rendering flaws seem do almost always disappear when resizing the window. - They also disappeared, some times, when loading that page on a new window after it had already been loaded once. Loading it under one of its alias domains, for example http://www.kidshotline.de/ reproduces the problem, so it seems also related to caching somehow. Always reproducible, until now. Tested with several nighties after panther appeared, the latest one used for testing was: 2003-12-05.
*** Bug 230529 has been marked as a duplicate of this bug. ***
*** Bug 232067 has been marked as a duplicate of this bug. ***
i've done some digging to try to figure out what's going on, but i'm still lost. what appears to be happening is that our erasing of rects in the testcase are inconsistent. Sometimes we perform extra redraws that cause us to do more work and erase the chunks of the iframe, other times it draws just fine. It's also inconsistent in how it messes up, with extra erases tossed in for good measure (usually only the first time). The only thing that I can see from a little instrumenting is that our invalidates are sometimes out of order with the drawing. I can see why that might cause us to draw more than once, but not to draw in completely the wrong place. smfr, do you have some cycles to dig into this? you've always been better at these kinds of bugs than me.
simplistic instrumentation of gfx and widget where we erase, draw, and invalidate. shows results for when the page works and when it doesn't. seems that hitting reload over and over is enough to see both good and bad cases.
Since this bug doesn't happen if you turn off the page background images, my guess is that it has something to do with the image tiling code.
Actually, it's not the image tiling code. I think the images tweak this because when they load, they cause an invalidate to happen. I think the two invalidates for different frames are are causing a coalesced update covering the union of the tiled areas. On handling this, we erase some areas to white, but fail to redraw the parts that weren't explicitly invalidated.
Attached file Simpler test case
This is a simpler testcase
Attachment #136928 - Attachment is obsolete: true
(In reply to comment #12) > i'm not yet convinced something else isn't going on here. > it looks slightly different, but probably the same root cause > (coordinate bugs in NSQDView introduced in panther) I'm not convinced that this is specific to Panther. I suspect the answer will be found closer to the bugs in which one tab's content is allowed to bleed through into another. For instance QuickTime (bug 156583) or the unsinkable blinking caret. I have a reproducible test case for 10.2.8, nightly build 2004040108, which shows the same shearing/scrambling behavior I see so often on Panther. (If this is the wrong bug for that symptom, please point me in the right direction.) I first noticed it this morning, trying to read Slashdot in one tab, while in another tab loading a photo gallery from a site that was being Slashdotted. It looked as if I was using Panther, but I wasn't. 1) Open a Camino window with two tabs 2) In the first tab, begin loading an image slowly 3) In the second tab, load Mozillazine or something 4) Scroll around -- use arrow keys, scrollbar, whatever 5) Watch for sections of the page to be jumbled around Screen shot attached. Test case (requiring PHP, to do throttled loading) to follow. My guess is that this problem already existed; Panther merely angers it. ;)
Sorry for the spam -- I'm new here. :} I forgot to mention that I was unable to reproduce the problem in Mozilla (2004040105) or Firefox (20040401). Mike sees something specific in NSQuickDrawView that bothers him. But I wonder if maybe Camino is supposed to be doing something more to wrap the use of those display ports for thread-safety or whatever -- even prior to Panther.
*** Bug 239632 has been marked as a duplicate of this bug. ***
I, too, have seen either this problem in Jaguar, or something similar. It happens when some loading activity is still ongoing. For example, if you’ve clicked a link but the server hasn't yet responded, and you can still scroll the original page. I also just noticed it by scrolling a page while another tab was waiting for a server response.
Comments 28-30 and comment 32 are all bug 203349, and (probably) not at all related to this bug. Jon, please re-post your screenshot and testcase there, so we can find them from there.
Attachment #145324 - Attachment is obsolete: true
Attachment #145325 - Attachment is obsolete: true
*** Bug 240873 has been marked as a duplicate of this bug. ***
Anybody have time to find out when this bug started occuring (i.e. what is the last nightly that didn't have this bug)?
i would assume, since it's my understanding that this happens in 0.7 as well, that it's been around for a loooong time.
yes, this does happen in 0.7 release.
This bug only happens on Panther, right? I think it has to do with Cocoa's new update coalescing.
I'm seeing it when searching for 'menus' on the following Apple documentation page: http://developer.apple.com/documentation/Cocoa/Conceptual/MenuList/index.html The same thing happens when I view local file-based docs as well. The problem only shows up when the find command "crosses frames", and seems to have something to do with the rectangle defined by the location of the previous find, the location of the next fine, and perhaps a mouse-click location - I'm not sure. Also, after playing with the bug for a while (20 times or so), it got to a point where after reloading the page (this time from Apple's site), the scroll-bar on the left frame would disappear (and sometimes other parts of the page as well) until I resized the window. But I can't get that to repeat (after playing with the 'find' bug-invocation 4 times, so I don't know if it's truely repeatable, or whether it was just a fluke.
(In reply to comment #17) > I made a very simple 3 frames with animated gifs testcase that will reproduce > the problems. > > http://www.jasperhauser.nl/camino/bla/bug222972/ > > without the animinated gifs the paint errors only occur when some kind of > selection and frame switching (attention) is done. But with the animated gifs > all hell goes loose. This seems to have in common with the case I found (conmment #39) the fact that the mis-erawing is restricted to the rectangle formed by certain points (the animated gifs in his examples the positions of the "finds" in mine). I would guess that in my case, the redraw of the hilighted text triggers it. But it's odd that it *only* seems to occur when frames are involved, and when a redraw seems to "cross" from one frame into another. Are different frames drawn as different NSQDView's - could that have something to do with it?
I'm seeing something similar: go to http://www.bricklink.com/, click on "Buy", click on any store, click on any item, you'll almost certainly see this problem occur. However, if I edit user.js to add the line: user_pref("image.animation_mode", "none"); the problem disappears, never to return (until I change animation_mode to either "once" or "normal"). Don't know if flash (or other annoyances, such as blinking text) will trigger the problem.
While your observation will indeed cut back the severity of the cluttering of many pages it's no garenty it will not happen. Adding thos pref certainly is something I coulod recommend people to use who go crazy about this bug. As I said when I maid my test case (comment #17) the worst cases are always trigerd by animated gifs. The cases where this isn't the case, where only frames and text create it are rare but do exist.
(In reply to comment #42) > As I said when I maid my test case (comment #17) the worst cases are always > trigerd by animated gifs. The cases where this isn't the case, where only frames > and text create it are rare but do exist. In general, I suppose it is rare but it doesn't seem so to me because I have a site with no animations just frames where I actually need to get work done and it happens every single time I try to use it. This bug has been absolutely killing me since I installed Panther. In this case the problem seems to be triggered or exacerbated by multiple frames loading data independently while others are drawing. At any rate, it might help you to troubleshoot because it's virtually 100% reproducible. The problem is the site in question is passworded so I can't just give you a link. However, if it will help get this bug squashed, I can supply an id and password, or possibly even get a temporary account created for you.
Your observation is correct. In situations where multiple frames are loading and one or some are slower then the others the rendering of the last loaded frame trigers the mis rendering. It's as if the older painted frames are just forgoten and not repainted while they should be.
Attached patch fixSplinter Review
A fix... on the off-chance that anyone is interested ;) This patches our redraws to use the new Panther API for bypassing coalesced updates (on Panther only). Fixes Jasper's test case, and I'm not seeing problems on other pages mentioned here. Needs to be banged on more, since I've done fairly little testing, but I see no reason for this to cause any regressions. Hopefully, this also makes us faster. However, I'm not sure what kind of overhead there is to calling the gecko redraw function more often, so I guess in theory it could be slower. Someone who knows more of the graphics code might be able to say? Also, we can get a bigger speed boost by adding: - (BOOL)wantsDefaultClipping { return NO; } but only if the gecko redraw code is guaranteed not to leave the rect it's given. Again I defer to someone more gecko-knowledgeable. If we can do it though, it would be great to get the extra speed. For more info on what I'm doing, see: http://developer.apple.com/documentation/Cocoa/Conceptual/DrawViews/Tasks/OptimizingDrawing.html and the NSView section of: http://developer.apple.com/documentation/ReleaseNotes/Cocoa/AppKit.html
Comment on attachment 147780 [details] [diff] [review] fix Requesting that people bang on the patch
Attachment #147780 - Flags: review?
(In reply to comment #46) > (From update of attachment 147780 [details] [diff] [review]) > Requesting that people bang on the patch The patch worked nicely for me, fixing the issues shown in comment #17 and comment #41, running on a 17" iMac with 10.3.3. Sharp workaround! If the underlying problem is fixed in 10.3.4's AppKit, I'd suggest checking both lower and upper bound versions. I would expect it impacts performance, so should only be used when needed for correctness. You're right about comment #33, BTW. :} This patch doesn't help bug 203349.
> If the underlying problem is fixed in 10.3.4's AppKit I'm not sure that this is an OS bug: [speculation] I suspect that the badness is coming from this: "To guarantee compatible drawing behavior for existing view classes, AppKit by default enforces clipping to the area that needs drawing. On Jaguar and earlier, clipping was enforced more loosely to the NSRect parameter of -drawRect:" I think we might be somehow making an explicit call to invalidate/validate/erase/something the aRect parameter of drawRect, then the clipping is preventing us from re-drawing in the areas of that rect that should never have been touched in the first place. If so, then the true fix would be finding and fixing/removing whatever call is doing the erasing. On the other hand, it might be a bug that the OS is even allowing us to erase the entire rect within the context of a drawRect call that should be enforcing clipping; I suppose it depends on how we are doing it. [/speculation] Performance-wise, we are probably gaining in terms of not drawing as much, but losing in terms of checking all the elements n times (against n rects) rather than once. Probably what we really want to do to optimize speed is use needsToDrawRect and traverse the whole view/widget tree once (as described in the optimization doc), but not having dug into the actual drawing code I have no idea how feasible that would be (i.e., how much of that is internal to Gecko and not exposed to us)
This patch worked great for me as well.
For the slightly more adventurous: requests that the OS not do any clipping. Should be faster, but might have drawing problems. In preliminary tests it seemed fine, but I'm curious to see if it holds up to more rigorous tests (lots of frames, animations, plugins, etc.). It would also be nice if someone (pinkerton?) could to speed comparisons between the two patches; if the improvement is noticable, it would be worth finding out if we can really really on Gecko to clip for us.
This fix looks good to me, and worked during testing. I didn't see any differences between the last two patches.
Just built off trunk. Fixes the problem for me. Nice work.
landed on trunk and branch. WAHOO!
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Attachment #147780 - Flags: review?
*** Bug 243069 has been marked as a duplicate of this bug. ***
*** Bug 243225 has been marked as a duplicate of this bug. ***
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: