mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-10-26 18:09:20 +00:00
macoS: update QoSSession with SO_NET_SERVICE_TYPE.
macOS does not support `SO_PRIORITY` on sockets, but it does apparently support configuring sockets with a priority flag via a parameter called `SO_NET_SERVICE_TYPE`. It doesn't appear to be especially well documented, but it seems to exist as far back as 10.11 (El Capitan). This patch sets QoSSession to treat connections as "responsive multimedia audio/video", which some docs appear to describe as "low delay tolerant, low-medium, loss tolerant, elastic flow, variable packet interval, rate and size".
This commit is contained in:
parent
79614956f3
commit
5a6730ab4e
1 changed files with 9 additions and 0 deletions
|
|
@ -54,6 +54,15 @@ QoSSession::~QoSSession()
|
||||||
#else
|
#else
|
||||||
QoSSession::QoSSession(ENetPeer* peer, int tos_val)
|
QoSSession::QoSSession(ENetPeer* peer, int tos_val)
|
||||||
{
|
{
|
||||||
|
// Apple systems don't support SO_PRIORITY on BSD sockets, but they do support a flag for
|
||||||
|
// marking sockets as a specific type of traffic. `NET_SERVICE_TYPE_RV` should roughly
|
||||||
|
// correspond to "low delay tolerant, low-medium loss tolerant, elastic flow, variable
|
||||||
|
// packet interval, rate and size".
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
constexpr int srv_type = NET_SERVICE_TYPE_RV;
|
||||||
|
setsockopt(peer->host->socket, SOL_SOCKET, SO_NET_SERVICE_TYPE, &srv_type, sizeof(srv_type));
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
constexpr int priority = 7;
|
constexpr int priority = 7;
|
||||||
setsockopt(peer->host->socket, SOL_SOCKET, SO_PRIORITY, &priority, sizeof(priority));
|
setsockopt(peer->host->socket, SOL_SOCKET, SO_PRIORITY, &priority, sizeof(priority));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue