mkenums: Duplicates GFlagsValue entries when there are aliases
In GstVideoBufferFlags we have an enum with an "alias" like GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD = GST_VIDEO_BUFFER_FLAG_ONEFIELD
:
typedef enum {
GST_VIDEO_BUFFER_FLAG_INTERLACED = (GST_BUFFER_FLAG_LAST << 0),
GST_VIDEO_BUFFER_FLAG_TFF = (GST_BUFFER_FLAG_LAST << 1),
GST_VIDEO_BUFFER_FLAG_RFF = (GST_BUFFER_FLAG_LAST << 2),
GST_VIDEO_BUFFER_FLAG_ONEFIELD = (GST_BUFFER_FLAG_LAST << 3),
GST_VIDEO_BUFFER_FLAG_MULTIPLE_VIEW = (GST_BUFFER_FLAG_LAST << 4),
GST_VIDEO_BUFFER_FLAG_FIRST_IN_BUNDLE = (GST_BUFFER_FLAG_LAST << 5),
GST_VIDEO_BUFFER_FLAG_TOP_FIELD = GST_VIDEO_BUFFER_FLAG_TFF |
GST_VIDEO_BUFFER_FLAG_ONEFIELD,
GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD = GST_VIDEO_BUFFER_FLAG_ONEFIELD,
GST_VIDEO_BUFFER_FLAG_LAST = (GST_BUFFER_FLAG_LAST << 8)
} GstVideoBufferFlags;
And glib-makenums
generates:
GType
gst_video_frame_flags_get_type (void)
{
static volatile gsize gtype_id = 0;
static const GFlagsValue values[] = {
{ C_FLAGS(GST_VIDEO_FRAME_FLAG_NONE), "GST_VIDEO_FRAME_FLAG_NONE", "none" },
{ C_FLAGS(GST_VIDEO_FRAME_FLAG_INTERLACED), "GST_VIDEO_FRAME_FLAG_INTERLACED", "interlaced" },
{ C_FLAGS(GST_VIDEO_FRAME_FLAG_TFF), "GST_VIDEO_FRAME_FLAG_TFF", "tff" },
{ C_FLAGS(GST_VIDEO_FRAME_FLAG_RFF), "GST_VIDEO_FRAME_FLAG_RFF", "rff" },
{ C_FLAGS(GST_VIDEO_FRAME_FLAG_ONEFIELD), "GST_VIDEO_FRAME_FLAG_ONEFIELD", "onefield" },
{ C_FLAGS(GST_VIDEO_FRAME_FLAG_MULTIPLE_VIEW), "GST_VIDEO_FRAME_FLAG_MULTIPLE_VIEW", "multiple-view" },
{ C_FLAGS(GST_VIDEO_FRAME_FLAG_FIRST_IN_BUNDLE), "GST_VIDEO_FRAME_FLAG_FIRST_IN_BUNDLE", "first-in-bundle" },
{ C_FLAGS(GST_VIDEO_FRAME_FLAG_TOP_FIELD), "GST_VIDEO_FRAME_FLAG_TOP_FIELD", "top-field" },
{ C_FLAGS(GST_VIDEO_FRAME_FLAG_ONEFIELD), "GST_VIDEO_FRAME_FLAG_ONEFIELD", "onefield" },
{ C_FLAGS(GST_VIDEO_FRAME_FLAG_BOTTOM_FIELD), "GST_VIDEO_FRAME_FLAG_BOTTOM_FIELD", "bottom-field" },
{ 0, NULL, NULL }
};
if (g_once_init_enter (>ype_id)) {
GType new_type = g_flags_register_static ("GstVideoFrameFlags", values);
g_once_init_leave (>ype_id, new_type);
}
return (GType) gtype_id;
}
With a duplicate for { C_FLAGS(GST_VIDEO_FRAME_FLAG_ONEFIELD), "GST_VIDEO_FRAME_FLAG_ONEFIELD", "onefield" },
which in turns leads to weird values in the gir
(and generates warnings in hotdoc
).
We should avoid having duplicated values as it is basically incorrect.