From 0232c0af79ce21c5c5735db5368ac83aa12f94b2 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 14 Jan 2014 00:44:09 +0100 Subject: prevent mutex starvation with PT on non-Windows platforms --- FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp b/FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp index d15e13f8..162e4343 100644 --- a/FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp +++ b/FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp @@ -69,9 +69,7 @@ void Tracker::run() float dt; bool new_frame; forever - { - QMutexLocker lock(&mutex); - + { if (commands & ABORT) break; if (commands & PAUSE) continue; commands = 0; @@ -79,8 +77,11 @@ void Tracker::run() dt = time.restart() / 1000.0; new_frame = camera.get_frame(dt, &frame); + if (new_frame && !frame.empty()) { + QMutexLocker lock(&mutex); + frame = frame_rotation.rotate_frame(frame); const std::vector& points = point_extractor.extract_points(frame, dt, true); for (auto p : points) -- cgit v1.2.3