summaryrefslogtreecommitdiff
path: root/libs/audiographer/audiographer/general/threader.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/audiographer/audiographer/general/threader.h')
-rw-r--r--libs/audiographer/audiographer/general/threader.h14
1 files changed, 6 insertions, 8 deletions
diff --git a/libs/audiographer/audiographer/general/threader.h b/libs/audiographer/audiographer/general/threader.h
index 0f4aaff973..d1e11c00e1 100644
--- a/libs/audiographer/audiographer/general/threader.h
+++ b/libs/audiographer/audiographer/general/threader.h
@@ -2,6 +2,7 @@
#define AUDIOGRAPHER_THREADER_H
#include <glibmm/threadpool.h>
+#include <glibmm/timeval.h>
#include <sigc++/slot.h>
#include <boost/format.hpp>
@@ -86,11 +87,8 @@ class Threader : public Source<T>, public Sink<T>
void wait()
{
while (g_atomic_int_get (&readers) != 0) {
- Glib::TimeVal wait_time;
- wait_time.assign_current_time();
- wait_time.add_milliseconds(wait_timeout);
-
- wait_cond.timed_wait(wait_mutex, wait_time);
+ gint64 end_time = g_get_monotonic_time () + (wait_timeout * G_TIME_SPAN_MILLISECOND);
+ wait_cond.wait_until(wait_mutex, end_time);
}
wait_mutex.unlock();
@@ -119,12 +117,12 @@ class Threader : public Source<T>, public Sink<T>
OutputVec outputs;
Glib::ThreadPool & thread_pool;
- Glib::Mutex wait_mutex;
- Glib::Cond wait_cond;
+ Glib::Threads::Mutex wait_mutex;
+ Glib::Threads::Cond wait_cond;
gint readers;
long wait_timeout;
- Glib::Mutex exception_mutex;
+ Glib::Threads::Mutex exception_mutex;
boost::shared_ptr<ThreaderException> exception;
};