Răsfoiți Sursa

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

Camera: Skip non platform-specifc `CameraFeed` types in Linux/macOS driver
Rémi Verschelde 8 luni în urmă
părinte
comite
48167ff06e
2 a modificat fișierele cu 12 adăugiri și 0 ștergeri
  1. 6 0
      modules/camera/camera_linux.cpp
  2. 6 0
      modules/camera/camera_macos.mm

+ 6 - 0
modules/camera/camera_linux.cpp

@@ -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;
 		}

+ 6 - 0
modules/camera/camera_macos.mm

@@ -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;
 			};