Message ID | 20220409201813.8481-1-jamrial@gmail.com |
---|---|
State | Accepted |
Commit | b64043a83d5792d227bee9a01e9360fd5de404e3 |
Headers | show |
Series | [FFmpeg-devel] avfilter/vf_drawbox: remove redefinition of DrawBoxContext typedef | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_armv7_RPi4 | success | Make finished |
andriy/make_fate_armv7_RPi4 | success | Make fate finished |
James Almer: > Old GCC and Clang apparently don't like it. > > Signed-off-by: James Almer <jamrial@gmail.com> > --- > Untested since i don't have old compilers. > > See > > http://fate.ffmpeg.org/report.cgi?time=20220409194302&slot=x86_64-netbsd-clang-noopt > http://fate.ffmpeg.org/report.cgi?time=20220409194413&slot=x86_64-netbsd-gcc34 > http://fate.ffmpeg.org/report.cgi?time=20220409200245&slot=x86_64-openbsd5.6-gcc4.2-conf2 > http://fate.ffmpeg.org/report.cgi?time=20220409040143&slot=armel5tej-qemu-debian-gcc4.4 > > Clang 3 even says "redefinition of typedef 'DrawBoxContext' is invalid in C", but newer > Clang compiles it fine. > Before C11, typedefs were subject to the one-definition-rule, so that redefining them was forbidden. C11 allowed it. > libavfilter/vf_drawbox.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/libavfilter/vf_drawbox.c b/libavfilter/vf_drawbox.c > index a4fe0b8abd..65bd039d65 100644 > --- a/libavfilter/vf_drawbox.c > +++ b/libavfilter/vf_drawbox.c > @@ -73,9 +73,9 @@ enum var_name { > VARS_NB > }; > > -typedef struct DrawBoxContext DrawBoxContext; > +struct DrawBoxContext; > > -typedef int (*PixelBelongsToRegion)(DrawBoxContext *s, int x, int y); > +typedef int (*PixelBelongsToRegion)(struct DrawBoxContext *s, int x, int y); > > typedef struct DrawBoxContext { > const AVClass *class; > @@ -96,7 +96,7 @@ typedef struct DrawBoxContext { > int step; > enum AVFrameSideDataType box_source; > > - void (*draw_region)(AVFrame *frame, DrawBoxContext *ctx, int left, int top, int right, int down, > + void (*draw_region)(AVFrame *frame, struct DrawBoxContext *ctx, int left, int top, int right, int down, > PixelBelongsToRegion pixel_belongs_to_region); > } DrawBoxContext; >
diff --git a/libavfilter/vf_drawbox.c b/libavfilter/vf_drawbox.c index a4fe0b8abd..65bd039d65 100644 --- a/libavfilter/vf_drawbox.c +++ b/libavfilter/vf_drawbox.c @@ -73,9 +73,9 @@ enum var_name { VARS_NB }; -typedef struct DrawBoxContext DrawBoxContext; +struct DrawBoxContext; -typedef int (*PixelBelongsToRegion)(DrawBoxContext *s, int x, int y); +typedef int (*PixelBelongsToRegion)(struct DrawBoxContext *s, int x, int y); typedef struct DrawBoxContext { const AVClass *class; @@ -96,7 +96,7 @@ typedef struct DrawBoxContext { int step; enum AVFrameSideDataType box_source; - void (*draw_region)(AVFrame *frame, DrawBoxContext *ctx, int left, int top, int right, int down, + void (*draw_region)(AVFrame *frame, struct DrawBoxContext *ctx, int left, int top, int right, int down, PixelBelongsToRegion pixel_belongs_to_region); } DrawBoxContext;
Old GCC and Clang apparently don't like it. Signed-off-by: James Almer <jamrial@gmail.com> --- Untested since i don't have old compilers. See http://fate.ffmpeg.org/report.cgi?time=20220409194302&slot=x86_64-netbsd-clang-noopt http://fate.ffmpeg.org/report.cgi?time=20220409194413&slot=x86_64-netbsd-gcc34 http://fate.ffmpeg.org/report.cgi?time=20220409200245&slot=x86_64-openbsd5.6-gcc4.2-conf2 http://fate.ffmpeg.org/report.cgi?time=20220409040143&slot=armel5tej-qemu-debian-gcc4.4 Clang 3 even says "redefinition of typedef 'DrawBoxContext' is invalid in C", but newer Clang compiles it fine. libavfilter/vf_drawbox.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)