mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-11 09:06:33 +01:00
new audio engine backend for native CoreAudio audio I/O, and PortMIDI for MIDI.
Code builds, runs and functions. Full code review still pending, and some possibly changes to organization of code within the backend is possible
This commit is contained in:
parent
0a6af1420f
commit
1de00ab6bb
84 changed files with 21936 additions and 0 deletions
57
libs/backends/wavesaudio/portmidi/src/pm_mac/finddefault.c
Normal file
57
libs/backends/wavesaudio/portmidi/src/pm_mac/finddefault.c
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/* finddefault.c -- find_default_device() implementation
|
||||
Roger Dannenberg, June 2008
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "portmidi.h"
|
||||
#include "pmutil.h"
|
||||
#include "pminternal.h"
|
||||
#include "pmmacosxcm.h"
|
||||
#include "readbinaryplist.h"
|
||||
|
||||
/* Parse preference files, find default device, search devices --
|
||||
This parses the preference file(s) once for input and once for
|
||||
output, which is inefficient but much simpler to manage. Note
|
||||
that using the readbinaryplist.c module, you cannot keep two
|
||||
plist files (user and system) open at once (due to a simple
|
||||
memory management scheme).
|
||||
*/
|
||||
PmDeviceID find_default_device(char *path, int input, PmDeviceID id)
|
||||
/* path -- the name of the preference we are searching for
|
||||
input -- true iff this is an input device
|
||||
id -- current default device id
|
||||
returns matching device id if found, otherwise id
|
||||
*/
|
||||
{
|
||||
static char *pref_file = "com.apple.java.util.prefs.plist";
|
||||
char *pref_str = NULL;
|
||||
// read device preferences
|
||||
value_ptr prefs = bplist_read_user_pref(pref_file);
|
||||
if (prefs) {
|
||||
value_ptr pref_val = value_dict_lookup_using_path(prefs, path);
|
||||
if (pref_val) {
|
||||
pref_str = value_get_asciistring(pref_val);
|
||||
}
|
||||
}
|
||||
if (!pref_str) {
|
||||
bplist_free_data(); /* look elsewhere */
|
||||
prefs = bplist_read_system_pref(pref_file);
|
||||
if (prefs) {
|
||||
value_ptr pref_val = value_dict_lookup_using_path(prefs, path);
|
||||
if (pref_val) {
|
||||
pref_str = value_get_asciistring(pref_val);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (pref_str) { /* search devices for match */
|
||||
int i = pm_find_default_device(pref_str, input);
|
||||
if (i != pmNoDevice) {
|
||||
id = i;
|
||||
}
|
||||
}
|
||||
if (prefs) {
|
||||
bplist_free_data();
|
||||
}
|
||||
return id;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue