blob: 1fd63d158e510adf5e6da86e399ca82208beebdc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
#include "main.h"
MIDI_driver * MIDI_driver::driver_list=0;
MIDI_driver::MIDI_driver()
{
next=driver_list;
driver_list=this;
inited=0;
device_list=0;
}
void MIDI_driver::reset_devices()
{
while(device_list)
{
MIDI_device * ptr = device_list->next;
delete device_list;
device_list = ptr;
}
}
MIDI_driver::~MIDI_driver()
{
reset_devices();
}
void MIDI_driver::add_device(MIDI_device * dev)
{
MIDI_device **ptr = &device_list;
while(ptr && *ptr) ptr = &(*ptr)->next;
*ptr=dev;
dev->next=0;
dev->driver=this;
}
MIDI_driver * MIDI_driver::driver_enumerate(int n)
{
MIDI_driver * ptr = driver_list;
while(ptr && n>0) {ptr=ptr->next;n--;}
return ptr;
}
int MIDI_driver::driver_count()
{
int n=0;
MIDI_driver * ptr = driver_list;
while(ptr) {ptr=ptr->next;n++;}
return n;
}
MIDI_device * MIDI_driver::device_enumerate(int n)
{
init();
MIDI_device * ptr = device_list;
while(ptr && n>0) {ptr=ptr->next;n--;}
return ptr;
}
int MIDI_driver::device_count()
{
init();
int n=0;
MIDI_device * ptr = device_list;
while(ptr) {ptr=ptr->next;n++;}
return n;
}
MIDI_device * MIDI_driver::find_device(GUID guid_driver,GUID guid_device)
{
MIDI_driver * driver_ptr = find_driver(guid_driver);
if (!driver_ptr) return 0;
MIDI_device * device_ptr;
int idx=0;
while(device_ptr = driver_ptr->device_enumerate(idx++))
{
if (device_ptr->get_guid()==guid_device) return device_ptr;
}
return 0;
}
MIDI_driver * MIDI_driver::find_driver(GUID guid_driver)
{
MIDI_driver * driver_ptr = driver_list;
while(driver_ptr)
{
if (driver_ptr->get_guid()==guid_driver) break;
driver_ptr = driver_ptr->next;
}
return driver_ptr;
}
MIDI_device * MIDI_driver::find_device_default()
{
MIDI_driver * driver_ptr = driver_list;
while(driver_ptr)
{
if (driver_ptr->is_default())
{
MIDI_device * device_ptr;
int idx=0;
while(device_ptr = driver_ptr->device_enumerate(idx++))
{
if (device_ptr->is_default()) return device_ptr;
}
}
driver_ptr = driver_ptr->next;
}
return 0;
}
void MIDI_driver::shutdown()
{
MIDI_driver * driver_ptr = driver_list;
while(driver_ptr)
{
driver_ptr->deinit();
driver_ptr = driver_ptr->next;
}
}
|