Index: libs/libmythtv/previewgenerator.cpp
===================================================================
--- libs/libmythtv/previewgenerator.cpp	(revision 23567)
+++ libs/libmythtv/previewgenerator.cpp	(working copy)
@@ -70,6 +70,8 @@
       timeInSeconds(true),  captureTime(-1),       outFileName(QString::null),
       outSize(0,0)
 {
+    VERBOSE(VB_IMPORTANT, LOC + QString("ctor 0x%1").arg((uint64_t)this,0,16));
+
     if (!pathname.contains("/"))
         pathname = programInfo.GetPlaybackURL(false, true);
 
@@ -100,6 +102,8 @@
 
 PreviewGenerator::~PreviewGenerator()
 {
+    VERBOSE(VB_IMPORTANT, LOC + QString("dtor 0x%1").arg((uint64_t)this,0,16));
+
     TeardownAll();
 }
 
@@ -110,6 +114,9 @@
 
 void PreviewGenerator::TeardownAll(void)
 {
+    VERBOSE(VB_IMPORTANT, LOC +
+            QString("TeardownAll 0x%1").arg((uint64_t)this,0,16));
+
     if (!isConnected)
         return;
 
@@ -140,7 +147,6 @@
 void PreviewGenerator::AttachSignals(QObject *obj)
 {
     QMutexLocker locker(&previewLock);
-    qRegisterMetaType<bool>("bool &");
     connect(this, SIGNAL(previewThreadDone(const QString&,bool&)),
             obj,  SLOT(  previewThreadDone(const QString&,bool&)),
             Qt::DirectConnection);
@@ -156,6 +162,8 @@
  */
 void PreviewGenerator::disconnectSafe(void)
 {
+    VERBOSE(VB_IMPORTANT, LOC +
+            QString("disconnectSafe 0x%1").arg((uint64_t)this,0,16));
     QMutexLocker locker(&previewLock);
     QObject::disconnect(this, NULL, NULL, NULL);
     isConnected = false;
Index: programs/mythfrontend/playbackboxhelper.cpp
===================================================================
--- programs/mythfrontend/playbackboxhelper.cpp	(revision 23567)
+++ programs/mythfrontend/playbackboxhelper.cpp	(working copy)
@@ -1,3 +1,5 @@
+#include <cassert>
+
 #include <algorithm>
 using namespace std;
 
@@ -494,12 +496,18 @@
     QString fn = xfn.mid(max(xfn.lastIndexOf('/') + 1,0));
     QMutexLocker locker(&m_previewGeneratorLock);
 
+    VERBOSE(VB_IMPORTANT, QString("SetPreviewGenerator('%1':'%2', 0x%3)")
+            .arg(xfn).arg(fn).arg((uint64_t)g));
+
     if (!g)
     {
         m_previewGeneratorRunning = max(0, (int)m_previewGeneratorRunning - 1);
         PreviewMap::iterator it = m_previewGenerator.find(fn);
         if (it == m_previewGenerator.end())
+        {
+            assert(0);
             return false;
+        }
 
         (*it).gen        = NULL;
         (*it).genStarted = false;
@@ -573,6 +581,7 @@
 
 void PlaybackBoxHelper::previewThreadDone(const QString &fn, bool &success)
 {
+    VERBOSE(VB_IMPORTANT, LOC + QString("previewThreadDone '%1'").arg(fn));
     success = SetPreviewGenerator(fn, NULL);
     UpdatePreviewGeneratorThreads();
 }
