Opened 10 years ago

Closed 10 years ago

#4139 closed defect (fixed)

xcbgrab (x11grab device) fails to build with libxcb < 1.4

Reported by: barsnick Owned by:
Priority: minor Component: avdevice
Version: git-master Keywords: xcb
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Summary of the bug:
With old libxcb, notably before version 1.4, the xcbgrab device fails to build.

How to reproduce:

% ./configure --enable-libxcb
% make

gcc output:

libavdevice/xcbgrab.c: In function ‘xcbgrab_frame_shm’:
libavdevice/xcbgrab.c:247: error: ‘xcb_generic_error_t’ has no member named ‘resource_id’
libavdevice/xcbgrab.c:247: error: ‘xcb_generic_error_t’ has no member named ‘minor_code’
libavdevice/xcbgrab.c:247: error: ‘xcb_generic_error_t’ has no member named ‘major_code’

icc output:

libavdevice/xcbgrab.c(247): error: struct "<unnamed>" has no field "resource_id"
                 e->sequence, e->resource_id, e->minor_code, e->major_code);
                                 ^

libavdevice/xcbgrab.c(247): error: struct "<unnamed>" has no field "minor_code"
                 e->sequence, e->resource_id, e->minor_code, e->major_code);
                                                 ^

libavdevice/xcbgrab.c(247): error: struct "<unnamed>" has no field "major_code"
                 e->sequence, e->resource_id, e->minor_code, e->major_code);
                                                                ^

This is due to resource_id, minor_code, major_code not having been introduced until version 1.4 of libxcb, as documented in the changelog and this commit:
http://cgit.freedesktop.org/xcb/libxcb/commit/?id=96ff5fb635bc333e80ebce6cc03008a1b9992ff6
and actually added in this commit:
http://cgit.freedesktop.org/xcb/libxcb/commit/src/xcb.h?id=f4c2794bf5990a0b2f6168f2b22b60b15e08ac44

I would agree totally if you argued that dependencies which haven't been updated for over five years are considered ancient and outdated. I have no idea when this version of libxcb was last deployed to systems which are currently still considered not-quite-EOL. I just happen to have it on one of my systems. Feel free to close this ticket.

In this case, it only affects an av_log() error message though. Omitting those fields may be acceptable, or adding a configure check. Changing that av_log() call "works for me".

Change History (3)

comment:1 by Carl Eugen Hoyos, 10 years ago

Keywords: xcb added
Reproduced by developer: set
Status: newopen

comment:2 by Carl Eugen Hoyos, 10 years ago

Workaround is to use --disable-libxcb-shm.

comment:3 by Clément Bœsch, 10 years ago

Resolution: fixed
Status: openclosed

Added a version check in cc5f5e140cdcc96a9a0574d4587b176adfb4a6ac

Note: See TracTickets for help on using tickets.