struct SoundIoOsMutex *soundio_os_mutex_create(void) { struct SoundIoOsMutex *mutex = ALLOCATE(struct SoundIoOsMutex, 1); if (!mutex) { soundio_os_mutex_destroy(mutex); return NULL; } #if defined(SOUNDIO_OS_WINDOWS) InitializeCriticalSection(&mutex->id); #else int err; if ((err = pthread_mutex_init(&mutex->id, NULL))) { soundio_os_mutex_destroy(mutex); return NULL; } mutex->id_init = true; #endif return mutex; }
static void destroy_jack(SoundIoPrivate *si) { SoundIoJack *sij = &si->backend_data.jack; if (sij->client) jack_client_close(sij->client); if (sij->cond) soundio_os_cond_destroy(sij->cond); if (sij->mutex) soundio_os_mutex_destroy(sij->mutex); }