diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 165fbbbd..897500ba 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2858,6 +2858,8 @@ Lars Hanisch for reporting an invalid line in channels.conf.terr for fixing handling '/' and '~' in recording file names in case DirectoryEncoding is used + for making the LIRC remote control connect to the socket even if it doesn't yet exist + when VDR is started Alex Lasnier for adding tuning support for ATSC devices diff --git a/HISTORY b/HISTORY index bfb001d1..ceca580d 100644 --- a/HISTORY +++ b/HISTORY @@ -8032,7 +8032,7 @@ Video Disk Recorder Revision History the last replayed recording (if any) by pressing Ok repeatedly in the Recordings menu. -2013-10-21: Version 2.1.3 +2013-10-29: Version 2.1.3 - Changed the return value of cPositioner::HorizonLongitude() to 0 in case the latitude of the antenna location is beyond +/-81 degrees. @@ -8044,3 +8044,5 @@ Video Disk Recorder Revision History user is prompted for confirmation to overwrite it (suggested by Rolf Ahrenberg). - Revoked "Added maximum signal strength value for TechniSat SkyStar 2 DVB-S rev 2.3P" because it broke things for the "TechniSat AirStar 2" DVB-T card. +- The LIRC remote control now connects to the socket even if it doesn't yet exist when + VDR is started (thanks to Lars Hanisch). diff --git a/lirc.c b/lirc.c index e02f2296..2b0c07b1 100644 --- a/lirc.c +++ b/lirc.c @@ -6,7 +6,7 @@ * * LIRC support added by Carsten Koch 2000-06-16. * - * $Id: lirc.c 3.1 2013/08/22 09:22:14 kls Exp $ + * $Id: lirc.c 3.2 2013/10/29 12:32:12 kls Exp $ */ #include "lirc.h" @@ -21,11 +21,9 @@ cLircRemote::cLircRemote(const char *DeviceName) { addr.sun_family = AF_UNIX; strcpy(addr.sun_path, DeviceName); - if (Connect()) { - Start(); - return; - } - f = -1; + if (!Connect()) + f = -1; + Start(); } cLircRemote::~cLircRemote() @@ -67,14 +65,15 @@ void cLircRemote::Action(void) bool repeat = false; int timeout = -1; - while (Running() && f >= 0) { + while (Running()) { - bool ready = cFile::FileReady(f, timeout); + bool ready = f >= 0 && cFile::FileReady(f, timeout); int ret = ready ? safe_read(f, buf, sizeof(buf)) : -1; - if (ready && ret <= 0 ) { + if (f < 0 || ready && ret <= 0) { esyslog("ERROR: lircd connection broken, trying to reconnect every %.1f seconds", float(RECONNECTDELAY) / 1000); - close(f); + if (f >= 0) + close(f); f = -1; while (Running() && f < 0) { cCondWait::SleepMs(RECONNECTDELAY);