我正在尝试使用XGetImage()捕获屏幕内容。一切正常,直到我连接第二台显示器。根据我对XOpenDisplay函数的理解,我应该用XOpenDisplay(“hostname:d.s”)之类的东西来调用它,其中'd'是显示数字,'s'是屏幕编号,但它失败并出现分段错误。我尝试了许多组合的数字(0.0,0.1,1.0,1.1等)。它仅在我用XOpenDisplay调用NULL时才有效,但我只能从其中一个显示中获取图像。 'Display'结构的'nscreens'成员是1.否则第二个监视器工作正常。我正在使用Ubuntu 14.04。
答案 0 :(得分:3)
屏幕编号仅用于不同的帧缓冲区,即如果您有一个设置,其中监视器连接到不同的图形卡。设置起来有点麻烦,工具包中的支持是不稳定的,所以现在很难使用它。
大多数多显示器设置基于 XRANDR 扩展,它将多个视口设置为大型帧缓冲区。 XGetImage()
应该看到一个大屏幕,您的应用程序需要查询XRANDR以找出实际可见的部分。