mirror of
https://github.com/mackron/miniaudio.git
synced 2026-04-24 09:14:04 +02:00
Merge branch 'dev' into dev-0.12
This commit is contained in:
+21
-15
@@ -31114,7 +31114,7 @@ typedef void (* ma_pa_threaded_mainloop_unlock_proc )(
|
|||||||
typedef void (* ma_pa_threaded_mainloop_wait_proc )(ma_pa_threaded_mainloop* m);
|
typedef void (* ma_pa_threaded_mainloop_wait_proc )(ma_pa_threaded_mainloop* m);
|
||||||
typedef void (* ma_pa_threaded_mainloop_signal_proc )(ma_pa_threaded_mainloop* m, int wait_for_accept);
|
typedef void (* ma_pa_threaded_mainloop_signal_proc )(ma_pa_threaded_mainloop* m, int wait_for_accept);
|
||||||
typedef void (* ma_pa_threaded_mainloop_accept_proc )(ma_pa_threaded_mainloop* m);
|
typedef void (* ma_pa_threaded_mainloop_accept_proc )(ma_pa_threaded_mainloop* m);
|
||||||
typedef int (* ma_pa_threaded_mainloop_get_retval_proc )(ma_pa_threaded_mainloop* m);
|
typedef int (* ma_pa_threaded_mainloop_get_retval_proc )(const ma_pa_threaded_mainloop* m);
|
||||||
typedef ma_pa_mainloop_api* (* ma_pa_threaded_mainloop_get_api_proc )(ma_pa_threaded_mainloop* m);
|
typedef ma_pa_mainloop_api* (* ma_pa_threaded_mainloop_get_api_proc )(ma_pa_threaded_mainloop* m);
|
||||||
typedef int (* ma_pa_threaded_mainloop_in_thread_proc )(ma_pa_threaded_mainloop* m);
|
typedef int (* ma_pa_threaded_mainloop_in_thread_proc )(ma_pa_threaded_mainloop* m);
|
||||||
typedef void (* ma_pa_threaded_mainloop_set_name_proc )(ma_pa_threaded_mainloop* m, const char* name);
|
typedef void (* ma_pa_threaded_mainloop_set_name_proc )(ma_pa_threaded_mainloop* m, const char* name);
|
||||||
@@ -31123,13 +31123,13 @@ typedef void (* ma_pa_context_unref_proc )(
|
|||||||
typedef int (* ma_pa_context_connect_proc )(ma_pa_context* c, const char* server, ma_pa_context_flags_t flags, const ma_pa_spawn_api* api);
|
typedef int (* ma_pa_context_connect_proc )(ma_pa_context* c, const char* server, ma_pa_context_flags_t flags, const ma_pa_spawn_api* api);
|
||||||
typedef void (* ma_pa_context_disconnect_proc )(ma_pa_context* c);
|
typedef void (* ma_pa_context_disconnect_proc )(ma_pa_context* c);
|
||||||
typedef void (* ma_pa_context_set_state_callback_proc )(ma_pa_context* c, ma_pa_context_notify_cb_t cb, void* userdata);
|
typedef void (* ma_pa_context_set_state_callback_proc )(ma_pa_context* c, ma_pa_context_notify_cb_t cb, void* userdata);
|
||||||
typedef ma_pa_context_state_t (* ma_pa_context_get_state_proc )(ma_pa_context* c);
|
typedef ma_pa_context_state_t (* ma_pa_context_get_state_proc )(const ma_pa_context* c);
|
||||||
typedef ma_pa_operation* (* ma_pa_context_get_sink_info_list_proc )(ma_pa_context* c, ma_pa_sink_info_cb_t cb, void* userdata);
|
typedef ma_pa_operation* (* ma_pa_context_get_sink_info_list_proc )(ma_pa_context* c, ma_pa_sink_info_cb_t cb, void* userdata);
|
||||||
typedef ma_pa_operation* (* ma_pa_context_get_source_info_list_proc )(ma_pa_context* c, ma_pa_source_info_cb_t cb, void* userdata);
|
typedef ma_pa_operation* (* ma_pa_context_get_source_info_list_proc )(ma_pa_context* c, ma_pa_source_info_cb_t cb, void* userdata);
|
||||||
typedef ma_pa_operation* (* ma_pa_context_get_sink_info_by_name_proc )(ma_pa_context* c, const char* name, ma_pa_sink_info_cb_t cb, void* userdata);
|
typedef ma_pa_operation* (* ma_pa_context_get_sink_info_by_name_proc )(ma_pa_context* c, const char* name, ma_pa_sink_info_cb_t cb, void* userdata);
|
||||||
typedef ma_pa_operation* (* ma_pa_context_get_source_info_by_name_proc)(ma_pa_context* c, const char* name, ma_pa_source_info_cb_t cb, void* userdata);
|
typedef ma_pa_operation* (* ma_pa_context_get_source_info_by_name_proc)(ma_pa_context* c, const char* name, ma_pa_source_info_cb_t cb, void* userdata);
|
||||||
typedef void (* ma_pa_operation_unref_proc )(ma_pa_operation* o);
|
typedef void (* ma_pa_operation_unref_proc )(ma_pa_operation* o);
|
||||||
typedef ma_pa_operation_state_t (* ma_pa_operation_get_state_proc )(ma_pa_operation* o);
|
typedef ma_pa_operation_state_t (* ma_pa_operation_get_state_proc )(const ma_pa_operation* o);
|
||||||
typedef ma_pa_channel_map* (* ma_pa_channel_map_init_extend_proc )(ma_pa_channel_map* m, unsigned channels, ma_pa_channel_map_def_t def);
|
typedef ma_pa_channel_map* (* ma_pa_channel_map_init_extend_proc )(ma_pa_channel_map* m, unsigned channels, ma_pa_channel_map_def_t def);
|
||||||
typedef int (* ma_pa_channel_map_valid_proc )(const ma_pa_channel_map* m);
|
typedef int (* ma_pa_channel_map_valid_proc )(const ma_pa_channel_map* m);
|
||||||
typedef int (* ma_pa_channel_map_compatible_proc )(const ma_pa_channel_map* m, const ma_pa_sample_spec* ss);
|
typedef int (* ma_pa_channel_map_compatible_proc )(const ma_pa_channel_map* m, const ma_pa_sample_spec* ss);
|
||||||
@@ -31138,12 +31138,12 @@ typedef void (* ma_pa_stream_unref_proc )(
|
|||||||
typedef int (* ma_pa_stream_connect_playback_proc )(ma_pa_stream* s, const char* dev, const ma_pa_buffer_attr* attr, ma_pa_stream_flags_t flags, const ma_pa_cvolume* volume, ma_pa_stream* sync_stream);
|
typedef int (* ma_pa_stream_connect_playback_proc )(ma_pa_stream* s, const char* dev, const ma_pa_buffer_attr* attr, ma_pa_stream_flags_t flags, const ma_pa_cvolume* volume, ma_pa_stream* sync_stream);
|
||||||
typedef int (* ma_pa_stream_connect_record_proc )(ma_pa_stream* s, const char* dev, const ma_pa_buffer_attr* attr, ma_pa_stream_flags_t flags);
|
typedef int (* ma_pa_stream_connect_record_proc )(ma_pa_stream* s, const char* dev, const ma_pa_buffer_attr* attr, ma_pa_stream_flags_t flags);
|
||||||
typedef int (* ma_pa_stream_disconnect_proc )(ma_pa_stream* s);
|
typedef int (* ma_pa_stream_disconnect_proc )(ma_pa_stream* s);
|
||||||
typedef ma_pa_stream_state_t (* ma_pa_stream_get_state_proc )(ma_pa_stream* s);
|
typedef ma_pa_stream_state_t (* ma_pa_stream_get_state_proc )(const ma_pa_stream* s);
|
||||||
typedef const ma_pa_sample_spec* (* ma_pa_stream_get_sample_spec_proc )(ma_pa_stream* s);
|
typedef const ma_pa_sample_spec* (* ma_pa_stream_get_sample_spec_proc )(ma_pa_stream* s);
|
||||||
typedef const ma_pa_channel_map* (* ma_pa_stream_get_channel_map_proc )(ma_pa_stream* s);
|
typedef const ma_pa_channel_map* (* ma_pa_stream_get_channel_map_proc )(ma_pa_stream* s);
|
||||||
typedef const ma_pa_buffer_attr* (* ma_pa_stream_get_buffer_attr_proc )(ma_pa_stream* s);
|
typedef const ma_pa_buffer_attr* (* ma_pa_stream_get_buffer_attr_proc )(ma_pa_stream* s);
|
||||||
typedef ma_pa_operation* (* ma_pa_stream_set_buffer_attr_proc )(ma_pa_stream* s, const ma_pa_buffer_attr* attr, ma_pa_stream_success_cb_t cb, void* userdata);
|
typedef ma_pa_operation* (* ma_pa_stream_set_buffer_attr_proc )(ma_pa_stream* s, const ma_pa_buffer_attr* attr, ma_pa_stream_success_cb_t cb, void* userdata);
|
||||||
typedef const char* (* ma_pa_stream_get_device_name_proc )(ma_pa_stream* s);
|
typedef const char* (* ma_pa_stream_get_device_name_proc )(const ma_pa_stream* s);
|
||||||
typedef void (* ma_pa_stream_set_write_callback_proc )(ma_pa_stream* s, ma_pa_stream_request_cb_t cb, void* userdata);
|
typedef void (* ma_pa_stream_set_write_callback_proc )(ma_pa_stream* s, ma_pa_stream_request_cb_t cb, void* userdata);
|
||||||
typedef void (* ma_pa_stream_set_read_callback_proc )(ma_pa_stream* s, ma_pa_stream_request_cb_t cb, void* userdata);
|
typedef void (* ma_pa_stream_set_read_callback_proc )(ma_pa_stream* s, ma_pa_stream_request_cb_t cb, void* userdata);
|
||||||
typedef void (* ma_pa_stream_set_suspended_callback_proc )(ma_pa_stream* s, ma_pa_stream_notify_cb_t cb, void* userdata);
|
typedef void (* ma_pa_stream_set_suspended_callback_proc )(ma_pa_stream* s, ma_pa_stream_notify_cb_t cb, void* userdata);
|
||||||
@@ -31151,15 +31151,15 @@ typedef void (* ma_pa_stream_set_moved_callback_proc )(
|
|||||||
typedef int (* ma_pa_stream_is_suspended_proc )(const ma_pa_stream* s);
|
typedef int (* ma_pa_stream_is_suspended_proc )(const ma_pa_stream* s);
|
||||||
typedef ma_pa_operation* (* ma_pa_stream_flush_proc )(ma_pa_stream* s, ma_pa_stream_success_cb_t cb, void* userdata);
|
typedef ma_pa_operation* (* ma_pa_stream_flush_proc )(ma_pa_stream* s, ma_pa_stream_success_cb_t cb, void* userdata);
|
||||||
typedef ma_pa_operation* (* ma_pa_stream_drain_proc )(ma_pa_stream* s, ma_pa_stream_success_cb_t cb, void* userdata);
|
typedef ma_pa_operation* (* ma_pa_stream_drain_proc )(ma_pa_stream* s, ma_pa_stream_success_cb_t cb, void* userdata);
|
||||||
typedef int (* ma_pa_stream_is_corked_proc )(ma_pa_stream* s);
|
typedef int (* ma_pa_stream_is_corked_proc )(const ma_pa_stream* s);
|
||||||
typedef ma_pa_operation* (* ma_pa_stream_cork_proc )(ma_pa_stream* s, int b, ma_pa_stream_success_cb_t cb, void* userdata);
|
typedef ma_pa_operation* (* ma_pa_stream_cork_proc )(ma_pa_stream* s, int b, ma_pa_stream_success_cb_t cb, void* userdata);
|
||||||
typedef ma_pa_operation* (* ma_pa_stream_trigger_proc )(ma_pa_stream* s, ma_pa_stream_success_cb_t cb, void* userdata);
|
typedef ma_pa_operation* (* ma_pa_stream_trigger_proc )(ma_pa_stream* s, ma_pa_stream_success_cb_t cb, void* userdata);
|
||||||
typedef int (* ma_pa_stream_begin_write_proc )(ma_pa_stream* s, void** data, size_t* nbytes);
|
typedef int (* ma_pa_stream_begin_write_proc )(ma_pa_stream* s, void** data, size_t* nbytes);
|
||||||
typedef int (* ma_pa_stream_write_proc )(ma_pa_stream* s, const void* data, size_t nbytes, ma_pa_free_cb_t free_cb, int64_t offset, ma_pa_seek_mode_t seek);
|
typedef int (* ma_pa_stream_write_proc )(ma_pa_stream* s, const void* data, size_t nbytes, ma_pa_free_cb_t free_cb, int64_t offset, ma_pa_seek_mode_t seek);
|
||||||
typedef int (* ma_pa_stream_peek_proc )(ma_pa_stream* s, const void** data, size_t* nbytes);
|
typedef int (* ma_pa_stream_peek_proc )(ma_pa_stream* s, const void** data, size_t* nbytes);
|
||||||
typedef int (* ma_pa_stream_drop_proc )(ma_pa_stream* s);
|
typedef int (* ma_pa_stream_drop_proc )(ma_pa_stream* s);
|
||||||
typedef size_t (* ma_pa_stream_writable_size_proc )(ma_pa_stream* s);
|
typedef size_t (* ma_pa_stream_writable_size_proc )(const ma_pa_stream* s);
|
||||||
typedef size_t (* ma_pa_stream_readable_size_proc )(ma_pa_stream* s);
|
typedef size_t (* ma_pa_stream_readable_size_proc )(const ma_pa_stream* s);
|
||||||
|
|
||||||
|
|
||||||
typedef struct ma_context_state_pulseaudio
|
typedef struct ma_context_state_pulseaudio
|
||||||
@@ -31547,7 +31547,7 @@ static ma_result ma_init_pa_mainloop_and_pa_context__pulseaudio(ma_context* pCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Now we need to connect to the context. Everything is asynchronous so we need to wait for it to connect before returning. */
|
/* Now we need to connect to the context. Everything is asynchronous so we need to wait for it to connect before returning. */
|
||||||
result = ma_result_from_pulseaudio(pContextStatePulseAudio->pa_context_connect(pPulseContext, pServerName, (tryAutoSpawn) ? 0 : MA_PA_CONTEXT_NOAUTOSPAWN, NULL));
|
result = ma_result_from_pulseaudio(pContextStatePulseAudio->pa_context_connect(pPulseContext, pServerName, (tryAutoSpawn) ? MA_PA_CONTEXT_NOFLAGS : MA_PA_CONTEXT_NOAUTOSPAWN, NULL));
|
||||||
if (result != MA_SUCCESS) {
|
if (result != MA_SUCCESS) {
|
||||||
ma_log_postf(ma_context_get_log(pContext), MA_LOG_LEVEL_ERROR, "[PulseAudio] Failed to connect PulseAudio context.");
|
ma_log_postf(ma_context_get_log(pContext), MA_LOG_LEVEL_ERROR, "[PulseAudio] Failed to connect PulseAudio context.");
|
||||||
pContextStatePulseAudio->pa_mainloop_free(pMainLoop);
|
pContextStatePulseAudio->pa_mainloop_free(pMainLoop);
|
||||||
@@ -31802,6 +31802,8 @@ static ma_result ma_context_init__pulseaudio(ma_context* pContext, const void* p
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
|
(void)pLog;
|
||||||
|
|
||||||
/* This strange assignment system is just for type safety. */
|
/* This strange assignment system is just for type safety. */
|
||||||
ma_pa_mainloop_new_proc _pa_mainloop_new = pa_mainloop_new;
|
ma_pa_mainloop_new_proc _pa_mainloop_new = pa_mainloop_new;
|
||||||
ma_pa_mainloop_free_proc _pa_mainloop_free = pa_mainloop_free;
|
ma_pa_mainloop_free_proc _pa_mainloop_free = pa_mainloop_free;
|
||||||
@@ -32429,7 +32431,7 @@ static ma_result ma_device_init__pulseaudio(ma_device* pDevice, const void* pDev
|
|||||||
const ma_pa_buffer_attr* pActualAttr = NULL;
|
const ma_pa_buffer_attr* pActualAttr = NULL;
|
||||||
const ma_pa_channel_map* pActualChannelMap = NULL;
|
const ma_pa_channel_map* pActualChannelMap = NULL;
|
||||||
ma_uint32 iChannel;
|
ma_uint32 iChannel;
|
||||||
ma_pa_stream_flags_t streamFlags;
|
int streamFlags;
|
||||||
|
|
||||||
if (pDeviceConfigPulseAudio == NULL) {
|
if (pDeviceConfigPulseAudio == NULL) {
|
||||||
defaultConfigPulseAudio = ma_device_config_pulseaudio_init();
|
defaultConfigPulseAudio = ma_device_config_pulseaudio_init();
|
||||||
@@ -32493,7 +32495,7 @@ static ma_result ma_device_init__pulseaudio(ma_device* pDevice, const void* pDev
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Use a default channel map. */
|
/* Use a default channel map. */
|
||||||
pContextStatePulseAudio->pa_channel_map_init_extend(&cmap, ss.channels, pDeviceConfigPulseAudio->channelMap);
|
pContextStatePulseAudio->pa_channel_map_init_extend(&cmap, ss.channels, (ma_pa_channel_map_def_t)pDeviceConfigPulseAudio->channelMap);
|
||||||
|
|
||||||
/* Use the requested sample rate if one was specified. */
|
/* Use the requested sample rate if one was specified. */
|
||||||
if (pDescriptorCapture->sampleRate != 0) {
|
if (pDescriptorCapture->sampleRate != 0) {
|
||||||
@@ -32550,7 +32552,7 @@ static ma_result ma_device_init__pulseaudio(ma_device* pDevice, const void* pDev
|
|||||||
streamFlags |= MA_PA_STREAM_DONT_MOVE;
|
streamFlags |= MA_PA_STREAM_DONT_MOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = pContextStatePulseAudio->pa_stream_connect_record(pDeviceStatePulseAudio->capture.pStream, devCapture, &attr, streamFlags);
|
error = pContextStatePulseAudio->pa_stream_connect_record(pDeviceStatePulseAudio->capture.pStream, devCapture, &attr, (ma_pa_stream_flags_t)streamFlags);
|
||||||
if (error != MA_PA_OK) {
|
if (error != MA_PA_OK) {
|
||||||
ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[PulseAudio] Failed to connect PulseAudio capture stream.");
|
ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[PulseAudio] Failed to connect PulseAudio capture stream.");
|
||||||
result = ma_result_from_pulseaudio(error);
|
result = ma_result_from_pulseaudio(error);
|
||||||
@@ -32653,7 +32655,7 @@ static ma_result ma_device_init__pulseaudio(ma_device* pDevice, const void* pDev
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Use a default channel map. */
|
/* Use a default channel map. */
|
||||||
pContextStatePulseAudio->pa_channel_map_init_extend(&cmap, ss.channels, pDeviceConfigPulseAudio->channelMap);
|
pContextStatePulseAudio->pa_channel_map_init_extend(&cmap, ss.channels, (ma_pa_channel_map_def_t)pDeviceConfigPulseAudio->channelMap);
|
||||||
|
|
||||||
|
|
||||||
/* Use the requested sample rate if one was specified. */
|
/* Use the requested sample rate if one was specified. */
|
||||||
@@ -32715,7 +32717,7 @@ static ma_result ma_device_init__pulseaudio(ma_device* pDevice, const void* pDev
|
|||||||
streamFlags |= MA_PA_STREAM_DONT_MOVE;
|
streamFlags |= MA_PA_STREAM_DONT_MOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = pContextStatePulseAudio->pa_stream_connect_playback(pDeviceStatePulseAudio->playback.pStream, devPlayback, &attr, streamFlags, NULL, NULL);
|
error = pContextStatePulseAudio->pa_stream_connect_playback(pDeviceStatePulseAudio->playback.pStream, devPlayback, &attr, (ma_pa_stream_flags_t)streamFlags, NULL, NULL);
|
||||||
if (error != MA_PA_OK) {
|
if (error != MA_PA_OK) {
|
||||||
ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[PulseAudio] Failed to connect PulseAudio playback stream.");
|
ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[PulseAudio] Failed to connect PulseAudio playback stream.");
|
||||||
result = ma_result_from_pulseaudio(error);
|
result = ma_result_from_pulseaudio(error);
|
||||||
@@ -33033,6 +33035,7 @@ typedef JackProcessCallback ma_JackProcessCallback;
|
|||||||
typedef JackBufferSizeCallback ma_JackBufferSizeCallback;
|
typedef JackBufferSizeCallback ma_JackBufferSizeCallback;
|
||||||
typedef JackShutdownCallback ma_JackShutdownCallback;
|
typedef JackShutdownCallback ma_JackShutdownCallback;
|
||||||
#define MA_JACK_DEFAULT_AUDIO_TYPE JACK_DEFAULT_AUDIO_TYPE
|
#define MA_JACK_DEFAULT_AUDIO_TYPE JACK_DEFAULT_AUDIO_TYPE
|
||||||
|
#define ma_JackNullOption JackNullOption
|
||||||
#define ma_JackNoStartServer JackNoStartServer
|
#define ma_JackNoStartServer JackNoStartServer
|
||||||
#define ma_JackPortIsInput JackPortIsInput
|
#define ma_JackPortIsInput JackPortIsInput
|
||||||
#define ma_JackPortIsOutput JackPortIsOutput
|
#define ma_JackPortIsOutput JackPortIsOutput
|
||||||
@@ -33047,6 +33050,7 @@ typedef int (* ma_JackProcessCallback) (ma_jack_nframes_t nframes, void* arg)
|
|||||||
typedef int (* ma_JackBufferSizeCallback)(ma_jack_nframes_t nframes, void* arg);
|
typedef int (* ma_JackBufferSizeCallback)(ma_jack_nframes_t nframes, void* arg);
|
||||||
typedef void (* ma_JackShutdownCallback) (void* arg);
|
typedef void (* ma_JackShutdownCallback) (void* arg);
|
||||||
#define MA_JACK_DEFAULT_AUDIO_TYPE "32 bit float mono audio"
|
#define MA_JACK_DEFAULT_AUDIO_TYPE "32 bit float mono audio"
|
||||||
|
#define ma_JackNullOption 0
|
||||||
#define ma_JackNoStartServer 1
|
#define ma_JackNoStartServer 1
|
||||||
#define ma_JackPortIsInput 1
|
#define ma_JackPortIsInput 1
|
||||||
#define ma_JackPortIsOutput 2
|
#define ma_JackPortIsOutput 2
|
||||||
@@ -33123,7 +33127,7 @@ static ma_result ma_context_open_client__jack(ma_context_state_jack* pContextSta
|
|||||||
maxClientNameSize = pContextStateJACK->jack_client_name_size(); /* Includes null terminator. */
|
maxClientNameSize = pContextStateJACK->jack_client_name_size(); /* Includes null terminator. */
|
||||||
ma_strncpy_s(clientName, ma_min(sizeof(clientName), maxClientNameSize), (pContextStateJACK->pClientName != NULL) ? pContextStateJACK->pClientName : "miniaudio", (size_t)-1);
|
ma_strncpy_s(clientName, ma_min(sizeof(clientName), maxClientNameSize), (pContextStateJACK->pClientName != NULL) ? pContextStateJACK->pClientName : "miniaudio", (size_t)-1);
|
||||||
|
|
||||||
pClient = pContextStateJACK->jack_client_open(clientName, (pContextStateJACK->tryStartServer) ? 0 : ma_JackNoStartServer, &status, NULL);
|
pClient = pContextStateJACK->jack_client_open(clientName, (pContextStateJACK->tryStartServer) ? ma_JackNullOption : ma_JackNoStartServer, &status, NULL);
|
||||||
if (pClient == NULL) {
|
if (pClient == NULL) {
|
||||||
return MA_FAILED_TO_OPEN_BACKEND_DEVICE;
|
return MA_FAILED_TO_OPEN_BACKEND_DEVICE;
|
||||||
}
|
}
|
||||||
@@ -33214,6 +33218,8 @@ static ma_result ma_context_init__jack(ma_context* pContext, const void* pContex
|
|||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
|
(void)pLog;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This strange assignment system is here just to ensure type safety of miniaudio's function pointer
|
This strange assignment system is here just to ensure type safety of miniaudio's function pointer
|
||||||
types. If anything differs slightly the compiler should throw a warning.
|
types. If anything differs slightly the compiler should throw a warning.
|
||||||
|
|||||||
Reference in New Issue
Block a user