From badb651b79665d11fdbf93aeea62136e44badc99 Mon Sep 17 00:00:00 2001 From: David Reid Date: Sun, 14 Jun 2020 20:32:52 +1000 Subject: [PATCH] Add next() and peek() APIs for messages to the resource manager. This is in preparation for self-managed message handling. --- research/ma_engine.h | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/research/ma_engine.h b/research/ma_engine.h index 84da1d9e..50cde8ad 100644 --- a/research/ma_engine.h +++ b/research/ma_engine.h @@ -356,6 +356,8 @@ MA_API ma_result ma_resource_manager_data_source_get_looping(ma_resource_manager /* Message handling. */ MA_API ma_result ma_resource_manager_handle_message(ma_resource_manager* pResourceManager, const ma_resource_manager_message* pMessage); MA_API ma_result ma_resource_manager_post_message(ma_resource_manager* pResourceManager, const ma_resource_manager_message* pMessage); /* Message will be copied. */ +MA_API ma_result ma_resource_manager_next_message(ma_resource_manager* pResourceManager, ma_resource_manager_message* pMessage); +MA_API ma_result ma_resource_manager_peek_message(ma_resource_manager* pResourceManager, ma_resource_manager_message* pMessage); /* @@ -1256,7 +1258,7 @@ static ma_thread_result MA_THREADCALL ma_resource_manager_resource_thread(void* ma_result result; ma_resource_manager_message message; - result = ma_resource_manager_message_queue_next(&pResourceManager->messageQueue, &message); + result = ma_resource_manager_next_message(pResourceManager, &message); if (result != MA_SUCCESS) { break; } @@ -3292,13 +3294,31 @@ MA_API ma_result ma_resource_manager_handle_message(ma_resource_manager* pResour MA_API ma_result ma_resource_manager_post_message(ma_resource_manager* pResourceManager, const ma_resource_manager_message* pMessage) { - if (pResourceManager == NULL || pMessage == NULL) { + if (pResourceManager == NULL) { return MA_INVALID_ARGS; } return ma_resource_manager_message_queue_post(&pResourceManager->messageQueue, pMessage); } +MA_API ma_result ma_resource_manager_next_message(ma_resource_manager* pResourceManager, ma_resource_manager_message* pMessage) +{ + if (pResourceManager == NULL) { + return MA_INVALID_ARGS; + } + + return ma_resource_manager_message_queue_next(&pResourceManager, pMessage); +} + +MA_API ma_result ma_resource_manager_peek_message(ma_resource_manager* pResourceManager, ma_resource_manager_message* pMessage) +{ + if (pResourceManager == NULL) { + return MA_INVALID_ARGS; + } + + return ma_resource_manager_message_queue_peek(&pResourceManager, pMessage); +} +