mirror of https://github.com/mgba-emu/mgba.git
Util: Fix sockets on Windows
This commit is contained in:
parent
1ff9968a90
commit
c73ea2e595
1
CHANGES
1
CHANGES
|
@ -45,6 +45,7 @@ Bugfixes:
|
||||||
- Qt: Fix crash when adjusting settings after closing a game
|
- Qt: Fix crash when adjusting settings after closing a game
|
||||||
- Qt: Fix crash when starting GDB stub after closing a game
|
- Qt: Fix crash when starting GDB stub after closing a game
|
||||||
- Qt: Fix patch loading while a game is running
|
- Qt: Fix patch loading while a game is running
|
||||||
|
- Util: Fix sockets on Windows
|
||||||
Misc:
|
Misc:
|
||||||
- GBA Audio: Change internal audio sample buffer from 32-bit to 16-bit samples
|
- GBA Audio: Change internal audio sample buffer from 32-bit to 16-bit samples
|
||||||
- GBA Memory: Simplify memory API and use fixed bus width
|
- GBA Memory: Simplify memory API and use fixed bus width
|
||||||
|
|
|
@ -24,6 +24,8 @@ GBAApp::GBAApp(int& argc, char* argv[])
|
||||||
SDL_Init(SDL_INIT_NOPARACHUTE);
|
SDL_Init(SDL_INIT_NOPARACHUTE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
SocketSubsystemInit();
|
||||||
|
|
||||||
QApplication::setApplicationName(PROJECT_NAME);
|
QApplication::setApplicationName(PROJECT_NAME);
|
||||||
QApplication::setApplicationVersion(PROJECT_VERSION);
|
QApplication::setApplicationVersion(PROJECT_VERSION);
|
||||||
|
|
||||||
|
|
|
@ -42,18 +42,35 @@ struct Address {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void SocketSubsystemInitialize() {
|
static inline void SocketSubsystemInit() {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WSAStartup(MAKEWORD(2, 2), 0);
|
WSADATA data;
|
||||||
|
WSAStartup(MAKEWORD(2, 2), &data);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int SocketError() {
|
||||||
|
#ifdef _WIN32
|
||||||
|
return WSAGetLastError();
|
||||||
|
#else
|
||||||
|
return errno;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool SocketWouldBlock() {
|
||||||
|
#ifdef _WIN32
|
||||||
|
return SocketError() == WSAEWOULDBLOCK;
|
||||||
|
#else
|
||||||
|
return SocketError() == EWOULDBLOCK || SocketError() == EAGAIN;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline ssize_t SocketSend(Socket socket, const void* buffer, size_t size) {
|
static inline ssize_t SocketSend(Socket socket, const void* buffer, size_t size) {
|
||||||
return write(socket, buffer, size);
|
return send(socket, buffer, size, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline ssize_t SocketRecv(Socket socket, void* buffer, size_t size) {
|
static inline ssize_t SocketRecv(Socket socket, void* buffer, size_t size) {
|
||||||
return read(socket, buffer, size);
|
return recv(socket, buffer, size, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline Socket SocketOpenTCP(int port, const struct Address* bindAddress) {
|
static inline Socket SocketOpenTCP(int port, const struct Address* bindAddress) {
|
||||||
|
@ -87,7 +104,7 @@ static inline Socket SocketOpenTCP(int port, const struct Address* bindAddress)
|
||||||
}
|
}
|
||||||
if (err) {
|
if (err) {
|
||||||
close(sock);
|
close(sock);
|
||||||
return -1;
|
return INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
return sock;
|
return sock;
|
||||||
}
|
}
|
||||||
|
@ -123,7 +140,7 @@ static inline Socket SocketConnectTCP(int port, const struct Address* destinatio
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
close(sock);
|
close(sock);
|
||||||
return -1;
|
return INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
return sock;
|
return sock;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue