summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2021-10-17 14:30:31 +0200
committerStanislaw Halik <sthalik@misaki.pl>2021-10-17 15:20:01 +0200
commit53f16e314c38700439b5cf58b285b1ea27c4ed53 (patch)
treead8df3a3eb8f22a7239ca771b67374e04ce48553
parent1a31ec8b8a4abb1c82317ae500998fc8228a50f8 (diff)
tracker/pt: fix deadlock
-rw-r--r--tracker-pt/ftnoir_tracker_pt.cpp15
-rw-r--r--tracker-pt/ftnoir_tracker_pt_dialog.cpp3
2 files changed, 9 insertions, 9 deletions
diff --git a/tracker-pt/ftnoir_tracker_pt.cpp b/tracker-pt/ftnoir_tracker_pt.cpp
index 4fc6f99a..db2ace64 100644
--- a/tracker-pt/ftnoir_tracker_pt.cpp
+++ b/tracker-pt/ftnoir_tracker_pt.cpp
@@ -54,17 +54,16 @@ void Tracker_PT::run()
{
if (reopen_camera_flag)
{
- QMutexLocker l(&camera_mtx);
-
reopen_camera_flag = false;
- if (camera)
- camera->stop();
- camera = traits->make_camera();
- set_fov(s.fov);
{
- if (!camera->start(s))
- break;
+ QMutexLocker l(&camera_mtx);
+ camera = nullptr;
}
+ auto camera_ = traits->make_camera();
+ if (!camera_->start(s))
+ break;
+ camera_->set_fov(s.fov);
+ camera = std::move(camera_);
}
pt_camera_info info;
diff --git a/tracker-pt/ftnoir_tracker_pt_dialog.cpp b/tracker-pt/ftnoir_tracker_pt_dialog.cpp
index 1afd7ad4..ce300e27 100644
--- a/tracker-pt/ftnoir_tracker_pt_dialog.cpp
+++ b/tracker-pt/ftnoir_tracker_pt_dialog.cpp
@@ -237,7 +237,8 @@ void TrackerDialog_PT::show_camera_settings()
if (tracker)
{
QMutexLocker l(&tracker->camera_mtx);
- tracker->camera->show_camera_settings();
+ if (tracker->camera)
+ tracker->camera->show_camera_settings();
}
else
(void)video::show_dialog(s.camera_name);