diff options
Diffstat (limited to 'src/oss.c')
-rw-r--r-- | src/oss.c | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -499,3 +499,32 @@ int driver_cancel(ca_context *c, uint32_t id) { return CA_SUCCESS; } + +int driver_playing(ca_context *c, uint32_t id, int *playing) { + struct private *p; + struct outstanding *out; + + ca_return_val_if_fail(c, CA_ERROR_INVALID); + ca_return_val_if_fail(c->private, CA_ERROR_STATE); + ca_return_val_if_fail(playing, CA_ERROR_INVALID); + + p = PRIVATE(c); + + *playing = 0; + + ca_mutex_lock(p->outstanding_mutex); + + for (out = p->outstanding; out; out = out->next) { + + if (out->dead || + out->id != id) + continue; + + *playing = 1; + break; + } + + ca_mutex_unlock(p->outstanding_mutex); + + return CA_SUCCESS; +} |