{
guint events_cookie;
GArray *events;
+ guint last_cookie;
gint using;
guint probe_list_cookie;
g_hook_list_init (&pad->probes, sizeof (GstProbe));
pad->priv->events = g_array_sized_new (FALSE, TRUE, sizeof (PadEvent), 16);
+ pad->priv->events_cookie = 0;
+ pad->priv->last_cookie = -1;
}
/* called when setting the pad inactive. It removes all sticky events from
goto wrong_mode;
#ifndef G_DISABLE_ASSERT
- if (!find_event_by_type (pad, GST_EVENT_STREAM_START, 0)) {
- g_warning (G_STRLOC
- ":%s:<%s:%s> Got data flow before stream-start event",
- G_STRFUNC, GST_DEBUG_PAD_NAME (pad));
- }
- if (!find_event_by_type (pad, GST_EVENT_SEGMENT, 0)) {
- g_warning (G_STRLOC
- ":%s:<%s:%s> Got data flow before segment event",
- G_STRFUNC, GST_DEBUG_PAD_NAME (pad));
+ if (G_UNLIKELY (pad->priv->last_cookie != pad->priv->events_cookie)) {
+ if (!find_event_by_type (pad, GST_EVENT_STREAM_START, 0)) {
+ g_warning (G_STRLOC
+ ":%s:<%s:%s> Got data flow before stream-start event",
+ G_STRFUNC, GST_DEBUG_PAD_NAME (pad));
+ }
+ if (!find_event_by_type (pad, GST_EVENT_SEGMENT, 0)) {
+ g_warning (G_STRLOC
+ ":%s:<%s:%s> Got data flow before segment event",
+ G_STRFUNC, GST_DEBUG_PAD_NAME (pad));
+ }
+ pad->priv->last_cookie = pad->priv->events_cookie;
}
#endif
goto wrong_mode;
#ifndef G_DISABLE_ASSERT
- if (!find_event_by_type (pad, GST_EVENT_STREAM_START, 0)) {
- g_warning (G_STRLOC
- ":%s:<%s:%s> Got data flow before stream-start event",
- G_STRFUNC, GST_DEBUG_PAD_NAME (pad));
- }
- if (!find_event_by_type (pad, GST_EVENT_SEGMENT, 0)) {
- g_warning (G_STRLOC
- ":%s:<%s:%s> Got data flow before segment event",
- G_STRFUNC, GST_DEBUG_PAD_NAME (pad));
+ if (G_UNLIKELY (pad->priv->last_cookie != pad->priv->events_cookie)) {
+ if (!find_event_by_type (pad, GST_EVENT_STREAM_START, 0)) {
+ g_warning (G_STRLOC
+ ":%s:<%s:%s> Got data flow before stream-start event",
+ G_STRFUNC, GST_DEBUG_PAD_NAME (pad));
+ }
+ if (!find_event_by_type (pad, GST_EVENT_SEGMENT, 0)) {
+ g_warning (G_STRLOC
+ ":%s:<%s:%s> Got data flow before segment event",
+ G_STRFUNC, GST_DEBUG_PAD_NAME (pad));
+ }
+ pad->priv->last_cookie = pad->priv->events_cookie;
}
#endif