mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-17 20:37:04 +00:00
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.
This commit is contained in:
parent
dca22ab055
commit
a65c0a3fe8
@ -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…
Reference in New Issue
Block a user