Ticket #1947: itv.startup.2.txt

File itv.startup.2.txt, 5.1 KB (added by dm@…, 15 years ago)
Line 
1Index: libs/libmythtv/NuppelVideoPlayer.cpp
2===================================================================
3--- libs/libmythtv/NuppelVideoPlayer.cpp        (revision 10210)
4+++ libs/libmythtv/NuppelVideoPlayer.cpp        (working copy)
5@@ -2439,8 +2439,30 @@
6 
7     // handle Interactive TV
8     if (GetInteractiveTV() && GetDecoder())
9-        itvVisible = GetDecoder()->ITVUpdate(itvVisible);
10+    {
11+        QMutexLocker locker(&itvLock);
12 
13+        OSD *osd = GetOSD();
14+        if (osd)
15+        {
16+            OSDSet *itvosd = osd->GetSet("interactive");
17+
18+            if (itvosd)
19+            {
20+                bool visible = false;
21+                if (interactiveTV->ImageHasChanged() || !itvVisible)
22+                {
23+                    interactiveTV->UpdateOSD(itvosd);
24+                    visible = true;
25+                    itvVisible = true;
26+                }
27+
28+                if (visible)
29+                    osd->SetVisible(itvosd, 0);
30+            }
31+        }
32+    }
33+
34     // handle EIA-608 and Teletext
35     if (textDisplayMode & kDisplayNUVCaptions)
36         ShowText();
37@@ -5711,7 +5733,11 @@
38     QMutexLocker locker(&decoder_change_lock);
39 
40     if (GetDecoder())
41-        return GetDecoder()->ITVHandleAction(action);
42+    {
43+        QMutexLocker locker(&itvLock);
44+        if (GetInteractiveTV())
45+            return interactiveTV->OfferKey(action);
46+    }
47 
48     return false;
49 }
50@@ -5734,8 +5760,12 @@
51         return;
52     }
53 
54-    GetDecoder()->ITVRestart(chanid, cardid, isLiveTV);
55-       
56+    {
57+        QMutexLocker locker(&itvLock);
58+        if (GetInteractiveTV())
59+            interactiveTV->Restart(chanid, cardid, isLiveTV);
60+    }
61+       
62     osd->ClearAll("interactive");
63     itvosd->Display();
64     osd->SetVisible(itvosd, 0);
65Index: libs/libmythtv/avformatdecoder.cpp
66===================================================================
67--- libs/libmythtv/avformatdecoder.cpp  (revision 10210)
68+++ libs/libmythtv/avformatdecoder.cpp  (working copy)
69@@ -2204,54 +2204,6 @@
70     return ccd608->GetXDS(key);
71 }
72 
73-bool AvFormatDecoder::ITVUpdate(bool itvVisible)
74-{
75-    QMutexLocker locker(&itvLock);
76-
77-    OSD *osd = GetNVP()->GetOSD();
78-    if (!osd)
79-        return itvVisible;
80-
81-    OSDSet *itvosd = osd->GetSet("interactive");
82-    if (!itvosd)
83-        return itvVisible;
84-
85-    if (!itv)
86-        return itvVisible;
87-
88-    bool visible = false;
89-    if (itv->ImageHasChanged() || !itvVisible)
90-    {
91-        itv->UpdateOSD(itvosd);
92-        visible = true;
93-        itvVisible = true;
94-    }
95-
96-    if (visible)
97-        osd->SetVisible(itvosd, 0);
98-
99-    return itvVisible;
100-}
101-
102-bool AvFormatDecoder::ITVHandleAction(const QString &action)
103-{
104-    QMutexLocker locker(&itvLock);
105-    if (itv)
106-        return itv->OfferKey(action);
107-    return false;
108-}
109-
110-/** \fn AvFormatDecoder::ITVRestart(uint,uint,bool)
111- *  \brief Restart the MHEG/MHP engine.
112- */
113-void AvFormatDecoder::ITVRestart(uint chanid, uint cardid, bool isLiveTV)
114-{
115-    QMutexLocker locker(&itvLock);
116-    itv = GetNVP()->GetInteractiveTV();
117-    if (itv)
118-        itv->Restart(chanid, cardid, isLiveTV);
119-}
120-
121 bool AvFormatDecoder::SetAudioByComponentTag(int tag)
122 {
123     for (uint i = 0; i < tracks[kTrackTypeAudio].size(); i++)
124Index: libs/libmythtv/decoderbase.h
125===================================================================
126--- libs/libmythtv/decoderbase.h        (revision 10210)
127+++ libs/libmythtv/decoderbase.h        (working copy)
128@@ -129,11 +129,6 @@
129     virtual QString GetXDS(const QString&) const { return QString::null; }
130 
131     // MHEG/MHI stuff
132-    virtual bool ITVUpdate(bool /*visible*/) { return false; }
133-    virtual bool ITVHandleAction(const QString& /*action*/) { return false; }
134-    virtual void ITVRestart(uint /*chanid*/, uint /*cardid*/,
135-                            bool /*livetv*/) { }
136-
137     virtual bool SetAudioByComponentTag(int) { return false; }
138     virtual bool SetVideoByComponentTag(int) { return false; }
139 
140Index: libs/libmythtv/NuppelVideoPlayer.h
141===================================================================
142--- libs/libmythtv/NuppelVideoPlayer.h  (revision 10210)
143+++ libs/libmythtv/NuppelVideoPlayer.h  (working copy)
144@@ -643,6 +643,7 @@
145     bool       itvVisible;
146     InteractiveTV *interactiveTV;
147     bool       itvEnabled;
148+    QMutex     itvLock;
149 
150     // OSD stuff
151     OSD      *osd;
152Index: libs/libmythtv/avformatdecoder.h
153===================================================================
154--- libs/libmythtv/avformatdecoder.h    (revision 10210)
155+++ libs/libmythtv/avformatdecoder.h    (working copy)
156@@ -136,10 +136,6 @@
157     virtual QString GetXDS(const QString&) const;
158 
159     // MHEG stuff
160-    virtual bool ITVUpdate(bool itvVisible);
161-    virtual bool ITVHandleAction(const QString&);
162-    virtual void ITVRestart(uint chanid, uint cardid, bool livetv);
163-
164     virtual bool SetAudioByComponentTag(int tag);
165     virtual bool SetVideoByComponentTag(int tag);
166 
167@@ -239,7 +235,6 @@
168     // MHEG
169     InteractiveTV    *itv;                ///< MHEG/MHP decoder
170     int               selectedVideoIndex; ///< MHEG/MHP video stream to use.
171-    QMutex            itvLock;
172 
173     // Audio
174     short int        *audioSamples;