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.
This commit is contained in:
tytan652 2024-03-29 15:42:18 +01:00 committed by Ryan Foster
parent c3c6c6c934
commit 7824e164b1
5 changed files with 33 additions and 31 deletions

View file

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

View file

@ -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,

View file

@ -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);
API_AVAILABLE(macos(12.5)) void screen_stream_video_update(struct screen_capture *sc, CMSampleBufferRef sample_buffer);
void screen_stream_audio_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);

View file

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

View file

@ -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,