Bug 209336 - Breaks scrolling in firefox
Breaks scrolling in firefox
Status: CLOSED RAWHIDE
Product: Fedora
Classification: Fedora
Component: xorg-x11-server (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: X/OpenGL Maintenance List
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2006-10-04 13:59 EDT by Bill Nottingham
Modified: 2014-03-16 23:02 EDT (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2006-10-06 15:26:27 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
Example of the scrolling corruption (144.25 KB, image/png)
2006-10-04 13:59 EDT, Bill Nottingham
no flags Details
Simple reproducer (2.28 KB, text/x-csrc)
2006-10-04 17:41 EDT, Søren Sandmann Pedersen
no flags Details

  None (edit)
Description Bill Nottingham 2006-10-04 13:59:51 EDT
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.
Comment 1 Bill Nottingham 2006-10-04 13:59:51 EDT
Created attachment 137760 [details]
Example of the scrolling corruption
Comment 2 Søren Sandmann Pedersen 2006-10-04 17:41:03 EDT
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.
Comment 3 Søren Sandmann Pedersen 2006-10-04 17:43:03 EDT
Just to be clear: sending GraphicsExpose is the correct behavior since the
pixels under the second child are not available.
Comment 4 Søren Sandmann Pedersen 2006-10-05 13:31:29 EDT
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.
Comment 5 Søren Sandmann Pedersen 2006-10-06 15:26:27 EDT
I filed the second bug as https://bugzilla.mozilla.org/show_bug.cgi?id=355745

Note You need to log in before you can comment on or make changes to this bug.