Skip to content

Commit 1fc8208

Browse files
committed
Merge pull request godotengine#97589 from pkowal1982/fix_97454
Fix error message on startup when camera is busy
2 parents 0e2a76d + 0178bb8 commit 1fc8208

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

modules/camera/camera_feed_linux.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ String CameraFeedLinux::get_device_name() const {
232232
}
233233

234234
bool CameraFeedLinux::activate_feed() {
235+
ERR_FAIL_COND_V_MSG(selected_format == -1, false, "CameraFeed format needs to be set before activating.");
235236
file_descriptor = open(device_name.ascii(), O_RDWR | O_NONBLOCK, 0);
236237
if (_request_buffers() && _start_capturing()) {
237238
buffer_decoder = _create_buffer_decoder();
@@ -302,16 +303,14 @@ Array CameraFeedLinux::get_formats() const {
302303
}
303304

304305
CameraFeed::FeedFormat CameraFeedLinux::get_format() const {
305-
return formats[selected_format];
306+
FeedFormat feed_format = {};
307+
return selected_format == -1 ? feed_format : formats[selected_format];
306308
}
307309

308310
bool CameraFeedLinux::set_format(int p_index, const Dictionary &p_parameters) {
309311
ERR_FAIL_COND_V_MSG(active, false, "Feed is active.");
310312
ERR_FAIL_INDEX_V_MSG(p_index, formats.size(), false, "Invalid format index.");
311313

312-
parameters = p_parameters.duplicate();
313-
selected_format = p_index;
314-
315314
FeedFormat feed_format = formats[p_index];
316315

317316
file_descriptor = open(device_name.ascii(), O_RDWR | O_NONBLOCK, 0);
@@ -344,6 +343,8 @@ bool CameraFeedLinux::set_format(int p_index, const Dictionary &p_parameters) {
344343
}
345344
close(file_descriptor);
346345

346+
parameters = p_parameters.duplicate();
347+
selected_format = p_index;
347348
emit_signal(SNAME("format_changed"));
348349

349350
return true;
@@ -353,7 +354,6 @@ CameraFeedLinux::CameraFeedLinux(const String &p_device_name) :
353354
CameraFeed() {
354355
device_name = p_device_name;
355356
_query_device(device_name);
356-
set_format(0, Dictionary());
357357
}
358358

359359
CameraFeedLinux::~CameraFeedLinux() {

0 commit comments

Comments
 (0)