Index: libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- libs/libmythtv/NuppelVideoPlayer.cpp	(revision 11452)
+++ libs/libmythtv/NuppelVideoPlayer.cpp	(working copy)
@@ -2474,6 +2474,12 @@
             }
         }
     }
+    else 
+    {
+        OSD *osd = GetOSD();
+        if (osd)
+            osd->HideSet("interactive");
+    }
 
     // handle EIA-608 and Teletext
     if (textDisplayMode & kDisplayNUVCaptions)
@@ -5835,7 +5841,7 @@
         if (GetInteractiveTV())
             interactiveTV->Restart(chanid, cardid, isLiveTV);
     }
-       
+    
     osd->ClearAll("interactive");
     itvosd->Display();
     osd->SetVisible(itvosd, 0);
Index: libs/libmythtv/osdsurface.h
===================================================================
--- libs/libmythtv/osdsurface.h	(revision 11452)
+++ libs/libmythtv/osdsurface.h	(working copy)
@@ -24,6 +24,7 @@
 
     void Clear(void);
     void ClearUsed(void);
+    bool IsClear();
 
     bool IntersectsDrawn(QRect &newrect);
     void AddRect(QRect &newrect);
Index: libs/libmythtv/osd.h
===================================================================
--- libs/libmythtv/osd.h	(revision 11452)
+++ libs/libmythtv/osd.h	(working copy)
@@ -60,6 +60,8 @@
 
     OSDSurface *Display(void);
 
+    OSDSurface *GetDisplaySurface(void);
+
     void ClearAll(const QString &name);
     void ClearAllText(const QString &name);
     void SetText(const QString &name, QMap<QString, QString> &infoMap,
Index: libs/libmythtv/videoout_xv.cpp
===================================================================
--- libs/libmythtv/videoout_xv.cpp	(revision 11452)
+++ libs/libmythtv/videoout_xv.cpp	(working copy)
@@ -2859,7 +2859,7 @@
         VideoFrame *osdframe = NULL;
         int ret = DisplayOSD(xvmc_osd->OSDFrame(), osd, -1,
                              xvmc_osd->GetRevision());
-        OSDSurface *osdsurf = osd->Display();
+        OSDSurface *osdsurf = osd->GetDisplaySurface();
         if (osdsurf)
             xvmc_osd->SetRevision(osdsurf->GetRevision());
         if (ret >= 0 && xvmc_osd->NeedFrame())
Index: libs/libmythtv/osdsurface.cpp
===================================================================
--- libs/libmythtv/osdsurface.cpp	(revision 11452)
+++ libs/libmythtv/osdsurface.cpp	(working copy)
@@ -135,6 +135,11 @@
     usedRegions = QRegion();
 }
 
+bool OSDSurface::IsClear(void)
+{
+    return (usedRegions == QRegion());
+}
+
 bool OSDSurface::IntersectsDrawn(QRect &newrect)
 {
     QMutexLocker lock(&usedRegionsLock);
@@ -799,7 +804,7 @@
 
         if (startline < 0) startline = 0;
         if (endline >= height) endline = height - 1;
-        if (startcol < 0) endcol = 0;
+        if (startcol < 0) startcol = 0;
         if (endcol >= width) endcol = width - 1;
 
         unsigned char *src;
Index: libs/libmythtv/osd.cpp
===================================================================
--- libs/libmythtv/osd.cpp	(revision 11452)
+++ libs/libmythtv/osd.cpp	(working copy)
@@ -2474,6 +2474,11 @@
     totalfadetime = 0;
 }
 
+OSDSurface *OSD::GetDisplaySurface(void)
+{
+    return drawSurface;
+}
+
 OSDSurface *OSD::Display(void)
 {
     bool anytodisplay = false;
@@ -2545,7 +2550,7 @@
 
     m_setsvisible = anytodisplay;
 
-    if (m_setsvisible)
+    if (m_setsvisible && !drawSurface->IsClear())
         return drawSurface;
 
     return NULL;
Index: contrib/myth.rebuilddatabase.pl
===================================================================
--- contrib/myth.rebuilddatabase.pl	(revision 11452)
+++ contrib/myth.rebuilddatabase.pl	(working copy)
@@ -357,16 +357,15 @@
         $newsubtitle = GetAnswer("... subtitle", $newsubtitle);
         $newdescription = GetAnswer("Description", $newdescription);
         $starttime = GetAnswer("... start time (YYYY-MM-DD HH:MM:SS)", $starttime);
+    }
 
-        if ($endtime) {
-            $duration = (str2time($endtime) - str2time($starttime)) / 60;
-        } else {
-            $duration = "60";
-        }
-        $duration = GetAnswer("... duration (in minutes)", $duration);
-        $endtime = time_format("yyyy-mm{on}-dd hh:mm{in}:ss", str2time($starttime) + $duration * 60);
-
+    if ($endtime) {
+        $duration = (str2time($endtime) - str2time($starttime)) / 60;
+    } else {
+        $duration = "60";
     }
+    $duration = GetAnswer("... duration (in minutes)", $duration);
+    $endtime = time_format("yyyy-mm{on}-dd hh:mm{in}:ss", str2time($starttime) + $duration * 60);
 
     if ($norename) {
         $mythfile = $showBase;
