Просмотр исходного кода

UI: Remove permission code paths for Mac OS X before 10.15

PatTheMav 3 лет назад
Родитель
Сommit
11325e6a35
1 измененных файлов с 56 добавлено и 54 удалено
  1. 56 54
      UI/platform-osx.mm

+ 56 - 54
UI/platform-osx.mm

@@ -249,35 +249,28 @@ MacPermissionStatus CheckPermissionWithPrompt(MacPermissionType type,
 
 	switch (type) {
 	case kAudioDeviceAccess: {
-		if (@available(macOS 10.14, *)) {
-			AVAuthorizationStatus audioStatus = [AVCaptureDevice
-				authorizationStatusForMediaType:AVMediaTypeAudio];
+		AVAuthorizationStatus audioStatus = [AVCaptureDevice
+			authorizationStatusForMediaType:AVMediaTypeAudio];
 
-			if (audioStatus == AVAuthorizationStatusNotDetermined &&
-			    prompt_for_permission) {
-				os_event_t *block_finished;
-				os_event_init(&block_finished,
-					      OS_EVENT_TYPE_MANUAL);
-				[AVCaptureDevice
-					requestAccessForMediaType:AVMediaTypeAudio
-						completionHandler:^(
-							BOOL granted
-							__attribute((unused))) {
-							os_event_signal(
-								block_finished);
-						}];
-				os_event_wait(block_finished);
-				os_event_destroy(block_finished);
-				audioStatus = [AVCaptureDevice
-					authorizationStatusForMediaType:
-						AVMediaTypeAudio];
-			}
-
-			permissionResponse = (MacPermissionStatus)audioStatus;
-		} else {
-			permissionResponse = kPermissionAuthorized;
+		if (audioStatus == AVAuthorizationStatusNotDetermined &&
+		    prompt_for_permission) {
+			os_event_t *block_finished;
+			os_event_init(&block_finished, OS_EVENT_TYPE_MANUAL);
+			[AVCaptureDevice
+				requestAccessForMediaType:AVMediaTypeAudio
+					completionHandler:^(
+						BOOL granted
+						__attribute((unused))) {
+						os_event_signal(block_finished);
+					}];
+			os_event_wait(block_finished);
+			os_event_destroy(block_finished);
+			audioStatus = [AVCaptureDevice
+				authorizationStatusForMediaType:AVMediaTypeAudio];
 		}
 
+		permissionResponse = (MacPermissionStatus)audioStatus;
+
 		blog(LOG_INFO, "[macOS] Permission for audio device access %s.",
 		     permissionResponse == kPermissionAuthorized ? "granted"
 								 : "denied");
@@ -285,36 +278,29 @@ MacPermissionStatus CheckPermissionWithPrompt(MacPermissionType type,
 		break;
 	}
 	case kVideoDeviceAccess: {
-		if (@available(macOS 10.14, *)) {
-			AVAuthorizationStatus videoStatus = [AVCaptureDevice
-				authorizationStatusForMediaType:AVMediaTypeVideo];
+		AVAuthorizationStatus videoStatus = [AVCaptureDevice
+			authorizationStatusForMediaType:AVMediaTypeVideo];
 
-			if (videoStatus == AVAuthorizationStatusNotDetermined &&
-			    prompt_for_permission) {
-				os_event_t *block_finished;
-				os_event_init(&block_finished,
-					      OS_EVENT_TYPE_MANUAL);
-				[AVCaptureDevice
-					requestAccessForMediaType:AVMediaTypeVideo
-						completionHandler:^(
-							BOOL granted
-							__attribute((unused))) {
-							os_event_signal(
-								block_finished);
-						}];
-
-				os_event_wait(block_finished);
-				os_event_destroy(block_finished);
-				videoStatus = [AVCaptureDevice
-					authorizationStatusForMediaType:
-						AVMediaTypeVideo];
-			}
-
-			permissionResponse = (MacPermissionStatus)videoStatus;
-		} else {
-			permissionResponse = kPermissionAuthorized;
+		if (videoStatus == AVAuthorizationStatusNotDetermined &&
+		    prompt_for_permission) {
+			os_event_t *block_finished;
+			os_event_init(&block_finished, OS_EVENT_TYPE_MANUAL);
+			[AVCaptureDevice
+				requestAccessForMediaType:AVMediaTypeVideo
+					completionHandler:^(
+						BOOL granted
+						__attribute((unused))) {
+						os_event_signal(block_finished);
+					}];
+
+			os_event_wait(block_finished);
+			os_event_destroy(block_finished);
+			videoStatus = [AVCaptureDevice
+				authorizationStatusForMediaType:AVMediaTypeVideo];
 		}
 
+		permissionResponse = (MacPermissionStatus)videoStatus;
+
 		blog(LOG_INFO, "[macOS] Permission for video device access %s.",
 		     permissionResponse == kPermissionAuthorized ? "granted"
 								 : "denied");
@@ -322,6 +308,7 @@ MacPermissionStatus CheckPermissionWithPrompt(MacPermissionType type,
 		break;
 	}
 	case kScreenCapture: {
+#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 110000
 		if (@available(macOS 11.0, *)) {
 			permissionResponse = (CGPreflightScreenCaptureAccess()
 						      ? kPermissionAuthorized
@@ -336,7 +323,22 @@ MacPermissionStatus CheckPermissionWithPrompt(MacPermissionType type,
 			}
 
 		} else {
-			permissionResponse = kPermissionAuthorized;
+#else
+		{
+#endif
+			CGDisplayStreamRef stream = CGDisplayStreamCreate(
+				CGMainDisplayID(), 1, 1,
+				kCVPixelFormatType_32BGRA, nil, nil);
+
+			if (stream) {
+				permissionResponse = kPermissionAuthorized;
+				CFRelease(stream);
+
+				if (prompt_for_permission) {
+				}
+			} else {
+				permissionResponse = kPermissionDenied;
+			}
 		}
 
 		blog(LOG_INFO, "[macOS] Permission for screen capture %s.",