GNOME Bugzilla – Bug 624805
Widget rendering issues with Cairo 1.9
Last modified: 2010-10-14 01:34:55 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.
why should I patch murrine if nvidia proprietary graphics drivers are broken? fix the drivers?
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
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
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.
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!