diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2021-10-17 14:30:31 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2021-10-17 15:20:01 +0200 |
commit | 53f16e314c38700439b5cf58b285b1ea27c4ed53 (patch) | |
tree | ad8df3a3eb8f22a7239ca771b67374e04ce48553 | |
parent | 1a31ec8b8a4abb1c82317ae500998fc8228a50f8 (diff) |
tracker/pt: fix deadlock
-rw-r--r-- | tracker-pt/ftnoir_tracker_pt.cpp | 15 | ||||
-rw-r--r-- | tracker-pt/ftnoir_tracker_pt_dialog.cpp | 3 |
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); |