Merge pull request #97589 from pkowal1982/fix_97454
Fix error message on startup when camera is busy
This commit is contained in:
commit
1fc8208765
|
@ -232,6 +232,7 @@ String CameraFeedLinux::get_device_name() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CameraFeedLinux::activate_feed() {
|
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);
|
file_descriptor = open(device_name.ascii(), O_RDWR | O_NONBLOCK, 0);
|
||||||
if (_request_buffers() && _start_capturing()) {
|
if (_request_buffers() && _start_capturing()) {
|
||||||
buffer_decoder = _create_buffer_decoder();
|
buffer_decoder = _create_buffer_decoder();
|
||||||
|
@ -302,16 +303,14 @@ Array CameraFeedLinux::get_formats() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
CameraFeed::FeedFormat CameraFeedLinux::get_format() 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) {
|
bool CameraFeedLinux::set_format(int p_index, const Dictionary &p_parameters) {
|
||||||
ERR_FAIL_COND_V_MSG(active, false, "Feed is active.");
|
ERR_FAIL_COND_V_MSG(active, false, "Feed is active.");
|
||||||
ERR_FAIL_INDEX_V_MSG(p_index, formats.size(), false, "Invalid format index.");
|
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];
|
FeedFormat feed_format = formats[p_index];
|
||||||
|
|
||||||
file_descriptor = open(device_name.ascii(), O_RDWR | O_NONBLOCK, 0);
|
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);
|
close(file_descriptor);
|
||||||
|
|
||||||
|
parameters = p_parameters.duplicate();
|
||||||
|
selected_format = p_index;
|
||||||
emit_signal(SNAME("format_changed"));
|
emit_signal(SNAME("format_changed"));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -353,7 +354,6 @@ CameraFeedLinux::CameraFeedLinux(const String &p_device_name) :
|
||||||
CameraFeed() {
|
CameraFeed() {
|
||||||
device_name = p_device_name;
|
device_name = p_device_name;
|
||||||
_query_device(device_name);
|
_query_device(device_name);
|
||||||
set_format(0, Dictionary());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CameraFeedLinux::~CameraFeedLinux() {
|
CameraFeedLinux::~CameraFeedLinux() {
|
||||||
|
|
Loading…
Reference in New Issue