static void bridge_stasis_queue_join_action(struct ast_bridge *self, struct ast_bridge_channel *bridge_channel) { ast_channel_lock(bridge_channel->chan); command_prestart_queue_command(bridge_channel->chan, add_channel_to_bridge, ao2_bump(self), __ao2_cleanup); ast_channel_unlock(bridge_channel->chan); }
static void bridge_stasis_queue_join_action(struct ast_bridge *self, struct ast_bridge_channel *bridge_channel, struct ast_bridge_channel *swap) { struct defer_bridge_add_obj *defer; defer = ao2_alloc_options(sizeof(*defer), defer_bridge_add_dtor, AO2_ALLOC_OPT_LOCK_NOLOCK); if (!defer) { return; } ao2_ref(self, +1); defer->bridge = self; if (swap) { ast_channel_ref(swap->chan); defer->swap = swap->chan; } ast_channel_lock(bridge_channel->chan); command_prestart_queue_command(bridge_channel->chan, defer_bridge_add, defer, __ao2_cleanup); ast_channel_unlock(bridge_channel->chan); }