[vlc-devel] commit: Added a live555 patch to try to fix the win32 port. (Laurent Aimar )
git version control
git at videolan.org
Mon Apr 20 20:35:11 CEST 2009
vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Fri Apr 17 21:19:35 2009 +0200| [20309727721b8fe63e0c1006a9fb253a0d5c4b9d] | committer: Laurent Aimar
Added a live555 patch to try to fix the win32 port.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=20309727721b8fe63e0c1006a9fb253a0d5c4b9d
---
extras/contrib/src/Makefile | 3 +
extras/contrib/src/Patches/live-win32.patch | 170 +++++++++++++++++++++++++++
2 files changed, 173 insertions(+), 0 deletions(-)
diff --git a/extras/contrib/src/Makefile b/extras/contrib/src/Makefile
index bf7905e..bfcae26 100644
--- a/extras/contrib/src/Makefile
+++ b/extras/contrib/src/Makefile
@@ -1270,6 +1270,9 @@ live: live555-$(LIVEDOTCOM_VERSION).tar.gz
$(EXTRACT_GZ)
patch -p0 < Patches/live-noapps.patch
patch -p0 < Patches/live-uselocale.patch
+ifdef HAVE_WIN32
+ patch -p0 < Patches/live-win32.patch
+endif
.live: live
ifdef HAVE_WIN32
diff --git a/extras/contrib/src/Patches/live-win32.patch b/extras/contrib/src/Patches/live-win32.patch
new file mode 100644
index 0000000..bb6393d
--- /dev/null
+++ b/extras/contrib/src/Patches/live-win32.patch
@@ -0,0 +1,170 @@
+Copyright (C) 2009 Laurent Aimar.
+Licensed under GNU General Public License version 2 or higher.
+diff -ur live/BasicUsageEnvironment/BasicTaskScheduler.cpp live-fix/BasicUsageEnvironment/BasicTaskScheduler.cpp
+--- live/BasicUsageEnvironment/BasicTaskScheduler.cpp 2009-04-07 04:18:59.000000000 +0200
++++ live-fix/BasicUsageEnvironment/BasicTaskScheduler.cpp 2009-04-16 00:33:19.000000000 +0200
+@@ -80,7 +80,7 @@
+ int dummySocketNum = socket(AF_INET, SOCK_DGRAM, 0);
+ FD_SET((unsigned)dummySocketNum, &fReadSet);
+ }
+- if (err != 0) {
++ if (err != EINTR) {
+ #else
+ if (errno != EINTR && errno != EAGAIN) {
+ #endif
+diff -ur live/BasicUsageEnvironment/BasicUsageEnvironment.cpp live-fix/BasicUsageEnvironment/BasicUsageEnvironment.cpp
+--- live/BasicUsageEnvironment/BasicUsageEnvironment.cpp 2009-04-07 04:18:59.000000000 +0200
++++ live-fix/BasicUsageEnvironment/BasicUsageEnvironment.cpp 2009-04-16 00:30:33.000000000 +0200
+@@ -61,6 +61,20 @@
+ #endif
+ }
+
++int BasicUsageEnvironment::getNetErrno() const {
++#if defined(__WIN32__) || defined(_WIN32)
++#ifndef _WIN32_WCE
++ errno = WSAGetLastError();
++#endif
++#endif
++#if defined(_WIN32_WCE)
++ return WSAGetLastError();
++#else
++ return errno;
++#endif
++}
++
++
+ UsageEnvironment& BasicUsageEnvironment::operator<<(char const* str) {
+ fprintf(stderr, "%s", str);
+ return *this;
+diff -ur live/BasicUsageEnvironment/include/BasicUsageEnvironment.hh live-fix/BasicUsageEnvironment/include/BasicUsageEnvironment.hh
+--- live/BasicUsageEnvironment/include/BasicUsageEnvironment.hh 2009-04-07 04:18:59.000000000 +0200
++++ live-fix/BasicUsageEnvironment/include/BasicUsageEnvironment.hh 2009-04-16 00:30:33.000000000 +0200
+@@ -30,6 +30,7 @@
+
+ // redefined virtual functions:
+ virtual int getErrno() const;
++ virtual int getNetErrno() const;
+
+ virtual UsageEnvironment& operator<<(char const* str);
+ virtual UsageEnvironment& operator<<(int i);
+diff -ur live/groupsock/GroupsockHelper.cpp live-fix/groupsock/GroupsockHelper.cpp
+--- live/groupsock/GroupsockHelper.cpp 2009-04-07 04:18:59.000000000 +0200
++++ live-fix/groupsock/GroupsockHelper.cpp 2009-04-16 00:30:33.000000000 +0200
+@@ -230,10 +230,13 @@
+ if (timeout != NULL && result == 0) {
+ break; // this is OK - timeout occurred
+ } else if (result <= 0) {
++ if (env.getNetErrno() == EINTR ||
+ #if defined(__WIN32__) || defined(_WIN32)
++ env.getNetErrno() == EWOULDBLOCK
+ #else
+- if (errno == EINTR || errno == EAGAIN) continue;
++ env.getNetErrno() == EAGAIN
+ #endif
++ ) continue;
+ socketErr(env, "select() error: ");
+ break;
+ }
+@@ -271,7 +274,7 @@
+ &addressSize);
+ if (bytesRead < 0) {
+ //##### HACK to work around bugs in Linux and Windows:
+- int err = env.getErrno();
++ int err = env.getNetErrno();
+ if (err == 111 /*ECONNREFUSED (Linux)*/
+ #if defined(__WIN32__) || defined(_WIN32)
+ // What a piece of crap Windows is. Sometimes
+@@ -432,7 +435,7 @@
+ if (setsockopt(socket, IPPROTO_IP, IP_ADD_MEMBERSHIP,
+ (const char*)&imr, sizeof (struct ip_mreq)) < 0) {
+ #if defined(__WIN32__) || defined(_WIN32)
+- if (env.getErrno() != 0) {
++ if (env.getNetErrno() != 0) {
+ // That piece-of-shit toy operating system (Windows) sometimes lies
+ // about setsockopt() failing!
+ #endif
+diff -ur live/groupsock/include/NetCommon.h live-fix/groupsock/include/NetCommon.h
+--- live/groupsock/include/NetCommon.h 2009-04-07 04:18:59.000000000 +0200
++++ live-fix/groupsock/include/NetCommon.h 2009-04-16 00:30:33.000000000 +0200
+@@ -36,6 +36,8 @@
+
+ #define closeSocket closesocket
+ #define EWOULDBLOCK WSAEWOULDBLOCK
++#define EINPROGRESS WSAEWOULDBLOCK
++#define EINTR WSAEINTR
+
+ #if defined(_WIN32_WCE)
+ #define NO_STRSTREAM 1
+diff -ur live/liveMedia/HTTPSink.cpp live-fix/liveMedia/HTTPSink.cpp
+--- live/liveMedia/HTTPSink.cpp 2009-04-07 04:19:00.000000000 +0200
++++ live-fix/liveMedia/HTTPSink.cpp 2009-04-16 00:30:33.000000000 +0200
+@@ -107,7 +107,7 @@
+ fClientSocket = accept(fSocket, (struct sockaddr*)&clientAddr,
+ &clientAddrLen);
+ if (fClientSocket < 0) {
+- int err = envir().getErrno();
++ int err = envir().getNetErrno();
+ if (err != EWOULDBLOCK) {
+ envir().setResultErrMsg("accept() failed: ");
+ return False;
+@@ -158,7 +158,7 @@
+ int sendResult
+ = send(fClientSocket, (char*)(&fBuffer[0]), frameSize, 0);
+ if (sendResult < 0) {
+- int err = envir().getErrno();
++ int err = envir().getNetErrno();
+ if (err != EWOULDBLOCK) {
+ // The client appears to have gone; close him down,
+ // and consider ourselves done:
+diff -ur live/liveMedia/RTSPClient.cpp live-fix/liveMedia/RTSPClient.cpp
+--- live/liveMedia/RTSPClient.cpp 2009-04-16 00:31:40.000000000 +0200
++++ live-fix/liveMedia/RTSPClient.cpp 2009-04-16 00:30:33.000000000 +0200
+@@ -1834,11 +1834,7 @@
+ makeSocketNonBlocking(fInputSocketNum);
+ }
+ if (connect(fInputSocketNum, (struct sockaddr*) &remoteName, sizeof remoteName) != 0) {
+-#if defined(__WIN32__) || defined(_WIN32)
+- if (errno != WSAEINPROGRESS && errno != WSAEWOULDBLOCK) {
+-#else
+- if (errno != EINPROGRESS) {
+-#endif
++ if (envir().getNetErrno() != EINPROGRESS && envir().getNetErrno() != EWOULDBLOCK) {
+ envir().setResultErrMsg("connect() failed: ");
+ break;
+ }
+diff -ur live/liveMedia/RTSPOverHTTPServer.cpp live-fix/liveMedia/RTSPOverHTTPServer.cpp
+--- live/liveMedia/RTSPOverHTTPServer.cpp 2009-04-07 04:19:00.000000000 +0200
++++ live-fix/liveMedia/RTSPOverHTTPServer.cpp 2009-04-16 00:30:33.000000000 +0200
+@@ -119,7 +119,7 @@
+ int clientSocket = accept(fServerSocket, (struct sockaddr*)&clientAddr,
+ &clientAddrLen);
+ if (clientSocket < 0) {
+- int err = envir().getErrno();
++ int err = envir().getNetErrno();
+ if (err != EWOULDBLOCK) {
+ envir().setResultErrMsg("accept() failed: ");
+ }
+diff -ur live/liveMedia/RTSPServer.cpp live-fix/liveMedia/RTSPServer.cpp
+--- live/liveMedia/RTSPServer.cpp 2009-04-07 04:19:00.000000000 +0200
++++ live-fix/liveMedia/RTSPServer.cpp 2009-04-16 00:30:33.000000000 +0200
+@@ -226,7 +226,7 @@
+ int clientSocket = accept(fServerSocket, (struct sockaddr*)&clientAddr,
+ &clientAddrLen);
+ if (clientSocket < 0) {
+- int err = envir().getErrno();
++ int err = envir().getNetErrno();
+ if (err != EWOULDBLOCK) {
+ envir().setResultErrMsg("accept() failed: ");
+ }
+diff -ur live/UsageEnvironment/include/UsageEnvironment.hh live-fix/UsageEnvironment/include/UsageEnvironment.hh
+--- live/UsageEnvironment/include/UsageEnvironment.hh 2009-04-07 04:18:59.000000000 +0200
++++ live-fix/UsageEnvironment/include/UsageEnvironment.hh 2009-04-16 00:30:33.000000000 +0200
+@@ -71,6 +71,7 @@
+
+ // 'errno'
+ virtual int getErrno() const = 0;
++ virtual int getNetErrno() const = 0;
+
+ // 'console' output:
+ virtual UsageEnvironment& operator<<(char const* str) = 0;
+
More information about the vlc-devel
mailing list