static void emit_playing_stream_and_tags (RBPlayerGst *player, gboolean track_change) { GList *t; if (track_change) { /* swap stream data */ _destroy_stream_data (player); player->priv->stream_data = player->priv->next_stream_data; player->priv->stream_data_destroy = player->priv->next_stream_data_destroy; player->priv->next_stream_data = NULL; player->priv->next_stream_data_destroy = NULL; } _rb_player_emit_playing_stream (RB_PLAYER (player), player->priv->stream_data); /* process any tag lists we received while starting the stream */ for (t = player->priv->stream_tags; t != NULL; t = t->next) { GstTagList *tags; tags = (GstTagList *)t->data; rb_debug ("processing buffered taglist"); gst_tag_list_foreach (tags, (GstTagForeachFunc) process_tag, player); gst_tag_list_free (tags); } g_list_free (player->priv->stream_tags); player->priv->stream_tags = NULL; }
static gboolean actually_emit_stream_and_tags (RBPlayerGst *player) { GList *t; _rb_player_emit_playing_stream (RB_PLAYER (player), player->priv->stream_data); /* process any tag lists we received while starting the stream */ for (t = player->priv->stream_tags; t != NULL; t = t->next) { GstTagList *tags; tags = (GstTagList *)t->data; rb_debug ("processing buffered taglist"); gst_tag_list_foreach (tags, (GstTagForeachFunc) process_tag, player); gst_tag_list_free (tags); } g_list_free (player->priv->stream_tags); player->priv->stream_tags = NULL; player->priv->emit_stream_idle_id = 0; return FALSE; }