Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion libde265/image.cc
Original file line number Diff line number Diff line change
Expand Up @@ -734,7 +734,7 @@ void de265_image::thread_finishes(const thread_task* task)
assert(nThreadsRunning >= 0);

if (nThreadsFinished==nThreadsTotal) {
de265_cond_broadcast(&finished_cond, &mutex);
de265_cond_broadcast(&finished_cond);
}

de265_mutex_unlock(&mutex);
Expand Down
31 changes: 13 additions & 18 deletions libde265/threads.cc
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ void de265_mutex_lock(de265_mutex* m) { pthread_mutex_lock(m); }
void de265_mutex_unlock(de265_mutex* m) { pthread_mutex_unlock(m); }
void de265_cond_init(de265_cond* c) { pthread_cond_init(c,NULL); }
void de265_cond_destroy(de265_cond* c) { pthread_cond_destroy(c); }
void de265_cond_broadcast(de265_cond* c,de265_mutex* m) { pthread_cond_broadcast(c); }
void de265_cond_broadcast(de265_cond* c) { pthread_cond_broadcast(c); }
void de265_cond_wait(de265_cond* c,de265_mutex* m) { pthread_cond_wait(c,m); }
void de265_cond_signal(de265_cond* c) { pthread_cond_signal(c); }
#else // _WIN32
Expand All @@ -66,20 +66,15 @@ int de265_thread_create(de265_thread* t, LPTHREAD_START_ROUTINE start_routine,
}
void de265_thread_join(de265_thread t) { WaitForSingleObject(t, INFINITE); }
void de265_thread_destroy(de265_thread* t) { CloseHandle(*t); *t = NULL; }
void de265_mutex_init(de265_mutex* m) { *m = CreateMutex(NULL, FALSE, NULL); }
void de265_mutex_destroy(de265_mutex* m) { CloseHandle(*m); }
void de265_mutex_lock(de265_mutex* m) { WaitForSingleObject(*m, INFINITE); }
void de265_mutex_unlock(de265_mutex* m) { ReleaseMutex(*m); }
void de265_cond_init(de265_cond* c) { win32_cond_init(c); }
void de265_cond_destroy(de265_cond* c) { win32_cond_destroy(c); }
void de265_cond_broadcast(de265_cond* c,de265_mutex* m)
{
de265_mutex_lock(m);
win32_cond_broadcast(c);
de265_mutex_unlock(m);
}
void de265_cond_wait(de265_cond* c,de265_mutex* m) { win32_cond_wait(c,m); }
void de265_cond_signal(de265_cond* c) { win32_cond_signal(c); }
void de265_mutex_init(de265_mutex* m) { InitializeCriticalSection(m); }
void de265_mutex_destroy(de265_mutex* m) { DeleteCriticalSection(m); }
void de265_mutex_lock(de265_mutex* m) { EnterCriticalSection(m); }
void de265_mutex_unlock(de265_mutex* m) { LeaveCriticalSection(m); }
void de265_cond_init(de265_cond* c) { InitializeConditionVariable(c); }
void de265_cond_destroy(de265_cond* c) { }
void de265_cond_broadcast(de265_cond* c) { WakeAllConditionVariable(c); }
void de265_cond_wait(de265_cond* c,de265_mutex* m) { SleepConditionVariableCS(c, m, INFINITE); }
void de265_cond_signal(de265_cond* c) { WakeConditionVariable(c); }
#endif // _WIN32


Expand Down Expand Up @@ -119,7 +114,7 @@ void de265_progress_lock::set_progress(int progress)
if (progress>mProgress) {
mProgress = progress;

de265_cond_broadcast(&cond, &mutex);
de265_cond_broadcast(&cond);
}

de265_mutex_unlock(&mutex);
Expand All @@ -130,7 +125,7 @@ void de265_progress_lock::increase_progress(int progress)
de265_mutex_lock(&mutex);

mProgress += progress;
de265_cond_broadcast(&cond, &mutex);
de265_cond_broadcast(&cond);

de265_mutex_unlock(&mutex);
}
Expand Down Expand Up @@ -287,7 +282,7 @@ void stop_thread_pool(thread_pool* pool)
pool->stopped = true;
de265_mutex_unlock(&pool->mutex);

de265_cond_broadcast(&pool->cond_var, &pool->mutex);
de265_cond_broadcast(&pool->cond_var);

for (int i=0;i<pool->num_threads;i++) {
de265_thread_join(pool->thread[i]);
Expand Down
6 changes: 3 additions & 3 deletions libde265/threads.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ typedef pthread_cond_t de265_cond;
#endif

typedef HANDLE de265_thread;
typedef HANDLE de265_mutex;
typedef win32_cond_t de265_cond;
typedef CRITICAL_SECTION de265_mutex;
typedef CONDITION_VARIABLE de265_cond;
#endif // _WIN32

#ifndef _WIN32
Expand All @@ -66,7 +66,7 @@ void de265_mutex_lock(de265_mutex* m);
void de265_mutex_unlock(de265_mutex* m);
void de265_cond_init(de265_cond* c);
void de265_cond_destroy(de265_cond* c);
void de265_cond_broadcast(de265_cond* c, de265_mutex* m);
void de265_cond_broadcast(de265_cond* c);
void de265_cond_wait(de265_cond* c,de265_mutex* m);
void de265_cond_signal(de265_cond* c);

Expand Down