Index: libs/libmythtv/DVDRingBuffer.h
===================================================================
--- libs/libmythtv/DVDRingBuffer.h	(revision 9017)
+++ libs/libmythtv/DVDRingBuffer.h	(working copy)
@@ -55,7 +55,6 @@
     uint GetAudioLanguage(int id);
     uint GetSubtitleLanguage(int id);
     long long MenuSpuPts(void) { return menuspupts; }
-    int CellChange(void) { return cellChange; }
 
     // commands
     bool OpenFile(const QString &filename);
@@ -119,7 +118,6 @@
     bool           buttonSelected;
     bool           buttonExists;
     long long      menuspupts;
-    int            cellChange;
 
     NuppelVideoPlayer *parent;
 
Index: libs/libmythtv/avformatdecoder.cpp
===================================================================
--- libs/libmythtv/avformatdecoder.cpp	(revision 9017)
+++ libs/libmythtv/avformatdecoder.cpp	(working copy)
@@ -275,8 +275,7 @@
       // language preference
       languagePreference(iso639_get_language_key_list()),
       // DVD
-      lastdvdtitle(0), lastdvdpart(0),
-      lastdvdcellchange(0)
+      lastdvdtitle(0)
 {
     bzero(&params, sizeof(AVFormatParameters));
     bzero(prvpkt, 3 * sizeof(char));
@@ -2273,13 +2272,6 @@
             int dvdtitle  = 0;
             int dvdpart = 0;
             ringBuffer->DVD()->GetPartAndTitle(dvdtitle,dvdpart);
-            int dvdcellchange = ringBuffer->DVD()->CellChange();
-            if ((dvdtitle != lastdvdtitle || dvdpart != lastdvdpart || 
-                        dvdcellchange != lastdvdcellchange))
-            {
-                GetNVP()->GetOSD()->HideSet("subtitles");
-                GetNVP()->GetOSD()->ClearAll("subtitles");
-            }
             if (dvdtitle != lastdvdtitle)
             {
                 posmapStarted = false;
@@ -2292,8 +2284,6 @@
                             .arg(framesPlayed));
             }
             lastdvdtitle = dvdtitle;
-            lastdvdpart = dvdpart;
-            lastdvdcellchange = dvdcellchange;
             
             if (storedPackets.count() < 2 && !dvdvideopause)
                 storevideoframes = true;
Index: libs/libmythtv/DVDRingBuffer.cpp
===================================================================
--- libs/libmythtv/DVDRingBuffer.cpp	(revision 9017)
+++ libs/libmythtv/DVDRingBuffer.cpp	(working copy)
@@ -34,7 +34,7 @@
       skipstillorwait(true), spuStreamLetterbox(false),
       cellstartPos(0), buttonSelected(false), 
       buttonExists(false), menuspupts(0),
-      cellChange(0), parent(0)
+      parent(0)
 {
     dvdMenuButton = (AVSubtitleRect*)av_mallocz(sizeof(AVSubtitleRect));
 }
@@ -223,11 +223,13 @@
                 titleLength = length *DVD_BLOCK_SIZE;
                 cellstartPos = GetReadPosition();
                 buttonSelected = false; 
-                if (cellChange == 100)
-                    cellChange = 0;
-                else
-                    cellChange++;
 
+                if (parent)
+                {
+                    parent->GetOSD()->HideSet("subtitles");
+                    parent->GetOSD()->ClearAll("subtitles");
+                }
+
                 if (blockBuf != dvdBlockWriteBuf)
                 {
                     dvdnav_free_cache_block(dvdnav, blockBuf);
Index: libs/libmythtv/avformatdecoder.h
===================================================================
--- libs/libmythtv/avformatdecoder.h	(revision 9017)
+++ libs/libmythtv/avformatdecoder.h	(working copy)
@@ -257,8 +257,6 @@
 
     // DVD
     int lastdvdtitle;
-    int lastdvdpart;
-    int lastdvdcellchange;
 };
 
 #endif
