This commit is contained in:
Nishi 2025-11-22 17:56:29 +09:00
commit cd1efe40ad
Signed by: nishi
GPG key ID: 27EF69B208EB9343
5 changed files with 46 additions and 47 deletions

View file

@ -1,16 +1,16 @@
static void* thread_routine(void* arg){
static void* thread_routine(void* arg) {
driver_t* drv = arg;
void* data;
void* data;
data = malloc(drv->frames * 2 * 2);
while(1){
while(1) {
drv->handler(drv, drv->user, data, drv->frames);
drv_write(drv, data, drv->frames);
pthread_mutex_lock(&drv->mutex);
if(drv->quit){
if(drv->quit) {
pthread_mutex_unlock(&drv->mutex);
break;
}
@ -22,19 +22,19 @@ static void* thread_routine(void* arg){
return NULL;
}
void* MDEAudioOpen(MDEAudioHandler handler, void* user){
int rate = MDEAudioRate;
driver_t* drv = malloc(sizeof(*drv));
void* MDEAudioOpen(MDEAudioHandler handler, void* user) {
int rate = MDEAudioRate;
driver_t* drv = malloc(sizeof(*drv));
memset(drv, 0, sizeof(*drv));
drv->quit = 0;
drv->quit = 0;
drv->handler = handler;
drv->user = user;
drv->init = 0;
drv->user = user;
drv->init = 0;
pthread_mutex_init(&drv->mutex, NULL);
if(!(drv->init = drv_open(drv))){
if(!(drv->init = drv_open(drv))) {
MDEAudioClose(drv);
return NULL;
}
@ -42,11 +42,11 @@ void* MDEAudioOpen(MDEAudioHandler handler, void* user){
return drv;
}
void MDEAudioClose(void* handle){
void MDEAudioClose(void* handle) {
driver_t* drv = handle;
void* ret;
void* ret;
if(drv->init){
if(drv->init) {
pthread_mutex_lock(&drv->mutex);
drv->quit = 1;
pthread_mutex_unlock(&drv->mutex);
@ -60,7 +60,7 @@ void MDEAudioClose(void* handle){
free(drv);
}
void MDEAudioStart(void* handle){
void MDEAudioStart(void* handle) {
driver_t* drv = handle;
pthread_create(&drv->thread, NULL, thread_routine, handle);

View file

@ -9,9 +9,9 @@ typedef struct driver {
int frames;
MDEAudioHandler handler;
void* user;
void* user;
int quit;
pthread_t thread;
int quit;
pthread_t thread;
pthread_mutex_t mutex;
} driver_t;