Index: mythtv/libs/libmythtv/eithelper.cpp
===================================================================
--- mythtv.orig/libs/libmythtv/eithelper.cpp	2005-08-30 14:13:15.000000000 +0100
+++ mythtv/libs/libmythtv/eithelper.cpp	2005-10-03 20:40:45.000000000 +0100
@@ -39,17 +39,38 @@
 
 void EITHelper::ProcessEvents(int mplexid)
 {
-    while (GetListSize())
+    if (GetListSize())
     {
         eitList_lock.lock();
         QList_Events *events = eitList.first();
-        eitList.pop_front();
+        QList_Events *event_subset = new QList_Events;
+        bool clear_events = false;
+        if (events->size() <= 20)
+        {
+            eitList.pop_front();
+            clear_events = true;
+        }
+        else
+        {
+            for (int i=0; i<20; ++i)
+            {
+                event_subset->append(events->first());
+                events->pop_front();
+            }
+            events = event_subset;
+        }
         eitList_lock.unlock();
 
         UpdateEITList(mplexid, events);
 
-        events->clear();
-        delete events;
+        if (clear_events)
+        {
+            events->clear();
+            delete events;
+        }
+
+        event_subset->clear();
+        delete event_subset;
     }
 }
 
