gentoo-full-overlay/dev-libs/libcec/files/libcec-1.8.1-eintr-retry.patch

30 lines
1.1 KiB
Diff

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