monitoring the contents of the screen -- bug#14648

Nathaniel Smith njs at pobox.com
Sat Aug 16 19:19:05 PDT 2008


There hasn't been any activity on this bug after 6 months, so I
thought I'd send a note to the list asking for advice on how to get it
fixed...

The full description of the problem is here:
  https://bugs.freedesktop.org/show_bug.cgi?id=14648
but basically, the issue is that Damage has this "clever" code -- I
guess intended to help make things async-safe, but as far as I can
tell, any code that would be helped is already irreparably broken --
that makes it impossible to write efficient screen-monitoring programs
(think like x11vnc or screencast recorders).  You have to forgo
Damage's ability to compress out redundant damage events (meaning that
if something is drawing quickly to a particular region, you get a
storm of events saying that the same area is damaged over and over),
because if you *do* try to use it, then Damage ends up sending O(n^2)
redundant damage events when processing complex damage regions (where
n is the number of distinct modified rectangles within the window, and
can get very large when you are monitoring an app that is clever and
tries to minimize the total number of pixels it draws on).

Compositing managers process damage entirely within the server (they
just get events saying "this window is damaged", then convert the
damage region into a server-side Region that they pass to Render
etc.), so none of this affects them at all.

The fix is just to dike out a few lines of code from the damage
extension, but it also changes the extension's semantics, probably
needs a version number bump so apps can tell whether the new
functionality is usable, etc.  So I can write the patch to change the
behavior in a few minutes, but I'm not sure how to approach the rest
of it.  Thoughts?

-- Nathaniel



More information about the xorg mailing list