Skip to content

Commit 60d757a

Browse files
committed
Return result codes from step/wait/loop callbacks.
1 parent df79b33 commit 60d757a

File tree

3 files changed

+39
-15
lines changed

3 files changed

+39
-15
lines changed

extras/backends/pipewire/miniaudio_pipewire.c

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ static ma_device_state_pipewire* ma_device_get_backend_state__pipewire(ma_device
463463
}
464464

465465

466-
static void ma_device_step__pipewire(ma_device* pDevice);
466+
static ma_result ma_device_step__pipewire(ma_device* pDevice);
467467

468468

469469
static void ma_backend_info__pipewire(ma_device_backend_info* pBackendInfo)
@@ -1570,7 +1570,7 @@ static ma_result ma_device_stop__pipewire(ma_device* pDevice)
15701570
}
15711571

15721572

1573-
static void ma_device_wait__pipewire(ma_device* pDevice)
1573+
static ma_result ma_device_wait__pipewire(ma_device* pDevice)
15741574
{
15751575
ma_device_state_pipewire* pDeviceStatePipeWire = ma_device_get_backend_state__pipewire(pDevice);
15761576
ma_context_state_pipewire* pContextStatePipeWire = ma_context_get_backend_state__pipewire(ma_device_get_context(pDevice));
@@ -1581,12 +1581,12 @@ static void ma_device_wait__pipewire(ma_device* pDevice)
15811581

15821582
if (deviceType == ma_device_type_capture || deviceType == ma_device_type_duplex) {
15831583
if (ma_pcm_rb_available_read(&pDeviceStatePipeWire->capture.rb) > 0) {
1584-
return;
1584+
return MA_SUCCESS;
15851585
}
15861586
}
15871587
if (deviceType == ma_device_type_playback || deviceType == ma_device_type_duplex) {
15881588
if (ma_pcm_rb_available_write(&pDeviceStatePipeWire->playback.rb) > 0) {
1589-
return;
1589+
return MA_SUCCESS;
15901590
}
15911591
}
15921592

@@ -1601,9 +1601,11 @@ static void ma_device_wait__pipewire(ma_device* pDevice)
16011601
break;
16021602
}
16031603
}
1604+
1605+
return MA_SUCCESS;
16041606
}
16051607

1606-
static void ma_device_step__pipewire(ma_device* pDevice)
1608+
static ma_result ma_device_step__pipewire(ma_device* pDevice)
16071609
{
16081610
ma_device_state_pipewire* pDeviceStatePipeWire = ma_device_get_backend_state__pipewire(pDevice);
16091611
ma_context_state_pipewire* pContextStatePipeWire = ma_context_get_backend_state__pipewire(ma_device_get_context(pDevice));
@@ -1668,19 +1670,27 @@ static void ma_device_step__pipewire(ma_device* pDevice)
16681670
}
16691671
}
16701672
}
1673+
1674+
return MA_SUCCESS;
16711675
}
16721676

16731677
static void ma_device_loop__pipewire(ma_device* pDevice)
16741678
{
16751679
for (;;) {
1676-
ma_device_wait__pipewire(pDevice);
1680+
ma_result result = ma_device_wait__pipewire(pDevice);
1681+
if (result != MA_SUCCESS) {
1682+
break;
1683+
}
16771684

16781685
/* If the wait terminated due to the device being stopped, abort now. */
16791686
if (!ma_device_is_started(pDevice)) {
16801687
break;
16811688
}
16821689

1683-
ma_device_step__pipewire(pDevice);
1690+
result = ma_device_step__pipewire(pDevice);
1691+
if (result != MA_SUCCESS) {
1692+
break;
1693+
}
16841694
}
16851695
}
16861696

extras/backends/sdl/backend_sdl.c

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ static ma_device_state_sdl* ma_device_get_backend_state__sdl(ma_device* pDevice)
169169
}
170170

171171

