Bug 30260 - [BISECTED]: Compiz wallpaper plugin does not render anything.
Summary: [BISECTED]: Compiz wallpaper plugin does not render anything.
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Server/General (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Xorg Project Team
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-09-18 20:18 UTC by Scott Moreau
Modified: 2010-10-22 14:42 UTC (History)
4 users (show)

See Also:
i915 platform:
i915 features:


Attachments
Wallpaper draws nothing. (464.25 KB, image/png)
2010-09-29 15:26 UTC, Scott Moreau
no flags Details
Proposed fix. (2.53 KB, patch)
2010-10-16 01:14 UTC, Scott Moreau
no flags Details | Splinter Review

Description Scott Moreau 2010-09-18 20:18:59 UTC
It has become apparent that 8d7b7a0d71e0b89321b3341b781bc8845386def6 has broken compiz wallpaper. It does not render anything with this change in X server but instead keeps whatever was left behind on the area wherever wallpaper should be drawn.
Comment 1 Scott Moreau 2010-09-29 15:26:57 UTC
Created attachment 39057 [details]
Wallpaper draws nothing.

I am posting this screenshot to better explain the problem. The only unminimized window on this workspace in the shot is ccsm. The rest of the area where it has left over pieces of animated windows is where the wallpaper should be drawn. I have tested with both compiz 0.8 and 0.9 versions with same results.
Comment 2 freedesktop 2010-10-11 09:24:06 UTC
Same problem here since upgrading to Maverick today.
Thread on Launbchpad related to the same issue:
https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/629391
And on the French Ubuntu forums:
http://forum.ubuntu-fr.org/viewtopic.php?id=421649
Comment 3 Scott Moreau 2010-10-12 08:07:55 UTC
(In reply to comment #2)
> Same problem here since upgrading to Maverick today.
> Thread on Launbchpad related to the same issue:
> https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/629391
> And on the French Ubuntu forums:
> http://forum.ubuntu-fr.org/viewtopic.php?id=421649

There was a comment on launchpad that pointed out switching to a tty and back 'fixes' wallpaper.

Anyone else reporting having this problem, please report which graphics driver you are using.

Also, there is possibly unrelated issue with any dock (tested cairo-dock, docky and awn) while using compiz ring switcher, it displays a black bar over 'dock space' sometimes during the ring animation, other times after the animation becomes idle. This (new) bug is not fixed by reverting the bisected commit in this report but switching to tty and back seems to change 'when' the black bar happens. After confirming more on this I will file a new report if necessary.
Comment 4 Scott Moreau 2010-10-12 08:54:22 UTC
Here is the link to the commit in question in case it's difficult to find http://cgit.freedesktop.org/xorg/xserver/commit/?id=8d7b7a0d71e0b89321b3341b781bc8845386def6
Comment 5 Clive 2010-10-13 07:34:57 UTC
I have the problem that 'fixes' when switching to tty and back.

I am using 'version current' NVIDIA accelerated graphics driver as oppose to 'version 173'.
Comment 6 Clive 2010-10-13 07:45:19 UTC
I have the problem that 'fixes' when switching to tty and back.

I am using 'version current' NVIDIA accelerated graphics driver as oppose to 'version 173'.
Comment 7 freedesktop 2010-10-13 11:30:54 UTC
I'm having the wallpapers problem here (but am not using a dock). The tty remedy works for me until restart. By the way, I was the one who posted that workaround on the launchpad bug report, which I found on the French Ubuntu forums.

Graphics driver, according to "glx info | grep renderer," is Mesa DRI Intel(R) 945GME GEM 20100330 DEVELOPMENT x86/MMX/SSE2.
Comment 8 erjc 2010-10-13 20:23:38 UTC
(In reply to comment #4)

I am not a programmer but;

I think you should see

http://cgit.freedesktop.org/xorg/xserver/commit/?id=8d7b7a0d71e0b89321b3341b781bc8845386def6

as an API change.  If other plugins have survived it but not Wallpaper, you need to figure out what Wallpaper is doing differently/wrong.
I can only try to explain, interpret or expand on the commit message and what I imagine Wallpaper does.

Most plugins/effects get rendered on the top layer as unseen Bling is of little use or interest.
Wallpaper is different as more likely than not, it is (partially)covered by some window/widget or whatever object when it does its thing.
As Wallpaper gets drawn behind some foreground object, the hidden section/tile never properly 'renders'.
When the foreground moves away, Wallpaper calls 'damage' in order to paint newly revealed pixels to screen.
Any queue of 'damage events' need to be applied to a previous 'render event' or the logic fails.

If it managed to work previously it was probably an aberration that relied on scattered workarounds/hacks that are not maintainable going forward.
These loopholes and/or logical fallacies will most likely get picked off and killed over time as various X libs continually get refactored and cleaned up.

Maybe you can cut down Wallpaper into some smaller test plugins, or configure it down to something simpler and more easily find the trouble code path(s).
I don't know what tools will help you track the path through compiz-core, mesa/glx and xorg+libs to the final run-in with xserver's "Set DamageSetReportAfterOp to true" sanity check but it should be fun.
Good luck.
Comment 9 erjc 2010-10-14 03:10:24 UTC
(In reply to comment #8)

Just in case someone can spot the problem.

http://gitweb.compiz.org/?p=compiz/plugins/wallpaper;a=tree;f=src;h=c15263d8a661c42ddf8352704d546cb451f6c9f0;hb=HEAD
Comment 10 Scott Moreau 2010-10-16 01:14:22 UTC
Created attachment 39476 [details] [review]
Proposed fix.

This is a proposed fix (for 0.9). Please post your comments about it here.
Comment 11 Jesse Adkins 2010-10-22 14:42:04 UTC
Fixed by commit 1a0d9324b3d9fd93e685066e0e5cea0611878c0d October 17 2010. Closing.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.