Browse Source

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.
tags/n2.4
Nicolas George 11 years ago
parent
commit
a65c0a3fe8
1 changed files with 9 additions and 2 deletions
  1. +9
    -2
      libavdevice/x11grab.c

+ 9
- 2
libavdevice/x11grab.c View File

@@ -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;


Loading…
Cancel
Save