Closed Bug 9994 Opened 27 years ago Closed 26 years ago

[PP]No double-buffering on repaints.

Categories

(Core Graveyard :: GFX, defect, P3)

x86
Linux
defect

Tracking

(Not tracked)

VERIFIED DUPLICATE of bug 12860

People

(Reporter: moshev, Assigned: ramiro)

Details

With M8, any repaint, be it scrolling of a long page, resizing of rendered page, or any other re-rendering, does not do double-buffering, as a result a lot of flickering is seen, and black/grey backgrounds are painted before the actual rendered page is drawn.
Assignee: don → troy
Component: Browser-General → Layout
QA Contact: leger → petersen
Updating eng/qa contact
Assignee: troy → beard
Component: Layout → Compositor
Why is this assigned to me, double-buffering is the view code and has nothing to do with layout? Come on Gramps, but a little effort into the bug processing...
Status: NEW → ASSIGNED
I don't see this, unless you mean that lots of indpendent redraws are done. Each view is redrawn independently by design. This does prevent flicker, but doesn't necessarily give the best results.
Assignee: beard → ramiro
Status: ASSIGNED → NEW
Is this a linux-only problem?
This should not be composer related, I submitted it as a browser bug (the rendering problem is while browsing) I don't know about other platforms but on linux it flickers like hell on evry significantly busy page (try slashdot or anything else of that order, try resizing the browser window while you scroll etc.)
petersen, please give us status on all platforms.Thanks!
Summary: No double-buffering on repaints. → [PP]No double-buffering on repaints.
Based on Jan's comments, I checked this problem on Win 98 and Mac 8.6 with apprunner (1999072710).The flicker issue when scrolling does happen on Mac but it's not as severe as Linux version. Under Win 98, the flicker issue is not occuring.
Based on Jan's comments, I checked this problem on Win 98 and Mac 8.6 with apprunner (1999072710).The flicker issue when scrolling does happen on Mac but it's not as severe as the Linux version. Under Win 98, the flicker issue is not occuring.
I looked at m9, and the bug persists. Also on linux, there are flickers in scrollbars, when menus are closed, parts of html are painted on the toolbar and other nasty painting problems. P.S. shouldn't this be scheduled to some milestone?
Blocks: 14469
A simple way to avoid the grey flash is to use: gdk_window_set_back_pixmap (widget->window, NULL, 0); after the widget has been realized. This will instruct X via GDK that the application itself will be handling the complete draw to the newly-exposed area Real Soon Now so it is unhelpful or even undesirable for X to explicitly clear it in the meantime. This isn't actually the desired result of having the right content ready-calculated to spring up upon scrolling, but it leave the contents of the invalidated area intact until the new content is ready. This is at least considerably more desirable that the area-clearing behaviour perceptually as the previous contents are likely to very much resemble the data which will reside there shortly. I spent a few hours last weekend ploughing through the GTK code and adding the above function call to the appropriate Realize handlers, but I have experienced no joy (at least, not in this!). Yet.
I tried what you are suggesting a long time ago and it didnt seem to help. The flashing is due entirely to the guffaw effect. You can see the same thing ona GnomeCanvas if you have lots of objects, or if you zoomin alot. Or with the gimp, and a huge zoom. In any case, we are thinking of doing entirely away with the usage of GtkLayout since we dont have any native widgets in html content anymore. The only thing we need widget for is scrolling, and we will probably do that by a combination of XCopyArea() and nsWindow::Invalidate() in nsWindow::Scroll().
Status: NEW → RESOLVED
Closed: 26 years ago
Resolution: --- → DUPLICATE
Marking dup of 12860. *** This bug has been marked as a duplicate of 12860 ***
This bug was NOT originally files as a flicker problem, although this is how it manifests itself, my original intention was that i really think that a double buffering should be implemented everywhere in an application of a scale such as mozilla. The reason for this is that it is a fundamental way of solving any kind of flicker, not only on scrolling but on any other action. Lot's of linux applications really lack this feature but i think mozilla should implement it. (Double buffering is when you paint everything to an off-screen buffer, and only when it's completely ready you paint this buffer on the display)
Status: RESOLVED → VERIFIED
Marking as verified duplicate of 12860.
No longer blocks: 14469
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.