如何在多台显示器上使用XGetImage?

时间:2015-11-26 11:49:15

标签: c linux ubuntu x11 xlib

我正在尝试使用XGetImage()捕获屏幕内容。一切正常,直到我连接第二台显示器。根据我对XOpenDisplay函数的理解,我应该用XOpenDisplay(“hostname:d.s”)之类的东西来调用它,其中'd'是显示数字,'s'是屏幕编号,但它失败并出现分段错误。我尝试了许多组合的数字(0.0,0.1,1.0,1.1等)。它仅在我用XOpenDisplay调用NULL时才有效,但我只能从其中一个显示中获取图像。 'Display'结构的'nscreens'成员是1.否则第二个监视器工作正常。我正在使用Ubuntu 14.04。

1 个答案:

答案 0 :(得分:3)

屏幕编号仅用于不同的帧缓冲区,即如果您有一个设置,其中监视器连接到不同的图形卡。设置起来有点麻烦,工具包中的支持是不稳定的,所以现在很难使用它。

大多数多显示器设置基于 XRANDR 扩展,它将多个视口设置为大型帧缓冲区。 XGetImage()应该看到一个大屏幕,您的应用程序需要查询XRANDR以找出实际可见的部分。