Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/dep/cubeb/src/cubeb_osx_run_loop.cpp
4246 views
1
/*
2
* Copyright © 2016 Mozilla Foundation
3
*
4
* This program is made available under an ISC-style license. See the
5
* accompanying file LICENSE for details.
6
*/
7
8
#include "cubeb_osx_run_loop.h"
9
#include "cubeb_log.h"
10
#include <AudioUnit/AudioUnit.h>
11
#include <CoreAudio/AudioHardware.h>
12
#include <CoreAudio/HostTime.h>
13
#include <CoreFoundation/CoreFoundation.h>
14
#include <cubeb/cubeb.h>
15
16
void
17
cubeb_set_coreaudio_notification_runloop()
18
{
19
/* This is needed so that AudioUnit listeners get called on this thread, and
20
* not the main thread. If we don't do that, they are not called, or a crash
21
* occur, depending on the OSX version. */
22
AudioObjectPropertyAddress runloop_address = {
23
kAudioHardwarePropertyRunLoop, kAudioObjectPropertyScopeGlobal,
24
kAudioObjectPropertyElementMaster};
25
26
CFRunLoopRef run_loop = nullptr;
27
28
OSStatus r;
29
r = AudioObjectSetPropertyData(kAudioObjectSystemObject, &runloop_address, 0,
30
NULL, sizeof(CFRunLoopRef), &run_loop);
31
if (r != noErr) {
32
LOG("Could not make global CoreAudio notifications use their own thread.");
33
}
34
}
35
36