172-
static void ma_device_step__sdl(ma_device* pDevice);
172+
static ma_result ma_device_step__sdl(ma_device* pDevice);
173173

174174

175175
static void ma_backend_info__sdl(ma_device_backend_info* pBackendInfo)
@@ -593,29 +593,39 @@ static ma_result ma_device_stop__sdl(ma_device* pDevice)
593593
}
594594

595595

596-
static void ma_device_wait__sdl(ma_device* pDevice)
596+
static ma_result ma_device_wait__sdl(ma_device* pDevice)
597597
{
598598
ma_device_state_sdl* pDeviceStateSDL = ma_device_get_backend_state__sdl(pDevice);
599599
ma_device_state_async_wait(&pDeviceStateSDL->async);
600+
601+
return MA_SUCCESS;
600602
}
601603

602-
static void ma_device_step__sdl(ma_device* pDevice)
604+
static ma_result ma_device_step__sdl(ma_device* pDevice)
603605
{
604606
ma_device_state_sdl* pDeviceStateSDL = ma_device_get_backend_state__sdl(pDevice);
605607
ma_device_state_async_step(&pDeviceStateSDL->async, pDevice);
608+
609+
return MA_SUCCESS;
606610
}
607611

608612
static void ma_device_loop__sdl(ma_device* pDevice)
609613
{
610614
for (;;) {
611-
ma_device_wait__sdl(pDevice);
615+
ma_result result = ma_device_wait__sdl(pDevice);
616+
if (result != MA_SUCCESS) {
617+
break;
618+
}
612619

613620
/* If the wait terminated due to the device being stopped, abort now. */
614621
if (!ma_device_is_started(pDevice)) {
615622
break;
616623
}
617624

618-
ma_device_step__sdl(pDevice);
625+
result = ma_device_step__sdl(pDevice);
626+
if (result != MA_SUCCESS) {
627+
break;
628+
}
619629
}
620630
}
621631

miniaudio.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21174,7 +21174,7 @@ static ma_uint32 ma_device_get_available_frames__null(ma_device* pDevice)
2117421174
}
2117521175
}
2117621176

21177-
static void ma_device_wait__null(ma_device* pDevice)
21177+
static ma_result ma_device_wait__null(ma_device* pDevice)
2117821178
{
2117921179
while (ma_device_is_started(pDevice)) {
2118021180
/* Check the frames available based on the timer. We want to wait until we have at least a whole period available. */
@@ -21184,9 +21184,11 @@ static void ma_device_wait__null(ma_device* pDevice)
2118421184

2118521185
ma_sleep(1);
2118621186
}
21187+
21188+
return MA_SUCCESS;
2118721189
}
2118821190

21189-
static void ma_device_step__null(ma_device* pDevice)
21191+
static ma_result ma_device_step__null(ma_device* pDevice)
2119021192
{
2119121193
ma_device_state_null* pDeviceStateNull = ma_device_get_backend_state__null(pDevice);
2119221194
ma_uint32 framesAvailable;
@@ -21199,7 +21201,7 @@ static void ma_device_step__null(ma_device* pDevice)
2119921201
framesAvailable = ma_device_get_available_frames__null(pDevice);
2120021202
if (framesAvailable == 0) {
2120121203
/* Not enough frames available for processing. Do nothing. */
21202-
return;
21204+
return MA_SUCCESS;
2120321205
}
2120421206

2120521207
/* For capture we need to submit silence. For playback we just read and discard. */
@@ -21212,6 +21214,8 @@ static void ma_device_step__null(ma_device* pDevice)
2121221214

2121321215
/* The cursor needs to be advanced by the number of frames we just processed. */
2121421216
pDeviceStateNull->cursor += framesAvailable;
21217+
21218+
return MA_SUCCESS;
2121521219
}
2121621220

2121721221
static void ma_device_loop__null(ma_device* pDevice)

0 commit comments

Comments
 (0)