Merge pull request #100540 from j20001970/cameraserver-check-feed-type

Camera: Skip non platform-specifc `CameraFeed` types in Linux/macOS driver
This commit is contained in:
Rémi Verschelde 2024-12-18 17:23:39 +01:00
commit 48167ff06e
No known key found for this signature in database
GPG key ID: C3336907360768E1
2 changed files with 12 additions and 0 deletions

View file

@ -52,6 +52,9 @@ void CameraLinux::_update_devices() {
for (int i = feeds.size() - 1; i >= 0; i--) {
Ref<CameraFeedLinux> feed = (Ref<CameraFeedLinux>)feeds[i];
if (feed.is_null()) {
continue;
}
String device_name = feed->get_device_name();
if (!_is_active(device_name)) {
remove_feed(feed);
@ -84,6 +87,9 @@ void CameraLinux::_update_devices() {
bool CameraLinux::_has_device(const String &p_device_name) {
for (int i = 0; i < feeds.size(); i++) {
Ref<CameraFeedLinux> feed = (Ref<CameraFeedLinux>)feeds[i];
if (feed.is_null()) {
continue;
}
if (feed->get_device_name() == p_device_name) {
return true;
}

View file

@ -323,6 +323,9 @@ void CameraMacOS::update_feeds() {
// remove devices that are gone..
for (int i = feeds.size() - 1; i >= 0; i--) {
Ref<CameraFeedMacOS> feed = (Ref<CameraFeedMacOS>)feeds[i];
if (feed.is_null()) {
continue;
}
if (![devices containsObject:feed->get_device()]) {
// remove it from our array, this will also destroy it ;)
@ -334,6 +337,9 @@ void CameraMacOS::update_feeds() {
bool found = false;
for (int i = 0; i < feeds.size() && !found; i++) {
Ref<CameraFeedMacOS> feed = (Ref<CameraFeedMacOS>)feeds[i];
if (feed.is_null()) {
continue;
}
if (feed->get_device() == device) {
found = true;
};