提交 a65c0a3f 编写于 作者: N 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.
上级 dca22ab0
......@@ -346,8 +346,9 @@ out:
* coordinates
*/
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 y_off = s->y_off;
int width = s->width;
......@@ -377,6 +378,12 @@ paint_mouse_pointer(XImage *image, struct x11grab *s)
XChangeWindowAttributes(dpy, w, CWCursor, &attr);
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;
y = xcim->y - xcim->yhot;
......@@ -573,7 +580,7 @@ x11grab_read_packet(AVFormatContext *s1, AVPacket *pkt)
}
if (s->draw_mouse) {
paint_mouse_pointer(image, s);
paint_mouse_pointer(image, s1);
}
return s->frame_size;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册