From 1c12be1f77fee011b3b414d86730c1c73e3650b4 Mon Sep 17 00:00:00 2001 From: Andreas Frisch Date: Fri, 15 Aug 2008 20:54:31 +0000 Subject: [PATCH] inhibit showing infobar on chapter change, don't load cuesheet if user says no in choicebox, save zero cuesheet and therefore don't prompt for resume if stop position was in a menu --- .../Plugins/Extensions/DVDPlayer/plugin.py | 10 +++++++--- .../Extensions/DVDPlayer/src/servicedvd.cpp | 19 ++++++++++++------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/lib/python/Plugins/Extensions/DVDPlayer/plugin.py b/lib/python/Plugins/Extensions/DVDPlayer/plugin.py index 1db87376..79a13e6a 100644 --- a/lib/python/Plugins/Extensions/DVDPlayer/plugin.py +++ b/lib/python/Plugins/Extensions/DVDPlayer/plugin.py @@ -246,6 +246,8 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP self["audioLabel"] = Label("n/a") self["subtitleLabel"] = Label("") self["chapterLabel"] = Label("") + self.last_audioTuple = None + self.last_subtitleTuple = None self.totalChapters = 0 self.currentChapter = 0 self.totalTitles = 0 @@ -424,8 +426,9 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP print "AudioInfoAvail ", repr(audioTuple) audioString = "%d: %s (%s)" % (audioTuple[0],audioTuple[1],audioTuple[2]) self["audioLabel"].setText(audioString) - if not self.in_menu: + if audioTuple != self.last_audioTuple and not self.in_menu: self.doShow() + self.last_audioTuple = audioTuple def __osdSubtitleInfoAvail(self): subtitleTuple = self.service.info().getInfoObject(iServiceInformation.sUser+7) @@ -434,8 +437,9 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP if subtitleTuple[0] is not 0: subtitleString = "%d: %s" % (subtitleTuple[0],subtitleTuple[1]) self["subtitleLabel"].setText(subtitleString) - if not self.in_menu: + if subtitleTuple != self.last_subtitleTuple and not self.in_menu: self.doShow() + self.last_subtitleTuple = subtitleTuple def __chapterUpdated(self): self.currentChapter = self.service.info().getInfo(iServiceInformation.sCurrentChapter) @@ -583,7 +587,7 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP def playLastCB(self, answer): # overwrite infobar cuesheet function print "playLastCB", answer, self.resume_point - if self.service: + if self.service and answer == True: seek = self.service.seek() seek.seekTo(self.resume_point) self.hideAfterResume() diff --git a/lib/python/Plugins/Extensions/DVDPlayer/src/servicedvd.cpp b/lib/python/Plugins/Extensions/DVDPlayer/src/servicedvd.cpp index a756e751..cdb01d3c 100644 --- a/lib/python/Plugins/Extensions/DVDPlayer/src/servicedvd.cpp +++ b/lib/python/Plugins/Extensions/DVDPlayer/src/servicedvd.cpp @@ -739,21 +739,26 @@ void eServiceDVD::saveCuesheet() { eDebug("eServiceDVD::saveCuesheet()"); - struct ddvd_time info; - ddvd_get_last_time(m_ddvdconfig, &info); - if ( info.pos_chapter < info.end_chapter ) + struct ddvd_resume resume_info; + ddvd_get_resume_pos(m_ddvdconfig, &resume_info); + + if (resume_info.title) { + struct ddvd_time info; + ddvd_get_last_time(m_ddvdconfig, &info); pts_t pos; pos = info.pos_hours * 3600; pos += info.pos_minutes * 60; pos += info.pos_seconds; pos *= 90000; m_cue_pts = pos; + eDebug("ddvd_get_resume_pos resume_info.title=%d, chapter=%d, block=%lu, audio_id=%d, audio_lock=%d, spu_id=%d, spu_lock=%d (pts=%llu)",resume_info.title,resume_info.chapter,resume_info.block,resume_info.audio_id, resume_info.audio_lock, resume_info.spu_id, resume_info.spu_lock,m_cue_pts); + } + else + { + eDebug("we're in a menu or somewhere else funny. so save cuesheet with pts=0"); + m_cue_pts = 0; } - - struct ddvd_resume resume_info; - ddvd_get_resume_pos(m_ddvdconfig, &resume_info); - eDebug("ddvd_get_resume_pos resume_info.title=%d, chapter=%d, block=%lu, audio_id=%d, audio_lock=%d, spu_id=%d, spu_lock=%d (pts=%llu)",resume_info.title,resume_info.chapter,resume_info.block,resume_info.audio_id, resume_info.audio_lock, resume_info.spu_id, resume_info.spu_lock,m_cue_pts); char filename[128]; if ( m_ddvd_titlestring[0] != '\0' ) -- 2.30.2