use mutex's right with cond's

SVN revision: 28873
This commit is contained in:
Carsten Haitzler 2007-03-21 20:20:45 +00:00
parent 2fb1a2093c
commit 6eea59250e
1 changed files with 6 additions and 1 deletions

View File

@ -140,7 +140,9 @@ _em_slave(void *par)
if (!ev->get_pos_thread_deleted) if (!ev->get_pos_thread_deleted)
{ {
printf("closing get_pos thread, %p\n", ev); printf("closing get_pos thread, %p\n", ev);
pthread_mutex_lock(&(ev->get_pos_len_mutex));
pthread_cond_broadcast(&(ev->get_pos_len_cond)); pthread_cond_broadcast(&(ev->get_pos_len_cond));
pthread_mutex_unlock(&(ev->get_pos_len_mutex));
while (ev->get_poslen); while (ev->get_poslen);
} }
printf("EX dispose %p\n", ev); printf("EX dispose %p\n", ev);
@ -1366,10 +1368,11 @@ _em_get_pos_len_th(void *par)
ev = (Emotion_Xine_Video *)par; ev = (Emotion_Xine_Video *)par;
pthread_mutex_lock(&(ev->get_pos_len_mutex));
for (;;) for (;;)
{ {
pthread_mutex_lock(&(ev->get_pos_len_mutex));
pthread_cond_wait(&(ev->get_pos_len_cond), &(ev->get_pos_len_mutex)); pthread_cond_wait(&(ev->get_pos_len_cond), &(ev->get_pos_len_mutex));
pthread_mutex_unlock(&(ev->get_pos_len_mutex));
if (ev->get_poslen) if (ev->get_poslen)
{ {
int pos_stream = 0; int pos_stream = 0;
@ -1408,7 +1411,9 @@ _em_get_pos_len(Emotion_Xine_Video *ev)
{ {
if (ev->get_poslen) return; if (ev->get_poslen) return;
ev->get_poslen = 1; ev->get_poslen = 1;
pthread_mutex_lock(&(ev->get_pos_len_mutex));
pthread_cond_broadcast(&(ev->get_pos_len_cond)); pthread_cond_broadcast(&(ev->get_pos_len_cond));
pthread_mutex_unlock(&(ev->get_pos_len_mutex));
} }
const static Emotion_Video_Module em_module = const static Emotion_Video_Module em_module =