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

mac-capture: Replace pragmas with availability markers

Also changes clang-format SeparateDefinitionBlocks to Leave on ObjC
files, which avoid having an empty new line after API_AVAIABLE and the
declaration.
tytan652 1 год назад
Родитель
Сommit
7824e164b1

+ 1 - 1
.clang-format

@@ -181,7 +181,7 @@ ReferenceAlignment: Right
 RemoveSemicolon: false
 RequiresClausePosition: WithPreceding
 RequiresExpressionIndentation: OuterScope
-SeparateDefinitionBlocks: Always
+SeparateDefinitionBlocks: Leave
 ShortNamespaceLines: 1
 SortIncludes: false
 #SortUsingDeclarations: LexicographicNumeric

+ 9 - 6
plugins/mac-capture/mac-sck-audio-capture.m

@@ -5,7 +5,7 @@ const char *sck_audio_capture_getname(void *unused __unused)
     return obs_module_text("SCK.Audio.Name");
 }
 
-static void destroy_audio_screen_stream(struct screen_capture *sc)
+API_AVAILABLE(macos(13.0)) static void destroy_audio_screen_stream(struct screen_capture *sc)
 {
     if (sc->disp && !sc->capture_failed) {
         [sc->disp stopCaptureWithCompletionHandler:^(NSError *_Nullable error) {
@@ -32,7 +32,7 @@ static void destroy_audio_screen_stream(struct screen_capture *sc)
     os_event_destroy(sc->stream_start_completed);
 }
 
-static void sck_audio_capture_destroy(void *data)
+API_AVAILABLE(macos(13.0)) static void sck_audio_capture_destroy(void *data)
 {
     struct screen_capture *sc = data;
 
@@ -57,7 +57,7 @@ static void sck_audio_capture_destroy(void *data)
     bfree(sc);
 }
 
-static bool init_audio_screen_stream(struct screen_capture *sc)
+API_AVAILABLE(macos(13.0)) static bool init_audio_screen_stream(struct screen_capture *sc)
 {
     SCContentFilter *content_filter;
     if (sc->capture_failed) {
@@ -178,7 +178,7 @@ static void sck_audio_capture_defaults(obs_data_t *settings)
     obs_data_set_default_int(settings, "type", ScreenCaptureAudioDesktopStream);
 }
 
-static void *sck_audio_capture_create(obs_data_t *settings, obs_source_t *source)
+API_AVAILABLE(macos(13.0)) static void *sck_audio_capture_create(obs_data_t *settings, obs_source_t *source)
 {
     struct screen_capture *sc = bzalloc(sizeof(struct screen_capture));
 
@@ -209,6 +209,7 @@ fail:
 
 #pragma mark - obs_properties
 
+API_AVAILABLE(macos(13.0))
 static bool audio_capture_method_changed(void *data, obs_properties_t *props, obs_property_t *list __unused,
                                          obs_data_t *settings)
 {
@@ -233,6 +234,7 @@ static bool audio_capture_method_changed(void *data, obs_properties_t *props, ob
     return true;
 }
 
+API_AVAILABLE(macos(13.0))
 static bool reactivate_capture(obs_properties_t *props __unused, obs_property_t *property, void *data)
 {
     struct screen_capture *sc = data;
@@ -248,7 +250,7 @@ static bool reactivate_capture(obs_properties_t *props __unused, obs_property_t
     return true;
 }
 
-static obs_properties_t *sck_audio_capture_properties(void *data)
+API_AVAILABLE(macos(13.0)) static obs_properties_t *sck_audio_capture_properties(void *data)
 {
     struct screen_capture *sc = data;
 
@@ -284,7 +286,7 @@ static obs_properties_t *sck_audio_capture_properties(void *data)
     return props;
 }
 
-static void sck_audio_capture_update(void *data, obs_data_t *settings)
+API_AVAILABLE(macos(13.0)) static void sck_audio_capture_update(void *data, obs_data_t *settings)
 {
     struct screen_capture *sc = data;
 
@@ -300,6 +302,7 @@ static void sck_audio_capture_update(void *data, obs_data_t *settings)
 
 #pragma mark - obs_source_info
 
+API_AVAILABLE(macos(13.0))
 struct obs_source_info sck_audio_capture_info = {
     .id = "sck_audio_capture",
     .type = OBS_SOURCE_TYPE_INPUT,

+ 9 - 13
plugins/mac-capture/mac-sck-common.h

@@ -1,9 +1,6 @@
 #include <AvailabilityMacros.h>
 #include <Cocoa/Cocoa.h>
 
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunguarded-availability-new"
-
 #include <stdlib.h>
 #include <obs-module.h>
 #include <util/threading.h>
@@ -28,15 +25,16 @@ typedef enum {
     ScreenCaptureAudioApplicationStream = 1,
 } ScreenCaptureAudioStreamType;
 
-typedef SCDisplay *SCDisplayRef;
+API_AVAILABLE(macos(12.5)) typedef SCDisplay *SCDisplayRef;
 
+API_AVAILABLE(macos(12.5))
 @interface ScreenCaptureDelegate : NSObject <SCStreamOutput, SCStreamDelegate>
 
 @property struct screen_capture *sc;
 
 @end
 
-struct screen_capture {
+struct API_AVAILABLE(macos(12.5)) screen_capture {
     obs_source_t *source;
 
     gs_effect_t *effect;
@@ -71,18 +69,16 @@ struct screen_capture {
 
 bool is_screen_capture_available(void);
 
-void screen_capture_build_content_list(struct screen_capture *sc, bool display_capture);
+API_AVAILABLE(macos(12.5)) void screen_capture_build_content_list(struct screen_capture *sc, bool display_capture);
 
-bool build_display_list(struct screen_capture *sc, obs_properties_t *props);
+API_AVAILABLE(macos(12.5)) bool build_display_list(struct screen_capture *sc, obs_properties_t *props);
 
-bool build_window_list(struct screen_capture *sc, obs_properties_t *props);
+API_AVAILABLE(macos(12.5)) bool build_window_list(struct screen_capture *sc, obs_properties_t *props);
 
-bool build_application_list(struct screen_capture *sc, obs_properties_t *props);
+API_AVAILABLE(macos(12.5)) bool build_application_list(struct screen_capture *sc, obs_properties_t *props);
 
 static const char *screen_capture_getname(void *unused __unused);
 
-void screen_stream_video_update(struct screen_capture *sc, CMSampleBufferRef sample_buffer);
-
-void screen_stream_audio_update(struct screen_capture *sc, CMSampleBufferRef sample_buffer);
+API_AVAILABLE(macos(12.5)) void screen_stream_video_update(struct screen_capture *sc, CMSampleBufferRef sample_buffer);
 
-#pragma clang diagnostic pop
+API_AVAILABLE(macos(12.5)) void screen_stream_audio_update(struct screen_capture *sc, CMSampleBufferRef sample_buffer);

+ 1 - 1
plugins/mac-capture/mac-sck-common.m

@@ -198,7 +198,7 @@ bool build_application_list(struct screen_capture *sc, obs_properties_t *props)
 
 #pragma mark - audio/video
 
-void screen_stream_video_update(struct screen_capture *sc, CMSampleBufferRef sample_buffer)
+API_AVAILABLE(macos(12.5)) void screen_stream_video_update(struct screen_capture *sc, CMSampleBufferRef sample_buffer)
 {
     bool frame_detail_errored = false;
     float scale_factor = 1.0f;

+ 13 - 10
plugins/mac-capture/mac-sck-video-capture.m

@@ -1,7 +1,7 @@
 #include "mac-sck-common.h"
 #include "window-utils.h"
 
-static void destroy_screen_stream(struct screen_capture *sc)
+API_AVAILABLE(macos(12.5)) static void destroy_screen_stream(struct screen_capture *sc)
 {
     if (sc->disp && !sc->capture_failed) {
         [sc->disp stopCaptureWithCompletionHandler:^(NSError *_Nullable error) {
@@ -45,7 +45,7 @@ static void destroy_screen_stream(struct screen_capture *sc)
     os_event_destroy(sc->stream_start_completed);
 }
 
-static void sck_video_capture_destroy(void *data)
+API_AVAILABLE(macos(12.5)) static void sck_video_capture_destroy(void *data)
 {
     struct screen_capture *sc = data;
 
@@ -74,7 +74,7 @@ static void sck_video_capture_destroy(void *data)
     bfree(sc);
 }
 
-static bool init_screen_stream(struct screen_capture *sc)
+API_AVAILABLE(macos(12.5)) static bool init_screen_stream(struct screen_capture *sc)
 {
     SCContentFilter *content_filter;
     if (sc->capture_failed) {
@@ -270,7 +270,7 @@ static bool init_screen_stream(struct screen_capture *sc)
     return did_stream_start;
 }
 
-static void *sck_video_capture_create(obs_data_t *settings, obs_source_t *source)
+API_AVAILABLE(macos(12.5)) static void *sck_video_capture_create(obs_data_t *settings, obs_source_t *source)
 {
     struct screen_capture *sc = bzalloc(sizeof(struct screen_capture));
 
@@ -309,7 +309,7 @@ fail:
     return NULL;
 }
 
-static void sck_video_capture_tick(void *data, float seconds __unused)
+API_AVAILABLE(macos(12.5)) static void sck_video_capture_tick(void *data, float seconds __unused)
 {
     struct screen_capture *sc = data;
 
@@ -341,7 +341,7 @@ static void sck_video_capture_tick(void *data, float seconds __unused)
     }
 }
 
-static void sck_video_capture_render(void *data, gs_effect_t *effect __unused)
+API_AVAILABLE(macos(12.5)) static void sck_video_capture_render(void *data, gs_effect_t *effect __unused)
 {
     struct screen_capture *sc = data;
 
@@ -368,14 +368,14 @@ static const char *sck_video_capture_getname(void *unused __unused)
         return obs_module_text("SCK.Name.Beta");
 }
 
-static uint32_t sck_video_capture_getwidth(void *data)
+API_AVAILABLE(macos(12.5)) static uint32_t sck_video_capture_getwidth(void *data)
 {
     struct screen_capture *sc = data;
 
     return (uint32_t) sc->frame.size.width;
 }
 
-static uint32_t sck_video_capture_getheight(void *data)
+API_AVAILABLE(macos(12.5)) static uint32_t sck_video_capture_getheight(void *data)
 {
     struct screen_capture *sc = data;
 
@@ -410,7 +410,7 @@ static void sck_video_capture_defaults(obs_data_t *settings)
     obs_data_set_default_bool(settings, "show_hidden_windows", false);
 }
 
-static void sck_video_capture_update(void *data, obs_data_t *settings)
+API_AVAILABLE(macos(12.5)) static void sck_video_capture_update(void *data, obs_data_t *settings)
 {
     struct screen_capture *sc = data;
 
@@ -472,6 +472,7 @@ static void sck_video_capture_update(void *data, obs_data_t *settings)
 
 #pragma mark - obs_properties
 
+API_AVAILABLE(macos(12.5))
 static bool content_settings_changed(void *data, obs_properties_t *props, obs_property_t *list __unused,
                                      obs_data_t *settings)
 {
@@ -543,6 +544,7 @@ static bool content_settings_changed(void *data, obs_properties_t *props, obs_pr
     return true;
 }
 
+API_AVAILABLE(macos(12.5))
 static bool reactivate_capture(obs_properties_t *props __unused, obs_property_t *property, void *data)
 {
     struct screen_capture *sc = data;
@@ -560,7 +562,7 @@ static bool reactivate_capture(obs_properties_t *props __unused, obs_property_t
     return true;
 }
 
-static obs_properties_t *sck_video_capture_properties(void *data)
+API_AVAILABLE(macos(12.5)) static obs_properties_t *sck_video_capture_properties(void *data)
 {
     struct screen_capture *sc = data;
 
@@ -693,6 +695,7 @@ enum gs_color_space sck_video_capture_get_color_space(void *data, size_t count,
 
 #pragma mark - obs_source_info
 
+API_AVAILABLE(macos(12.5))
 struct obs_source_info sck_video_capture_info = {
     .id = "screen_capture",
     .type = OBS_SOURCE_TYPE_INPUT,