Tim Bentley has proposed merging lp:~trb143/openlp/bugs into lp:openlp. Requested reviews: Raoul Snyman (raoul-snyman) Related bugs: Bug #657860 in OpenLP: "At the end of a video, the last frame stays on screen." https://bugs.launchpad.net/openlp/+bug/657860 Bug #693150 in OpenLP: "Custom Slide Display footer option" https://bugs.launchpad.net/openlp/+bug/693150 Bug #693202 in OpenLP: "delete theme" https://bugs.launchpad.net/openlp/+bug/693202 Bug #712252 in OpenLP: "Service song already in database detection logic broken" https://bugs.launchpad.net/openlp/+bug/712252
For more details, see: https://code.launchpad.net/~trb143/openlp/bugs/+merge/53213 Blank video at the end when it is finished. Additional comments. Hook for later development work. -- https://code.launchpad.net/~trb143/openlp/bugs/+merge/53213 Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/ui/maindisplay.py' --- openlp/core/ui/maindisplay.py 2011-03-09 18:14:50 +0000 +++ openlp/core/ui/maindisplay.py 2011-03-14 10:15:25 +0000 @@ -67,6 +67,7 @@ self.isLive = live self.alertTab = None self.hideMode = None + self.videoHide = False self.override = {} mainIcon = build_icon(u':/icon/openlp-logo-16x16.png') self.setWindowIcon(mainIcon) @@ -90,7 +91,7 @@ """ Set up and build the output screen """ - log.debug(u'Start setup for monitor %s (live = %s)' % + log.debug(u'Start setup for monitor %s (live = %s)' % (self.screens.monitor_number, self.isLive)) self.usePhonon = QtCore.QSettings().value( u'media/use phonon', QtCore.QVariant(True)).toBool() @@ -110,6 +111,12 @@ QtCore.QObject.connect(self.mediaObject, QtCore.SIGNAL(u'stateChanged(Phonon::State, Phonon::State)'), self.videoStart) + QtCore.QObject.connect(self.mediaObject, + QtCore.SIGNAL(u'finished()'), + self.videoFinished) + QtCore.QObject.connect(self.mediaObject, + QtCore.SIGNAL(u'tick(qint64)'), + self.videoTick) log.debug(u'Setup webView for monitor %s' % self.screens.monitor_number) self.webView = QtWebKit.QWebView(self) self.webView.setGeometry(0, 0, @@ -262,6 +269,7 @@ self.displayImage(self.serviceItem.bg_image_bytes) else: self.displayImage(None) + # clear the cache self.override = {} # Update the preview frame. if self.isLive: @@ -349,6 +357,10 @@ self.mediaObject.stop() self.mediaObject.clearQueue() self.mediaObject.setCurrentSource(Phonon.MediaSource(videoPath)) + # Need the timer to trigger set the trigger to 200ms + # Value taken from web documentation. + if self.serviceItem.start_time != 0: + self.mediaObject.setTickInterval(200) self.mediaObject.play() self.webView.setVisible(False) self.videoWidget.setVisible(True) @@ -363,8 +375,26 @@ Start the video at a predetermined point. """ if newState == Phonon.PlayingState: + # set start time in milliseconds self.mediaObject.seek(self.serviceItem.start_time * 1000) + def videoFinished(self): + """ + Blank the Video when it has finished so the final frame is not left + hanging + """ + self.videoStop() + self.hideDisplay(HideMode.Blank) + self.phononActive = False + self.videoHide = True + + def videoTick(self, tick): + """ + Triggered on video tick every 200 milli seconds + Will be used to manage stop time later + """ + pass + def isWebLoaded(self): """ Called by webView event to show display is fully loaded @@ -422,10 +452,12 @@ if u'video' in self.override: Receiver.send_message(u'video_background_replaced') self.override = {} + # We have a different theme. elif self.override[u'theme'] != serviceItem.themedata.theme_name: Receiver.send_message(u'live_theme_changed') self.override = {} else: + # replace the background background = self.imageManager. \ get_image_bytes(self.override[u'image']) if self.serviceItem.themedata.background_filename: @@ -441,6 +473,10 @@ # if was hidden keep it hidden if self.hideMode and self.isLive: self.hideDisplay(self.hideMode) + # display hidden for video end we have a new item so must be shown + if self.videoHide and self.isLive: + self.videoHide = False + self.showDisplay() self.__hideMouse() def footer(self, text):
_______________________________________________ Mailing list: https://launchpad.net/~openlp-core Post to : openlp-core@lists.launchpad.net Unsubscribe : https://launchpad.net/~openlp-core More help : https://help.launchpad.net/ListHelp