summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch30
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
+