Index: mythtv/libs/libmythtv/tv_play.cpp
===================================================================
--- mythtv/libs/libmythtv/tv_play.cpp	(revision 21211)
+++ mythtv/libs/libmythtv/tv_play.cpp	(working copy)
@@ -897,7 +897,7 @@
         // player window sizing
         MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
 
-        myWindow = new TvPlayWindow(mainStack, "Playback");
+        myWindow = new TvPlayWindow(mainStack);
 
         if (myWindow->Create())
             mainStack->AddScreen(myWindow, false);
@@ -908,9 +908,6 @@
         }
 
         MythMainWindow *mainWindow = GetMythMainWindow();
-        //QPalette p = mainWindow->palette();
-        //p.setColor(mainWindow->backgroundRole(), Qt::black);
-        //mainWindow->setPalette(p);
         mainWindow->installEventFilter(this);
         qApp->processEvents();
     }
@@ -987,7 +984,7 @@
     }
     ReturnPlayerLock(mctx);
 
-    GetMythMainWindow()->GetPaintWindow()->show();
+    //GetMythMainWindow()->SetDrawEnabled(true);
 
     VERBOSE(VB_PLAYBACK, "TV::~TV() -- end");
 }
@@ -2002,9 +1999,6 @@
             (db_use_fixed_size) ? player_bounds.size() :
             QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
         mainWindow->setGeometry(player_bounds);
-
-        // hide the GUI paint window
-        GetMythMainWindow()->GetPaintWindow()->hide();
     }
 
     VERBOSE(VB_PLAYBACK, LOC +
@@ -4871,9 +4865,11 @@
     if (StateIsLiveTV(mctx->GetState()))
         mctx->buffer->Unpause();
 
-    bool ok = mctx->CreateNVP(
-        this, gContext->GetMainWindow(), mctx->GetState(), 0, &mctx->embedBounds);
+    QWidget *widget = gContext->GetMainWindow()->GetPaintWindow();
 
+    bool ok = mctx->CreateNVP(this, widget, mctx->GetState(), 0,
+                              &mctx->embedBounds);
+
     if (ok)
     {
         ScheduleStateChange(mctx);
@@ -4995,7 +4991,9 @@
     }
     else
     {
-        ok = ctx->CreateNVP(this, gContext->GetMainWindow(), desiredState,
+        QWidget *widget = gContext->GetMainWindow()->GetPaintWindow();
+        
+        ok = ctx->CreateNVP(this, widget, desiredState,
                             mctx->embedWinID, &mctx->embedBounds);
         ScheduleStateChange(ctx);
     }
@@ -5382,7 +5380,9 @@
     mctx->SetPIPState(kPIPOff);
     mctx->buffer->Seek(0, SEEK_SET);
 
-    if (mctx->CreateNVP(this, gContext->GetMainWindow(), mctx->GetState(),
+    QWidget *widget = gContext->GetMainWindow()->GetPaintWindow();
+    
+    if (mctx->CreateNVP(this, widget, mctx->GetState(),
                         mctx->embedWinID, &mctx->embedBounds))
     {
         ScheduleStateChange(mctx);
@@ -7923,8 +7923,8 @@
     }
     else
     {
-        //we are embedding in a mythui window so show the gui paint window again
-        GetMythMainWindow()->GetPaintWindow()->show();
+        //we are embedding in a mythui window so re-enable drawing
+        //GetMythMainWindow()->SetDrawEnabled(true);
     }
 }
 
@@ -7935,6 +7935,7 @@
     // this will create the program guide window (widget)
     // on the main thread and avoid a deadlock on Win32
     QString message = QString("START_EPG %1").arg(editType);
+    //GetMythMainWindow()->SetDrawEnabled(true);
     MythEvent* me = new MythEvent(message);
     qApp->postEvent(gContext->GetMainWindow(), me);
 }
@@ -8614,9 +8615,12 @@
         PlayerContext *mctx;
         MythMainWindow *mwnd = gContext->GetMainWindow();
 
+        GetMythMainWindow()->GetPaintWindow()->clearMask();
+        //GetMythMainWindow()->SetDrawEnabled(false);
+        
         StopEmbedding(actx);                // Undo any embedding
         SetPlayerVisibility(actx, kVisibility_Normal);
-
+        
         mctx = GetPlayerReadLock(0, __FILE__, __LINE__);
         mctx->LockDeleteNVP(__FILE__, __LINE__);
         if (mctx->nvp && mctx->nvp->getVideoOutput())
@@ -8634,9 +8638,6 @@
 
         DoSetPauseState(actx, saved_pause); // Restore pause states
 
-        GetMythMainWindow()->GetPaintWindow()->hide();
-        GetMythMainWindow()->GetPaintWindow()->clearMask();
-
         qApp->processEvents();
         DrawUnusedRects(true, actx);
 
Index: mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp	(revision 21194)
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp	(working copy)
@@ -720,8 +720,7 @@
         {
             MythMainWindow *window = gContext->GetMainWindow();
 
-            QWidget *widget =
-                window->findChild<QWidget*>("video playback window");
+            QWidget *widget = window->GetPaintWindow();
 
             if (!widget)
             {
@@ -738,6 +737,9 @@
             return false;
         }
 
+        // Suspend GUI painting
+        //GetMythMainWindow()->SetDrawEnabled(false);
+
         QRect display_rect;
         int pbp_width = widget->width() / 2;
         if (pipState == kPIPStandAlone)
Index: mythtv/libs/libmythtv/tv_play_win.cpp
===================================================================
--- mythtv/libs/libmythtv/tv_play_win.cpp	(revision 21194)
+++ mythtv/libs/libmythtv/tv_play_win.cpp	(working copy)
@@ -9,8 +9,8 @@
 #include "tv_play_win.h"
 
 
-TvPlayWindow::TvPlayWindow(MythScreenStack *parent, const char *name)
-            : MythScreenType(parent, name)
+TvPlayWindow::TvPlayWindow(MythScreenStack *parent)
+             : MythScreenType(parent, "video playback window")
 {
     SetCanTakeFocus(true);
 }
Index: mythtv/libs/libmythtv/tv_play_win.h
===================================================================
--- mythtv/libs/libmythtv/tv_play_win.h	(revision 21194)
+++ mythtv/libs/libmythtv/tv_play_win.h	(working copy)
@@ -12,7 +12,7 @@
     Q_OBJECT
 
   public:
-    TvPlayWindow(MythScreenStack *parent, const char *name);
+    TvPlayWindow(MythScreenStack *parent);
    ~TvPlayWindow();
 
     virtual void gestureEvent(MythUIType *, MythGestureEvent *);
