Simbi
Simbi

Reputation: 1042

Taking screenshot with libx11

I'm currently trying to take a screenshot using libx11

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <stdio.h>

int main(void) {
XImage* pic;
Display* dpl;
unsigned int buffer_size;

dpl = XOpenDisplay("127.0.0.1:0.0");

pic = XGetImage(dpl, RootWindow(dpl, DefaultScreen(dpl)), 10, 10, 201, 201,
        AllPlanes, ZPixmap);
}

if I compile the code using -lX11 and run it I keep getting a segmentation fault. Any ideas?

Upvotes: 4

Views: 2070

Answers (2)

user1202136
user1202136

Reputation: 11567

The X11 server does not usually listen on TCP/IP localhost, but on a Unix socket. At any rate, you should not hard-code the address of the X11 server. Try this:

dpl = XOpenDisplay(NULL);
assert(dpl);

Upvotes: 2

flolo
flolo

Reputation: 15526

You should check if dpl is NULL.

My educated guess, is that the ip is not working. Most distribution do NOT allow access to the xserver via tcp sockets, so I guess you have to enable them (they are disabled with nolisten).

Upvotes: 1

Related Questions