peer = cache->peer;
GST_PAD_STREAM_LOCK (peer);
+ if (G_UNLIKELY (g_atomic_pointer_get (cache_ptr) == PAD_CACHE_INVALID))
+ goto invalid;
GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad, "calling chainfunction &%s",
GST_DEBUG_FUNCPTR_NAME (GST_PAD_CHAINFUNC (peer)));
}
return ret;
}
+invalid:
+ {
+ pad_free_cache (cache);
+ GST_PAD_STREAM_UNLOCK (peer);
+ goto slow_path;
+ }
}
/**
peer = cache->peer;
GST_PAD_STREAM_LOCK (peer);
+ if (G_UNLIKELY (g_atomic_pointer_get (cache_ptr) == PAD_CACHE_INVALID))
+ goto invalid;
ret = GST_PAD_CHAINLISTFUNC (peer) (peer, list);
}
return ret;
}
+invalid:
+ {
+ pad_free_cache (cache);
+ GST_PAD_STREAM_UNLOCK (peer);
+ goto slow_path;
+ }
}
/**