diff --git a/plugins/mac-virtualcam/src/obs-plugin/plugin-main.mm b/plugins/mac-virtualcam/src/obs-plugin/plugin-main.mm index b9f373e6e..115f14714 100644 --- a/plugins/mac-virtualcam/src/obs-plugin/plugin-main.mm +++ b/plugins/mac-virtualcam/src/obs-plugin/plugin-main.mm @@ -382,8 +382,10 @@ static bool virtualcam_output_start(void *data) CMIOObjectGetPropertyData(kCMIOObjectSystemObject, &address, 0, NULL, size, &used, device_data); vcam->deviceID = 0; - NSString *OBSVirtualCamUUID = [[NSBundle bundleWithIdentifier:@"com.obsproject.mac-virtualcam"] + NSString *OBSVirtualCamUUIDString = [[NSBundle bundleWithIdentifier:@"com.obsproject.mac-virtualcam"] objectForInfoDictionaryKey:@"OBSCameraDeviceUUID"]; + CFUUIDRef OBSVirtualCamUUID = + CFUUIDCreateFromString(kCFAllocatorDefault, (CFStringRef) OBSVirtualCamUUIDString); size_t num_elements = size / sizeof(CMIOObjectID); for (size_t i = 0; i < num_elements; i++) { @@ -395,15 +397,19 @@ static bool virtualcam_output_start(void *data) CMIOObjectGetPropertyDataSize(cmioDevice, &address, 0, NULL, &device_name_size); CFStringRef uid; CMIOObjectGetPropertyData(cmioDevice, &address, 0, NULL, device_name_size, &used, &uid); - const char *uid_string = CFStringGetCStringPtr(uid, kCFStringEncodingUTF8); - if (uid_string && strcmp(uid_string, OBSVirtualCamUUID.UTF8String) == 0) { + CFUUIDRef deviceUUID = CFUUIDCreateFromString(kCFAllocatorDefault, uid); + + if (CFEqual(OBSVirtualCamUUID, deviceUUID)) { vcam->deviceID = cmioDevice; CFRelease(uid); + CFRelease(deviceUUID); break; } else { CFRelease(uid); + CFRelease(deviceUUID); } } + CFRelease(OBSVirtualCamUUID); if (!vcam->deviceID) { obs_output_set_last_error(vcam->output, obs_module_text("Error.SystemExtension.CameraUnavailable"));