1

我已经能够将 Xscreensaver 破解到我想要的外观(非常感谢 luser droog 的帮助)。我添加了一些 Cairo 代码,因为单独使用 Xlib 很难实现我想要的。由于这对我来说只是一个 hack,我不打算分发它。

无论如何,当我在窗口中预览 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,64 位版本。我正在使用 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

有关完整的源代码,您可以查看此处

4

1 回答 1

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);

这声称drawableDB.p使用显示器的第一个屏幕的默认视觉效果。然而,实际的窗口似乎是fuzzyflakes_init() 的一个参数,因此可能正在使用另一个视觉对象。

从另一个快速浏览,请尝试替换DefaultVisual(flake->dpy, 0)flake->XGWA.visual.

于 2013-05-30T16:21:59.080 回答