mirror of
https://git.suyu.dev/suyu/suyu
synced 2024-12-27 11:52:31 -06:00
sockets: avoid locking around socket session calls
This commit is contained in:
parent
6a5db5679b
commit
0cd9d51e06
3 changed files with 10 additions and 2 deletions
|
@ -79,8 +79,8 @@ protected:
|
||||||
using HandlerFnP = void (Self::*)(HLERequestContext&);
|
using HandlerFnP = void (Self::*)(HLERequestContext&);
|
||||||
|
|
||||||
/// Used to gain exclusive access to the service members, e.g. from CoreTiming thread.
|
/// Used to gain exclusive access to the service members, e.g. from CoreTiming thread.
|
||||||
[[nodiscard]] std::scoped_lock<std::mutex> LockService() {
|
[[nodiscard]] virtual std::unique_lock<std::mutex> LockService() {
|
||||||
return std::scoped_lock{lock_service};
|
return std::unique_lock{lock_service};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// System context that the service operates under.
|
/// System context that the service operates under.
|
||||||
|
|
|
@ -1029,6 +1029,11 @@ BSD::~BSD() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::unique_lock<std::mutex> BSD::LockService() {
|
||||||
|
// Do not lock socket IClient instances.
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
BSDCFG::BSDCFG(Core::System& system_) : ServiceFramework{system_, "bsdcfg"} {
|
BSDCFG::BSDCFG(Core::System& system_) : ServiceFramework{system_, "bsdcfg"} {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
static const FunctionInfo functions[] = {
|
static const FunctionInfo functions[] = {
|
||||||
|
|
|
@ -186,6 +186,9 @@ private:
|
||||||
|
|
||||||
// Callback identifier for the OnProxyPacketReceived event.
|
// Callback identifier for the OnProxyPacketReceived event.
|
||||||
Network::RoomMember::CallbackHandle<Network::ProxyPacket> proxy_packet_received;
|
Network::RoomMember::CallbackHandle<Network::ProxyPacket> proxy_packet_received;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual std::unique_lock<std::mutex> LockService() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class BSDCFG final : public ServiceFramework<BSDCFG> {
|
class BSDCFG final : public ServiceFramework<BSDCFG> {
|
||||||
|
|
Loading…
Reference in a new issue