File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -140,9 +140,30 @@ void GPhotoCameraWorker::triggerCameraWakeup() {
140140}
141141
142142void GPhotoCameraWorker::startCamera (const QString &cameraName) {
143- // Trigger camera wake-up GPIO before starting camera
144- triggerCameraWakeup ();
145-
143+ auto isCameraAvailable = [this ](const QString &fullName) {
144+ if (fullName.isEmpty ()) {
145+ return false ;
146+ }
147+ const auto cameras = availableCameras ();
148+ for (const auto &entryVar : cameras) {
149+ const auto entry = entryVar.toMap ();
150+ if (entry.value (" value" ).toString () == fullName) {
151+ return true ;
152+ }
153+ }
154+ return false ;
155+ };
156+
157+ // camera may be in stand by. If not found, trigger wake-up and try again after a short delay
158+ if (!isCameraAvailable (cameraName)) {
159+ triggerCameraWakeup ();
160+ std::this_thread::sleep_for (std::chrono::milliseconds (200 ));
161+ if (!isCameraAvailable (cameraName)) {
162+ emit errorOccurred (tr (" Camera %1 not found" ).arg (cameraName));
163+ return ;
164+ }
165+ }
166+
146167 if (mCameraStarted ) {
147168 stopCamera ();
148169 }
You can’t perform that action at this time.
0 commit comments