{
profile_sharer_t *prsh = prch->prch_sharer;
profile_sharer_message_t *psm, *psm2;
- int run = 0;
if (prsh == NULL)
return;
- tvh_mutex_lock(&prsh->prsh_queue_mutex);
LIST_REMOVE(prch, prch_sharer_link);
if (LIST_EMPTY(&prsh->prsh_chains)) {
- if ((run = prsh->prsh_queue_run) != 0) {
+ if (prsh->prsh_queue_run) {
+ tvh_mutex_lock(&prsh->prsh_queue_mutex);
prsh->prsh_queue_run = 0;
tvh_cond_signal(&prsh->prsh_queue_cond, 0);
- }
- prch->prch_sharer = NULL;
- prch->prch_post_share = NULL;
- }
- tvh_mutex_unlock(&prsh->prsh_queue_mutex);
- if (run) {
- pthread_join(prsh->prsh_queue_thread, NULL);
- while ((psm = TAILQ_FIRST(&prsh->prsh_queue)) != NULL) {
- streaming_msg_free(psm->psm_sm);
- TAILQ_REMOVE(&prsh->prsh_queue, psm, psm_link);
- free(psm);
+ prch->prch_sharer = NULL;
+ prch->prch_post_share = NULL;
+ tvh_mutex_unlock(&prsh->prsh_queue_mutex);
+ pthread_join(prsh->prsh_queue_thread, NULL);
+ while ((psm = TAILQ_FIRST(&prsh->prsh_queue)) != NULL) {
+ streaming_msg_free(psm->psm_sm);
+ TAILQ_REMOVE(&prsh->prsh_queue, psm, psm_link);
+ free(psm);
+ }
}
if (prsh->prsh_tsfix)
tsfix_destroy(prsh->prsh_tsfix);
if (prsh->prsh_master == prch)
prsh->prsh_master = NULL;
tvh_mutex_unlock(&prsh->prsh_queue_mutex);
- }
+ }
}
}