After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 624805 - Widget rendering issues with Cairo 1.9
Widget rendering issues with Cairo 1.9
Status: RESOLVED NOTGNOME
Product: murrine
Classification: Other
Component: general
unspecified
Other Linux
: Normal normal
: ---
Assigned To: murrine-maint
Depends on:
Blocks:
 
 
Reported: 2010-07-20 09:19 UTC by Maia Everett
Modified: 2010-10-14 01:34 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch (10.40 KB, patch)
2010-07-20 09:19 UTC, Maia Everett
none Details | Review

Description Maia Everett 2010-07-20 09:19:37 UTC
Created attachment 166198 [details] [review]
Patch

With Cairo 1.9.x, which is used in Ubuntu 10.10 Maverick, some widgets are rendered incorrectly with some graphics drivers (most notably the NVIDIA proprietary driver), usually resulting in some gradients or transparent backgrounds being replaced with whiteness. Example: http://launchpadlibrarian.net/51989339/aboutdlg.png

Among affected widgets are:
* Buttons
* Progress bars
* Scrollbars
* Window backgrounds in RGBA mode
* Menus in RGBA mode

The attached patch fixes most of these issues. One that still eludes me, for now, is the custom message list header in Evolution. I'm not entirely sure what widgets it uses to render it. Attempts to fix the issue in that specific case just made matters worse elsewhere.
Comment 1 Andrea Cimitan 2010-07-20 09:30:00 UTC
why should I patch murrine if nvidia proprietary graphics drivers are broken? fix the drivers?
Comment 2 Maia Everett 2010-07-20 09:33:07 UTC
It's not the graphics drivers, it's Cairo. This problem does not occur with Cairo 1.8.

From the looks of it, this is one of many regressions caused by clients previously relying on implicit assumptions in Cairo that no longer apply.

Here is this bug in Ubuntu: https://bugs.edge.launchpad.net/ubuntu/+source/gtk2-engines-murrine/+bug/605979
Comment 3 Andrea Cimitan 2010-07-20 09:38:52 UTC
but I'm not having the bug in my Intel driver... so, if it's reproducible only on NVIDIA drivers, why not fix them instead adding a workaround?
cairo_clip is SLOW, patching the engine with your diff could cause a performance slowdown
Comment 4 Benjamin Otte (Company) 2010-07-23 00:20:28 UTC
1) Cairo 1.10 has improved a lot and uses a lot more features of the GPUs (and being 5x as fast in places). One of those features is broken with the nvidia drivers. One of these (gradients) seems to be broken in the nvidia driver. Someone should file a bug with them.

2) Even if this were a Cairo bug, it'd have been nice if you had filed it against Cairo, so we could have had a chance to look at it and get a fix out in time for the next update. Adding workarounds to Murrine is not the right solution in that case.

3) The patch looks a bit like someone poked into the Murrine source code until the bug didn't show up anymore. This could be avoided by adding comments (either here or in the patch) about why the changes fix the bug.

4) For reference: If anybody wanted to work around this problem (other than installing nouveau), I'd suggest looking in Cairo's _cairo_xlib_device_create() in src/cairo-xlib-display.c and ensure that display->buggy_gradients is set to TRUE. Setting it to TRUE unconditionally will cause slowdowns on all drivers, so detecting the nvidia binary driver sounds like a good idea. I've been told by the Xorg developers that checking for the availablility of the NV-CONTROL extension works for that.
Comment 5 Andrea Cimitan 2010-10-14 01:34:55 UTC
Thanks for taking the time to report this bug.
However, this application does not track its bugs in the GNOME Bugzilla. We kindly ask you to report the bug to the application authors. For a selective list of other bug tracking systems please consult http://live.gnome.org/Bugsquad/TriageGuide/NonGnome.

If the affected third party application has a bug tracking system you should investigate whether a bug for the reported issue is already filed in this system. If it has not been filed yet please do so. Also ensure that both bug reports contain a link to each other.
Thanks in advance!