diff options
Diffstat (limited to 'dev-libs/libcec/files/libcec-1.8.1-eintr-retry.patch')
-rw-r--r-- | dev-libs/libcec/files/libcec-1.8.1-eintr-retry.patch | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/dev-libs/libcec/files/libcec-1.8.1-eintr-retry.patch b/dev-libs/libcec/files/libcec-1.8.1-eintr-retry.patch new file mode 100644 index 000000000000..7b472d0aaf6b --- /dev/null +++ b/dev-libs/libcec/files/libcec-1.8.1-eintr-retry.patch @@ -0,0 +1,30 @@ +From 8f6c59829bb84edc66ce0edb0a4d5b7335a941c6 Mon Sep 17 00:00:00 2001 +From: Josef Fruehwirth <fruehwirth@gmail.com> +Date: Sat, 18 Aug 2012 14:07:04 +0200 +Subject: [PATCH] Retry m_port->Read(..) if an EINTR errror occurs instead of + closing the connection. + +--- + src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp b/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp +index 70e45ac..3fc05eb 100644 +--- a/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp ++++ b/src/lib/adapter/Pulse-Eight/USBCECAdapterCommunication.cpp +@@ -393,7 +393,11 @@ bool CUSBCECAdapterCommunication::ReadFromDevice(uint32_t iTimeout, size_t iSize + if (!IsOpen()) + return false; + +- iBytesRead = m_port->Read(buff, sizeof(uint8_t) * iSize, iTimeout); ++ do { ++ /* retry Read() if it was interrupted */ ++ iBytesRead = m_port->Read(buff, sizeof(uint8_t) * iSize, iTimeout); ++ } while(m_port->GetErrorNumber() == EINTR); ++ + + if (m_port->GetErrorNumber()) + { +-- +1.7.10 + |