Преглед на файлове

Merge pull request #97589 from pkowal1982/fix_97454

Fix error message on startup when camera is busy
Rémi Verschelde преди 10 месеца
родител
ревизия
1fc8208765
променени са 1 файла, в които са добавени 5 реда и са изтрити 5 реда
  1. 5 5
      modules/camera/camera_feed_linux.cpp

+ 5 - 5
modules/camera/camera_feed_linux.cpp

@@ -232,6 +232,7 @@ String CameraFeedLinux::get_device_name() const {
 }
 
 bool CameraFeedLinux::activate_feed() {
+	ERR_FAIL_COND_V_MSG(selected_format == -1, false, "CameraFeed format needs to be set before activating.");
 	file_descriptor = open(device_name.ascii(), O_RDWR | O_NONBLOCK, 0);
 	if (_request_buffers() && _start_capturing()) {
 		buffer_decoder = _create_buffer_decoder();
@@ -302,16 +303,14 @@ Array CameraFeedLinux::get_formats() const {
 }
 
 CameraFeed::FeedFormat CameraFeedLinux::get_format() const {
-	return formats[selected_format];
+	FeedFormat feed_format = {};
+	return selected_format == -1 ? feed_format : formats[selected_format];
 }
 
 bool CameraFeedLinux::set_format(int p_index, const Dictionary &p_parameters) {
 	ERR_FAIL_COND_V_MSG(active, false, "Feed is active.");
 	ERR_FAIL_INDEX_V_MSG(p_index, formats.size(), false, "Invalid format index.");
 
-	parameters = p_parameters.duplicate();
-	selected_format = p_index;
-
 	FeedFormat feed_format = formats[p_index];
 
 	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) {
 	}
 	close(file_descriptor);
 
+	parameters = p_parameters.duplicate();
+	selected_format = p_index;
 	emit_signal(SNAME("format_changed"));
 
 	return true;
@@ -353,7 +354,6 @@ CameraFeedLinux::CameraFeedLinux(const String &p_device_name) :
 		CameraFeed() {
 	device_name = p_device_name;
 	_query_device(device_name);
-	set_format(0, Dictionary());
 }
 
 CameraFeedLinux::~CameraFeedLinux() {