Index: libs/libmythui/mythmainwindow.cpp
===================================================================
--- libs/libmythui/mythmainwindow.cpp	(revision 12349)
+++ libs/libmythui/mythmainwindow.cpp	(working copy)
@@ -53,21 +53,6 @@
 
 #define GESTURE_TIMEOUT 1000
 
-#ifdef USE_LIRC
-static void *SpawnLirc(void *param)
-{
-    QString config_file = MythContext::GetConfDir() + "/lircrc";
-    if (!QFile::exists(config_file))
-        config_file = QDir::homeDirPath() + "/.lircrc";
-
-    LircClient *cl = new LircClient((MythMainWindow *)param);
-    if (!cl->Init(config_file, "mythtv"))
-        cl->Process();
-
-    return NULL;
-}
-#endif
-
 #ifdef USE_JOYSTICK_MENU
 static void *SpawnJoystickMenu(void *param)
 {
@@ -294,12 +279,18 @@
     installEventFilter(this);
 
 #ifdef USE_LIRC
-    pthread_t lirc_tid;
-    pthread_attr_t attr;
-    pthread_attr_init(&attr);
-    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+    QString lircrc = MythContext::GetConfDir() + "/lircrc";
+    if (!QFile::exists(lircrc))
+        lircrc = QDir::homeDirPath() + "/.lircrc";
 
-    pthread_create(&lirc_tid, &attr, SpawnLirc, this);
+    LircClient *lircClient = new LircClient(this);
+
+    if (!lircClient->Init(lircrc, "mythtv"))
+    {
+        lircClient->start();
+    } else {
+        delete lircClient;
+    }
 #endif
 
 #ifdef USE_JOYSTICK_MENU
Index: libs/libmyth/lirc.cpp
===================================================================
--- libs/libmyth/lirc.cpp	(revision 12349)
+++ libs/libmyth/lirc.cpp	(working copy)
@@ -61,7 +61,7 @@
     lirc_freeconfig(lircConfig);
 }
 
-void LircClient::Process(void)
+void LircClient::run()
 {
     char *code = 0;
     char *ir = 0;
@@ -105,6 +105,7 @@
     }
 }
 
+
 void LircClient::SpawnApp(void)
 {
     // Spawn app to thwap led (or what ever the user has picked if
@@ -122,3 +123,4 @@
     }
 }
 
+
Index: libs/libmyth/lirc.h
===================================================================
--- libs/libmyth/lirc.h	(revision 12349)
+++ libs/libmyth/lirc.h	(working copy)
@@ -5,24 +5,26 @@
 #include <qobject.h>
 #include <qsocket.h>
 #include <qstring.h>
+#include <qthread.h>
 
 #include "mythdialogs.h"
 
-class MPUBLIC LircClient : public QObject
+class MPUBLIC LircClient : public QObject, public QThread
 {
     Q_OBJECT
   public:
     LircClient(QObject *main_window);
     ~LircClient();
     int Init(const QString &config_file, const QString &program);
-    void Process(void);
 
+  protected:
+    void run();
+
   private:
     void SpawnApp(void);
 
     struct lirc_config *lircConfig;
     QObject *mainWindow;
-    pthread_t pth;
     QString external_app;
 };
 
