Description of problem: Go to http://developer.gnome.org/doc/API/2.0/glib/glib-String-Utility-Functions.html Page down scrolls normally. Page Up (or wheel mouse) causes the header on the top of the page to be reprinted across the screen. This works normally with metacity. Version-Release number of selected component (if applicable): compiz-0.0.13-0.32.20060817git.fc6 firefox-1.5.0.7-5.fc6 How reproducible: Every time.
Created attachment 137760 [details] Example of the scrolling corruption
Created attachment 137776 [details] Simple reproducer This program reproduces the problem outside of mozilla. What it does: - create a toplevel window - create two children (siblings) of the toplevel - one is the same size as the toplevel - the other is smaller and on top of the first child - Use XCopyArea() to scroll the big sibling Under metacity a GraphicsExpose event is generated. Under compiz a NoExpose is generated. So this is a bug in the X server.
Just to be clear: sending GraphicsExpose is the correct behavior since the pixels under the second child are not available.
This bug (missing GraphicsExpose) should be fixed in xorg-x11-server-1.1.1-47.fc6. However, if you turn off smooth scrolling you can produce similar symptoms by holding down the up arrow. This is a separate bug, where firefox somehow gets confused by getting keypresses faster than it can redraw. For me, this shows under compiz since repainting is slower there than under metacity, but it can also be reproduced under metacity by these steps: - run firefox, display one of the glib API pages scrolled down some - turn off smooth scrolling in about:config - log in from another computer and attach gdb to firefox - press 'up arrow' 16 times in the firefox window, while firefox is still stopped due to gdb - 'continue' in gdb This produces corruption even when there is no compositing going on. One thing that might cause this (and this is pure speculation) is using CopyArea to scroll a window, and then not translating expose events correctly. Eg. - X server generates an expose event for the rectangle R - client sends CopyArea that copies R somewhere else - client sees expose event for (old position of) R At this point the client needs translate the rectangle in the expose event to take into account the fact that the exposed area was moved _after_ the event was generated.
I filed the second bug as https://bugzilla.mozilla.org/show_bug.cgi?id=355745