Ticket #7605: patch1.txt

File patch1.txt, 3.8 KB (added by john.p.harvey@…, 14 years ago)
Line 
1Index: libmythtv/DVDRingBuffer.cpp
2===================================================================
3--- libmythtv/DVDRingBuffer.cpp (revision 22859)
4+++ libmythtv/DVDRingBuffer.cpp (working copy)
5@@ -57,7 +57,7 @@
6       m_dvdname(NULL), m_serialnumber(NULL),
7       m_seeking(false), m_seektime(0),
8       m_currentTime(0),
9-      m_parent(0)
10+      m_parent(0), m_isInMenu(false)
11 {
12     memset(&m_dvdMenuButton, 0, sizeof(AVSubtitle));
13     memset(m_dvdBlockWriteBuf, 0, sizeof(char) * DVD_BLOCK_SIZE);
14@@ -87,10 +87,14 @@
15     }
16 }
17 
18-bool DVDRingBufferPriv::IsInMenu(void) const
19+bool DVDRingBufferPriv::IsInMenu(bool update)
20 {
21     if (m_dvdnav)
22-        return (!dvdnav_is_domain_vts(m_dvdnav));
23+    {
24+       if (update)
25+           return ((m_isInMenu = !dvdnav_is_domain_vts(m_dvdnav)));
26+       return m_isInMenu;
27+    }
28     return true;
29 }
30 
31@@ -136,7 +140,7 @@
32                 QString("Seek() to time %1 failed").arg(time));
33         return -1;
34     }
35-    else if (!IsInMenu() && !m_runningCellStart)
36+    else if (!IsInMenu(true) && !m_runningCellStart)
37     {
38         m_gotStop = false;
39         if (time > 0 && ffrewSkip == 1)
40@@ -146,7 +150,7 @@
41     return m_currentpos;
42 }
43 
44-void DVDRingBufferPriv::GetDescForPos(QString &desc) const
45+void DVDRingBufferPriv::GetDescForPos(QString &desc)
46 {
47     if (IsInMenu())
48     {
49@@ -249,7 +253,6 @@
50     int             needed       = sz;
51     char           *dest         = (char*) data;
52     int             offset       = 0;
53-
54     if (m_gotStop)
55     {
56         VERBOSE(VB_IMPORTANT, LOC + "safe_read: called after DVDNAV_STOP");
57@@ -262,7 +265,7 @@
58 
59         dvdStat = dvdnav_get_next_cache_block(
60             m_dvdnav, &blockBuf, &dvdEvent, &dvdEventSize);
61-
62+       bool isInMenu = IsInMenu(true);
63         if (dvdStat == DVDNAV_STATUS_ERR)
64         {
65             VERBOSE(VB_IMPORTANT, QString("Error reading block from DVD: %1")
66@@ -341,8 +344,8 @@
67                 m_cellRepeated = false;
68                 m_menupktpts = 0;
69                 InStillFrame(false);
70-
71-                if (IsInMenu())
72+               
73+                if (isInMenu)
74                 {
75                     if (m_parent)
76                         m_parent->HideDVDButton(true);
77@@ -375,7 +378,7 @@
78 
79                 ClearSubtitlesOSD();
80 
81-                if (IsInMenu())
82+                if (isInMenu)
83                 {
84                     m_buttonstreamid = 32;
85                     int aspect = dvdnav_get_video_aspect(m_dvdnav);
86@@ -430,7 +433,7 @@
87                     m_vobid  = dsi->dsi_gi.vobu_vob_idn;
88                     m_cellid = dsi->dsi_gi.vobu_c_idn;
89                     if ((m_lastvobid == m_vobid) && (m_lastcellid == m_cellid)
90-                            && IsInMenu())
91+                            && isInMenu)
92                     {
93                         m_cellRepeated = true;
94                     }
95Index: libmythtv/DVDRingBuffer.h
96===================================================================
97--- libmythtv/DVDRingBuffer.h   (revision 22859)
98+++ libmythtv/DVDRingBuffer.h   (working copy)
99@@ -34,11 +34,11 @@
100     // gets
101     int  GetTitle(void) const { return m_title;        }
102     int  GetPart(void)  const { return m_part;         }
103-    bool IsInMenu(void) const;
104+    bool IsInMenu(bool update =false);
105     bool IsOpen(void)   const { return m_dvdnav;       }
106     long long GetReadPosition(void);
107     long long GetTotalReadPosition(void) { return m_titleLength; }
108-    void GetDescForPos(QString &desc) const;
109+    void GetDescForPos(QString &desc);
110     void GetPartAndTitle(int &_part, int &_title) const
111         { _part  = m_part; _title = m_title; }
112     uint GetTotalTimeOfTitle(void);
113@@ -134,6 +134,7 @@
114     bool           m_cellHasStillFrame;
115     bool           m_audioStreamsChanged;
116     bool           m_dvdWaiting;
117+    bool          m_isInMenu;
118     long long      m_titleLength;
119     MythTimer      m_stillFrameTimer;
120     uint32_t       m_clut[16];