Bug 209336 - Breaks scrolling in firefox
Summary: Breaks scrolling in firefox
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: xorg-x11-server
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: X/OpenGL Maintenance List
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2006-10-04 17:59 UTC by Bill Nottingham
Modified: 2014-03-17 03:02 UTC (History)
1 user (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2006-10-06 19:26:27 UTC
Type: ---
Embargoed:


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

Description Bill Nottingham 2006-10-04 17:59:51 UTC
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 17:59:51 UTC
Created attachment 137760 [details]
Example of the scrolling corruption

Comment 2 Søren Sandmann Pedersen 2006-10-04 21:41:03 UTC
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 21:43:03 UTC
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 17:31:29 UTC
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 19:26:27 UTC
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.