diff src/lirc/lirc.c @ 2277:5e54ffc4f46f

Apply lirc patch from bugzilla. (Bugzilla #62).
author Andrew O. Shadoura <bugzilla@tut.by>
date Tue, 01 Jan 2008 16:03:44 -0600
parents 5e88191720a7
children 738914331374
line wrap: on
line diff
--- a/src/lirc/lirc.c	Thu Dec 27 20:50:05 2007 +0100
+++ b/src/lirc/lirc.c	Tue Jan 01 16:03:44 2008 -0600
@@ -46,13 +46,15 @@
 
 #include "lirc.h"
 
+#include "common.h"
+
 const char *plugin_name="LIRC Plugin";
 
 GeneralPlugin lirc_plugin = {
     .description = "LIRC Plugin",
     .init = init,
     .about = about,
-    .configure = NULL,
+    .configure = configure,
     .cleanup = cleanup
 };
 
@@ -67,7 +69,7 @@
 
 gint input_tag;
 
-void init(void)
+void init_lirc(void)
 {
 	int flags;
 	
@@ -98,6 +100,19 @@
 	fflush(stdout);
 }
 
+void init(void)
+{
+	load_cfg();
+	init_lirc();
+}
+
+gboolean reconnect_lirc(gpointer data)
+{
+	fprintf(stderr,_("%s: trying to reconnect...\n"),plugin_name);
+	init();
+	return (lirc_fd==-1);
+}
+
 void lirc_input_callback(gpointer data,gint source,
 			 GdkInputCondition condition)
 {
@@ -304,7 +319,11 @@
 		/* something went badly wrong */
 		fprintf(stderr,_("%s: disconnected from LIRC\n"),plugin_name);
 		cleanup();
-		return;
+		if(b_enable_reconnect)
+		{
+			fprintf(stderr,_("%s: will try reconnect every %d seconds...\n"),plugin_name,reconnect_timeout);
+			g_timeout_add(1000*reconnect_timeout, reconnect_lirc, NULL);
+		}
 	}
 }