windows support

This commit is contained in:
Nishi 2025-11-25 11:08:13 +09:00
commit b9004acd79
Signed by: nishi
GPG key ID: 27EF69B208EB9343
16 changed files with 208 additions and 32 deletions

64
audio/thread/body.c Normal file
View file

@ -0,0 +1,64 @@
static void thread_routine(void* arg) {
driver_t* drv = arg;
void* data;
data = malloc(drv->frames * 2 * 2);
while(1) {
drv->handler(drv, drv->user, data, drv->frames);
drv_write(drv, data, drv->frames);
MDEMutexLock(drv->mutex);
if(drv->quit) {
MDEMutexUnlock(&drv->mutex);
break;
}
MDEMutexUnlock(drv->mutex);
}
free(data);
}
MDEAudio MDEAudioOpen(MDEAudioHandler handler, void* user) {
int rate = MDEAudioRate;
driver_t* drv = malloc(sizeof(*drv));
memset(drv, 0, sizeof(*drv));
drv->quit = 0;
drv->handler = handler;
drv->user = user;
drv->init = 0;
drv->mutex = MDEMutexCreate();
if(!(drv->init = drv_open(drv))) {
MDEAudioClose(drv);
return NULL;
}
return drv;
}
void MDEAudioClose(MDEAudio handle) {
driver_t* drv = handle;
if(drv->init) {
MDEMutexLock(drv->mutex);
drv->quit = 1;
MDEMutexLock(drv->mutex);
MDEThreadJoin(drv->thread);
}
MDEMutexDestroy(drv->mutex);
drv_close(drv);
free(drv);
}
void MDEAudioStart(MDEAudio handle) {
driver_t* drv = handle;
drv->thread = MDEThreadCreate(thread_routine, handle);
}

17
audio/thread/decl.c Normal file
View file

@ -0,0 +1,17 @@
#include <MDE/Audio/Audio.h>
#include <MDE/Core/Thread.h>
#include <MDE/Core/Mutex.h>
typedef struct driver {
driver_context_t context;
int init;
int frames;
MDEAudioHandler handler;
void* user;
int quit;
MDEThread thread;
MDEMutex mutex;
} driver_t;