[Audio Threads] Restrict workgroup use to macOS 12
Restrict the use of workgroup joining and workgroup intervals to macOS Monterey or newer, as it seems the way I use it, it's completely broken on macOS Big Sur, which was the original minimum target for the API. Signed-off-by: Christopher Snowhill <kode54@gmail.com>swiftingly
parent
88b7cd6352
commit
3156aad9e1
|
@ -131,7 +131,7 @@ BOOL SetPriorityRealtimeAudio(mach_port_t mach_thread_id) {
|
|||
nodeChannelConfig = 0;
|
||||
nodeLossless = NO;
|
||||
|
||||
if(@available(macOS 11, *)) {
|
||||
if(@available(macOS 12, *)) {
|
||||
// Get the mach time info.
|
||||
struct mach_timebase_info timeBaseInfo;
|
||||
mach_timebase_info(&timeBaseInfo);
|
||||
|
@ -213,7 +213,7 @@ BOOL SetPriorityRealtimeAudio(mach_port_t mach_thread_id) {
|
|||
}
|
||||
|
||||
- (BOOL)followWorkgroup {
|
||||
if(@available(macOS 11, *)) {
|
||||
if(@available(macOS 12, *)) {
|
||||
if(!wg) {
|
||||
if(!workgroup) {
|
||||
workgroup = AudioWorkIntervalCreate([[NSString stringWithFormat:@"%@ Work Interval %@", [self className], self] UTF8String], clockId, &attr);
|
||||
|
@ -246,7 +246,7 @@ BOOL SetPriorityRealtimeAudio(mach_port_t mach_thread_id) {
|
|||
}
|
||||
|
||||
- (void)leaveWorkgroup {
|
||||
if(@available(macOS 11, *)) {
|
||||
if(@available(macOS 12, *)) {
|
||||
if(wg && wgToken.sig && !isRealtimeError) {
|
||||
os_workgroup_leave(wg, &wgToken);
|
||||
bzero(&wgToken, sizeof(wgToken));
|
||||
|
@ -256,7 +256,7 @@ BOOL SetPriorityRealtimeAudio(mach_port_t mach_thread_id) {
|
|||
}
|
||||
|
||||
- (void)startWorkslice {
|
||||
if(@available(macOS 11, *)) {
|
||||
if(@available(macOS 12, *)) {
|
||||
if(wg && !isRealtimeError && !isDeadlineError) {
|
||||
const uint64_t currentTime = mach_absolute_time();
|
||||
const uint64_t deadline = currentTime + intervalMachLength;
|
||||
|
@ -270,7 +270,7 @@ BOOL SetPriorityRealtimeAudio(mach_port_t mach_thread_id) {
|
|||
}
|
||||
|
||||
- (void)endWorkslice {
|
||||
if(@available(macOS 11, *)) {
|
||||
if(@available(macOS 12, *)) {
|
||||
if(wg && !isRealtimeError && !isDeadlineError) {
|
||||
int result = os_workgroup_interval_finish(wg, nil);
|
||||
if(result != 0) {
|
||||
|
|
Loading…
Reference in New Issue