rendered paste bodyIndex: programs/mythfrontend/playbackbox.cpp
===================================================================
--- programs/mythfrontend/playbackbox.cpp (revision 8969)
+++ programs/mythfrontend/playbackbox.cpp (working copy)
@@ -160,8 +160,9 @@
previewVideoPlaying(false), previewVideoThreadRunning(false),
previewVideoKillState(kDone),
// Preview Image Variables
- previewPixmapEnabled(false), previewPixmap(NULL),
- previewSuspend(false), previewChanid(""),
+ previewPixmapEnabled(false), previewPixmapDrawn(false),
+ previewPixmap(NULL), previewSuspend(false),
+ previewChanid(""),
// Network Control Variables
underNetworkControl(false)
{
@@ -660,9 +661,12 @@
{
QMap<QString, QString> infoMap;
QPainter tmp(&pix);
-
+
if (previewVideoPlaying)
+ {
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
+ }
LayerSet *container = NULL;
if (type != Delete)
@@ -809,21 +813,37 @@
void PlaybackBox::updateVideo(QPainter *p)
{
+// VERBOSE(VB_IMPORTANT, LOC + "previewPixmapDrawn is " + previewPixmapDrawn);
+
// If we're displaying group info don't update the video.
if (inTitle && haveGroupInfoSet)
return;
- /* show a still frame if the user doesn't want a video preview or nvp
+ /* show a still frame if the user doesn't want a video preview or nvp
* hasn't started playing the video preview yet */
if (curitem && !playingSomething &&
(!previewVideoEnabled ||
!previewVideoPlaying ||
- (previewVideoState == kStarting) ||
+ (previewVideoState == kStarting) ||
(previewVideoState == kChanging)))
{
- QPixmap temp = getPixmap(curitem);
- if (temp.width() > 0)
- p->drawPixmap(drawVideoBounds.x(), drawVideoBounds.y(), temp);
+
+ if (!previewPixmapDrawn)
+ {
+ if (previewVideoState == kStarting)
+ VERBOSE(VB_IMPORTANT, LOC + "State kStarting");
+ else if (previewVideoState == kChanging)
+ VERBOSE(VB_IMPORTANT, LOC + "State kChanging");
+ else if (!previewVideoPlaying)
+ VERBOSE(VB_IMPORTANT, LOC + "Preview Video playing");
+ else
+ VERBOSE(VB_IMPORTANT, LOC + "Preview Video not enabled");
+ VERBOSE(VB_IMPORTANT, LOC + "Drawing Preview Picture");
+ previewPixmapDrawn = TRUE;
+ QPixmap temp = getPixmap(curitem);
+ if (temp.width() > 0)
+ p->drawPixmap(drawVideoBounds.x(), drawVideoBounds.y(), temp);
+ }
}
/* keep calling killPlayer() to handle nvp cleanup */
@@ -888,7 +908,11 @@
if (previewVideoNVP)
{
if (previewVideoNVP->IsPlaying())
+ {
previewVideoState = kPlaying;
+ VERBOSE(VB_IMPORTANT, LOC + "Playing Preview Video");
+ previewPixmapDrawn = FALSE;
+ }
}
else
{
@@ -1668,12 +1692,14 @@
}
return true;
-}
+}
void PlaybackBox::startPlayer(ProgramInfo *rec)
{
previewVideoPlaying = true;
+ VERBOSE(VB_IMPORTANT, LOC + "Starting Preview Player");
+
if (rec != NULL)
{
// Don't keep trying to open broken files when just sitting on entry
@@ -1703,6 +1729,7 @@
}
previewVideoBrokenRecId = 0;
+ VERBOSE(VB_IMPORTANT, LOC + "Creating new NVP preview player instance");
previewVideoNVP = new NuppelVideoPlayer("preview player");
previewVideoNVP->SetRingBuffer(previewVideoRingBuf);
previewVideoNVP->SetAsPIP();
@@ -2813,6 +2840,7 @@
cancelPopup();
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
previewVideoRefreshTimer->start(500);
}
@@ -2827,6 +2855,7 @@
stop(delitem);
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
previewVideoRefreshTimer->start(500);
}
@@ -2979,6 +3008,7 @@
cancelPopup();
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
previewVideoRefreshTimer->start(500);
}
@@ -3025,6 +3055,7 @@
bool result = doRemove(delitem, false, false);
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
previewVideoRefreshTimer->start(500);
@@ -3060,6 +3091,7 @@
doRemove(delitem, true, true);
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
previewVideoRefreshTimer->start(500);
}
@@ -3085,6 +3117,7 @@
bool result = doRemove(delitem, true, false);
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
previewVideoRefreshTimer->start(500);
@@ -3162,6 +3195,7 @@
delitem = NULL;
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
update(drawListBounds);
}
@@ -3183,6 +3217,7 @@
delitem = NULL;
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
update(drawListBounds);
}
@@ -3195,6 +3230,7 @@
cancelPopup();
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
}
void PlaybackBox::toggleTitleView(void)
@@ -3925,6 +3961,7 @@
delete iconhelp;
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
paintSkipUpdate = false;
paintSkipCount = 2;
@@ -3970,6 +4007,7 @@
paintSkipCount = 2;
previewVideoState = kChanging;
+ previewPixmapDrawn = FALSE;
setActiveWindow();
Index: programs/mythfrontend/playbackbox.h
===================================================================
--- programs/mythfrontend/playbackbox.h (revision 8969)
+++ programs/mythfrontend/playbackbox.h (working copy)
@@ -389,6 +389,7 @@
// Preview Pixmap Variables ///////////////////////////////////////////////
bool previewPixmapEnabled;
+ bool previewPixmapDrawn;
QPixmap *previewPixmap;
QDateTime previewLastModified;
QDateTime previewFilets;