--- mythtv/libs/libmythtv/mpegrecorder.cpp	2008-02-22 19:50:28.000000000 -0700
+++ mythtv-cx18/libs/libmythtv/mpegrecorder.cpp	2008-02-26 19:47:53.000000000 -0700
@@ -860,28 +860,33 @@
 #if defined(__FreeBSD__)
         // HACK. FreeBSD PVR150/500 driver doesn't currently support select()
 #else
-        switch (select(readfd + 1, &rdset, NULL, NULL, &tv))
+	// The following is a workaround until the cx18 driver
+	// doesn't timeout in select()
+        if (driver != "cx18")
         {
-            case -1:
-                if (errno == EINTR)
-                    continue;
-
-                VERBOSE(VB_IMPORTANT, LOC_ERR + "Select error" + ENO);
-                continue;
+            switch (select(readfd + 1, &rdset, NULL, NULL, &tv))
+            {
+                case -1:
+                     if (errno == EINTR)
+                         continue;
 
-            case 0:
-                VERBOSE(VB_IMPORTANT, LOC_ERR + "select timeout - "
-                        "ivtv driver has stopped responding");
+                    VERBOSE(VB_IMPORTANT, LOC_ERR + "Select error" + ENO);
+                    continue;
 
-                if (close(readfd) != 0)
-                {
-                    VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO);
-                }
+                case 0:
+                    VERBOSE(VB_IMPORTANT, LOC_ERR + "select timeout - "
+                            "ivtv driver has stopped responding");
+
+                    if (close(readfd) != 0)
+                    {
+                        VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO);
+                    }
 
-                readfd = -1; // Force PVR card to be reopened on next iteration
-                continue;
+                    readfd = -1; // Force PVR card to be reopened on next iteration
+                    continue;
 
-           default: break;
+                default: break;
+            }
         }
 #endif
 
