Przeglądaj źródła

make midiin device pointer live in a struct

master
rodzic
commit
b343e4040a
1 zmienionych plików z 16 dodań i 6 usunięć
  1. +16
    -6
      main.c

+ 16
- 6
main.c Wyświetl plik

@@ -13,24 +13,33 @@
void alsa_error (const char *format, ...);
void* midiinfunction (void * arg);

typedef struct {
snd_rawmidi_t* midiin;
snd_rawmidi_t* midiout;
} housicIO;

int main(int argc, char *argv[]) {
int status;
int mode = SND_RAWMIDI_SYNC;
pthread_t midiinthread;
snd_rawmidi_t* midiin = NULL;

housicIO IOs = {NULL,NULL};
// snd_rawmidi_t* midiin = NULL;
const char* portname = "virtual";

if ((status = snd_rawmidi_open(&midiin, NULL, portname, mode)) < 0) {
if ((status = snd_rawmidi_open(&IOs.midiin, NULL, portname, mode)) < 0) {
alsa_error("Problem opening MIDI input: %s", snd_strerror(status));
exit(1);
}

status = pthread_create(&midiinthread, NULL, midiinfunction, midiin);
status = pthread_create(&midiinthread, NULL, midiinfunction, &IOs);
pthread_join(midiinthread, NULL);

snd_rawmidi_close(midiin);
midiin=NULL;
//snd_rawmidi_close(midiin);
//midiin=NULL;
return 0;
}
@@ -43,7 +52,8 @@ int main(int argc, char *argv[]) {
//

void *midiinfunction(void *arg) {
snd_rawmidi_t* midiin = (snd_rawmidi_t*)arg;
housicIO* IOs = (housicIO*)arg;
snd_rawmidi_t* midiin = IOs->midiin;
int status;
int i = 0;
char buffer[3];

Ładowanie…
Anuluj
Zapisz