Commit a65c0a3f authored by Nicolas George's avatar Nicolas George

lavd/x11grab: disable drawing mouse without XFixes.

Fix a segfault if the XFixes extension is not available on
the X11 server.
Can be reproduced using the VNC server.
parent dca22ab0
...@@ -346,8 +346,9 @@ out: ...@@ -346,8 +346,9 @@ out:
* coordinates * coordinates
*/ */
static void static void
paint_mouse_pointer(XImage *image, struct x11grab *s) paint_mouse_pointer(XImage *image, AVFormatContext *s1)
{ {
struct x11grab *s = s1->priv_data;
int x_off = s->x_off; int x_off = s->x_off;
int y_off = s->y_off; int y_off = s->y_off;
int width = s->width; int width = s->width;
...@@ -377,6 +378,12 @@ paint_mouse_pointer(XImage *image, struct x11grab *s) ...@@ -377,6 +378,12 @@ paint_mouse_pointer(XImage *image, struct x11grab *s)
XChangeWindowAttributes(dpy, w, CWCursor, &attr); XChangeWindowAttributes(dpy, w, CWCursor, &attr);
xcim = XFixesGetCursorImage(dpy); xcim = XFixesGetCursorImage(dpy);
if (!xcim) {
av_log(s1, AV_LOG_WARNING,
"XFixes extension not available, impossible to draw cursor\n");
s->draw_mouse = 0;
return;
}
x = xcim->x - xcim->xhot; x = xcim->x - xcim->xhot;
y = xcim->y - xcim->yhot; y = xcim->y - xcim->yhot;
...@@ -573,7 +580,7 @@ x11grab_read_packet(AVFormatContext *s1, AVPacket *pkt) ...@@ -573,7 +580,7 @@ x11grab_read_packet(AVFormatContext *s1, AVPacket *pkt)
} }
if (s->draw_mouse) { if (s->draw_mouse) {
paint_mouse_pointer(image, s); paint_mouse_pointer(image, s1);
} }
return s->frame_size; return s->frame_size;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment