diff --git a/src/xenia/apu/xma_context.h b/src/xenia/apu/xma_context.h index 558f63633..2351e706f 100644 --- a/src/xenia/apu/xma_context.h +++ b/src/xenia/apu/xma_context.h @@ -203,7 +203,16 @@ class XmaContext { virtual bool Work() { return false; }; virtual void Enable() {}; - virtual bool Block(bool poll) { return 0; }; + virtual bool Block(bool poll) { + std::unique_lock lock(lock_, std::try_to_lock); + if (!lock.owns_lock()) { + if (poll) { + return false; + } + lock.lock(); + } + return true; + } virtual void Clear() {}; virtual void Disable() {}; virtual void Release() {}; diff --git a/src/xenia/apu/xma_context_fake.cc b/src/xenia/apu/xma_context_fake.cc index c77f471d0..edb649992 100644 --- a/src/xenia/apu/xma_context_fake.cc +++ b/src/xenia/apu/xma_context_fake.cc @@ -139,17 +139,6 @@ void XmaContextFake::Enable() { set_is_enabled(true); } -bool XmaContextFake::Block(bool poll) { - if (!lock_.try_lock()) { - if (poll) { - return false; - } - lock_.lock(); - } - lock_.unlock(); - return true; -} - void XmaContextFake::Clear() { std::lock_guard lock(lock_); XELOGAPU("XmaContextFake: reset context {}", id()); diff --git a/src/xenia/apu/xma_context_fake.h b/src/xenia/apu/xma_context_fake.h index edf167e6e..62930e294 100644 --- a/src/xenia/apu/xma_context_fake.h +++ b/src/xenia/apu/xma_context_fake.h @@ -36,7 +36,6 @@ class XmaContextFake : public XmaContext { bool Work() override; void Enable() override; - bool Block(bool poll) override; void Clear() override; void Disable() override; void Release() override; diff --git a/src/xenia/apu/xma_context_master.cc b/src/xenia/apu/xma_context_master.cc index 34c73b4e3..0cf57c339 100644 --- a/src/xenia/apu/xma_context_master.cc +++ b/src/xenia/apu/xma_context_master.cc @@ -122,17 +122,6 @@ void XmaContextMaster::Enable() { set_is_enabled(true); } -bool XmaContextMaster::Block(bool poll) { - if (!lock_.try_lock()) { - if (poll) { - return false; - } - lock_.lock(); - } - lock_.unlock(); - return true; -} - void XmaContextMaster::Clear() { std::lock_guard lock(lock_); XELOGAPU("XmaContext: reset context {}", id()); diff --git a/src/xenia/apu/xma_context_master.h b/src/xenia/apu/xma_context_master.h index b1b5724da..e846751bd 100644 --- a/src/xenia/apu/xma_context_master.h +++ b/src/xenia/apu/xma_context_master.h @@ -38,7 +38,6 @@ class XmaContextMaster : public XmaContext { bool Work(); void Enable(); - bool Block(bool poll); void Clear(); void Disable(); void Release(); diff --git a/src/xenia/apu/xma_context_new.cc b/src/xenia/apu/xma_context_new.cc index a085211db..253206bff 100644 --- a/src/xenia/apu/xma_context_new.cc +++ b/src/xenia/apu/xma_context_new.cc @@ -208,17 +208,6 @@ bool XmaContextNew::Work() { void XmaContextNew::Enable() { set_is_enabled(true); } -bool XmaContextNew::Block(bool poll) { - if (!lock_.try_lock()) { - if (poll) { - return false; - } - lock_.lock(); - } - lock_.unlock(); - return true; -} - void XmaContextNew::Clear() { std::lock_guard lock(lock_); diff --git a/src/xenia/apu/xma_context_new.h b/src/xenia/apu/xma_context_new.h index 0b395888a..0f83f68b6 100644 --- a/src/xenia/apu/xma_context_new.h +++ b/src/xenia/apu/xma_context_new.h @@ -55,7 +55,6 @@ class XmaContextNew : public XmaContext { bool Work(); void Enable(); - bool Block(bool poll); void Clear(); void Disable(); void Release(); diff --git a/src/xenia/apu/xma_context_old.cc b/src/xenia/apu/xma_context_old.cc index 2c1218458..e940810ea 100644 --- a/src/xenia/apu/xma_context_old.cc +++ b/src/xenia/apu/xma_context_old.cc @@ -123,17 +123,6 @@ void XmaContextOld::Enable() { set_is_enabled(true); } -bool XmaContextOld::Block(bool poll) { - if (!lock_.try_lock()) { - if (poll) { - return false; - } - lock_.lock(); - } - lock_.unlock(); - return true; -} - void XmaContextOld::Clear() { std::lock_guard lock(lock_); XELOGAPU("XmaContext: reset context {}", id()); diff --git a/src/xenia/apu/xma_context_old.h b/src/xenia/apu/xma_context_old.h index 736b961a0..a16c8ada6 100644 --- a/src/xenia/apu/xma_context_old.h +++ b/src/xenia/apu/xma_context_old.h @@ -38,7 +38,6 @@ class XmaContextOld : public XmaContext { bool Work(); void Enable(); - bool Block(bool poll); void Clear(); void Disable(); void Release();