Skip to content

Commit

Permalink
mac-capture: Replace pragmas with availability markers
Browse files Browse the repository at this point in the history
Also changes clang-format SeparateDefinitionBlocks to Leave on ObjC
files, which avoid having an empty new line after API_AVAIABLE and the
declaration.
  • Loading branch information
tytan652 authored and RytoEX committed May 16, 2024
1 parent c3c6c6c commit 7824e16
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 31 deletions.
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ ReferenceAlignment: Right
RemoveSemicolon: false
RequiresClausePosition: WithPreceding
RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Always
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SortIncludes: false
#SortUsingDeclarations: LexicographicNumeric
Expand Down
15 changes: 9 additions & 6 deletions plugins/mac-capture/mac-sck-audio-capture.m
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
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) {
Expand All @@ -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;

Expand All @@ -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) {
Expand Down Expand Up @@ -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));

Expand Down Expand Up @@ -209,6 +209,7 @@ static void sck_audio_capture_defaults(obs_data_t *settings)

#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)
{
Expand All @@ -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;
Expand All @@ -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;

Expand Down Expand Up @@ -284,7 +286,7 @@ static bool reactivate_capture(obs_properties_t *props __unused, obs_property_t
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;

Expand All @@ -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,
Expand Down
22 changes: 9 additions & 13 deletions plugins/mac-capture/mac-sck-common.h
Original file line number Diff line number Diff line change
@@ -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>
Expand All @@ -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;
Expand Down Expand Up @@ -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);
2 changes: 1 addition & 1 deletion plugins/mac-capture/mac-sck-common.m
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
23 changes: 13 additions & 10 deletions plugins/mac-capture/mac-sck-video-capture.m
Original file line number Diff line number Diff line change
@@ -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) {
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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));

Expand Down Expand Up @@ -309,7 +309,7 @@ static bool init_screen_stream(struct screen_capture *sc)
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;

Expand Down Expand Up @@ -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;

Expand All @@ -368,14 +368,14 @@ static void sck_video_capture_render(void *data, gs_effect_t *effect __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;

Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -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;
Expand All @@ -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;

Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit 7824e16

Please sign in to comment.