diff options
author | Chris Robinson <[email protected]> | 2013-10-28 05:10:28 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2013-10-28 05:10:28 -0700 |
commit | f065700ef925048d28d7db3bd4d9225e7aa21cc7 (patch) | |
tree | 8a45643264ff871f2f3309e49213bf91112943a5 /Alc | |
parent | e54983694bc43a0f1a7ebb4ed0aeb78a1f2d36ab (diff) |
Move the lock/unlock methods to the backend
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/ALc.c | 45 | ||||
-rw-r--r-- | Alc/backends/base.h | 12 |
2 files changed, 57 insertions, 0 deletions
@@ -153,6 +153,18 @@ static ALint64 BackendWrapper_getLatency(BackendWrapper *self) return device->Funcs->GetLatency(device); } +static void BackendWrapper_lock(BackendWrapper *self) +{ + ALCdevice *device = STATIC_CAST(ALCbackend, self)->mDevice; + return device->Funcs->Lock(device); +} + +static void BackendWrapper_unlock(BackendWrapper *self) +{ + ALCdevice *device = STATIC_CAST(ALCbackend, self)->mDevice; + return device->Funcs->Unlock(device); +} + static void BackendWrapper_Delete(BackendWrapper *self) { free(self); @@ -1414,11 +1426,44 @@ ALint64 ALCdevice_GetLatencyDefault(ALCdevice *UNUSED(device)) return 0; } + ALint64 alcGetLatency(ALCdevice *device) { return VCALL0(device->Backend,getLatency,()); } +void ALCdevice_Lock(ALCdevice *device) +{ + return VCALL0(device->Backend,lock,()); +} + +void ALCdevice_Unlock(ALCdevice *device) +{ + return VCALL0(device->Backend,unlock,()); +} + +void LockContext(ALCcontext *context) +{ + VCALL0(context->Device->Backend,lock,()); +} + +void UnlockContext(ALCcontext *context) +{ + VCALL0(context->Device->Backend,unlock,()); +} + + +void ALCbackend_lock(ALCbackend *self) +{ + ALCdevice_LockDefault(self->mDevice); +} + +void ALCbackend_unlock(ALCbackend *self) +{ + ALCdevice_UnlockDefault(self->mDevice); +} + + /* SetDefaultWFXChannelOrder * * Sets the default channel order used by WaveFormatEx. diff --git a/Alc/backends/base.h b/Alc/backends/base.h index 9cc0d66b..ed690f56 100644 --- a/Alc/backends/base.h +++ b/Alc/backends/base.h @@ -12,6 +12,9 @@ typedef struct ALCbackend { ALCdevice *mDevice; } ALCbackend; +void ALCbackend_lock(ALCbackend *self); +void ALCbackend_unlock(ALCbackend *self); + struct ALCbackendVtable { void (*const Destruct)(ALCbackend *state); @@ -24,6 +27,9 @@ struct ALCbackendVtable { ALint64 (*getLatency)(ALCbackend*); + void (*lock)(ALCbackend*); + void (*unlock)(ALCbackend*); + void (*const Delete)(ALCbackend *state); }; @@ -42,6 +48,10 @@ static void T##_ALCbackend_stop(ALCbackend *obj) \ { T##_stop(STATIC_UPCAST(T, ALCbackend, obj)); } \ static ALint64 T##_ALCbackend_getLatency(ALCbackend *obj) \ { return T##_getLatency(STATIC_UPCAST(T, ALCbackend, obj)); } \ +static void T##_ALCbackend_lock(ALCbackend *obj) \ +{ T##_lock(STATIC_UPCAST(T, ALCbackend, obj)); } \ +static void T##_ALCbackend_unlock(ALCbackend *obj) \ +{ T##_unlock(STATIC_UPCAST(T, ALCbackend, obj)); } \ static void T##_ALCbackend_Delete(ALCbackend *obj) \ { T##_Delete(STATIC_UPCAST(T, ALCbackend, obj)); } \ \ @@ -54,6 +64,8 @@ static const struct ALCbackendVtable T##_ALCbackend_vtable = { \ T##_ALCbackend_start, \ T##_ALCbackend_stop, \ T##_ALCbackend_getLatency, \ + T##_ALCbackend_lock, \ + T##_ALCbackend_unlock, \ \ T##_ALCbackend_Delete, \ } |