我已经能够将Xscreensaver破解到我想要的外观(非常感谢luser droog的帮助)。我添加了一些开罗代码,因为单独使用Xlib很难实现我想要的东西。由于这对我来说只是一个黑客,我不打算分发它。
无论如何,当我在一个窗口中预览Fuzzyflakes它看起来很好,但是当我全屏预览时(就像任何好的屏幕保护程序一样)它给了我这个错误:
X error in fuzzyflakes:
X Error of failed request: BadMatch (invalid parameter attribute)
Major Optcode of failed request: 139 (RENDER)
Minor optcode of failed request: 4 (RenderCreatePicture)
Serial number of failed request: 528
Current serial number in output stream: 1654
以下是一些进一步的信息。我正在使用Linux Mint 14,164位版本。我正在使用nVidia专有驱动程序,版本304.88。我不得不破解xscreensaver配置脚本生成的Makefile。我将Makefile的第800行更改为:
fuzzyflakes: fuzzyflakes.o $(HACK_OBJS)
$(CC_HACK) `pkg-config --cflags cairo` -g -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) -lcairo -lm
对于完整的源代码,您可以查看here。
答案 0 :(得分:3)
从快速看看,您似乎正在向cairo提供无效信息:
flake->Fluff.gradient_image_background =
cairo_xlib_surface_create(flake->dpy,
flake->DB.b, DefaultVisual(flake->dpy, 0),
flake->XGWA.width, flake->XGWA.height);
这声称可绘制的DB.p
使用显示器的第一个屏幕的默认视觉效果。但是,实际窗口似乎是fuzzyflakes_init()的参数,因此可以使用另一个视觉。
从另一个快速查看,请尝试将DefaultVisual(flake->dpy, 0)
替换为flake->XGWA.visual
。