summaryrefslogtreecommitdiff
blob: 4b6bf2c05fd9c6f5017544fcbc352ea576a184d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
diff --git a/ttxtsubs.c b/ttxtsubs.c
index f9b7bbc..5307c44 100644
--- a/ttxtsubs.c
+++ b/ttxtsubs.c
@@ -275,7 +275,8 @@ void cPluginTtxtsubs::Housekeeping(void)
 
 const char *cPluginTtxtsubs::MainMenuEntry(void)
 {
-  bool haveChannel = Channels.GetByNumber(cDevice::ActualDevice()->CurrentChannel()) != NULL;
+  LOCK_CHANNELS_READ;
+  bool haveChannel = Channels->GetByNumber(cDevice::ActualDevice()->CurrentChannel()) != NULL;
   switch(globals.mMainMenuEntry) {
   case 1:
     if(globals.mRealDoDisplay)
@@ -349,7 +350,8 @@ void cPluginTtxtsubs::ChannelSwitch(const cDevice *Device, int ChannelNumber
     DELETENULL(mLiveReceiver);
     if (!Device->Replaying() && !Device->Transferring())
     {
-      cChannel* channel = Channels.GetByNumber(ChannelNumber);
+      LOCK_CHANNELS_READ;
+      const cChannel* channel = Channels->GetByNumber(ChannelNumber);
       if (channel && channel->Tpid())
       {
         mLiveReceiver = new cTtxtSubsLiveReceiver(channel, this);
diff --git a/ttxtsubschannelsettings.c b/ttxtsubschannelsettings.c
index b543a36..7f9d326 100644
--- a/ttxtsubschannelsettings.c
+++ b/ttxtsubschannelsettings.c
@@ -48,8 +48,9 @@ bool cTtxtSubsChannelSetting::Parse(const char *s)
       }
       else { // parse old format
         int sid;
+        LOCK_CHANNELS_READ;
         if (1 == sscanf(buffer, "%d", &sid)) {
-          for (cChannel *ch = Channels.First(); ch; ch = Channels.Next(ch)) {
+          for (const cChannel *ch = Channels->First(); ch; ch = Channels->Next(ch)) {
             if (!ch->GroupSep() && ch->Sid() == sid) {
               channelid=ch->GetChannelID();
               pagemode=PageMode;
diff --git a/ttxtsubslivereceiver.c b/ttxtsubslivereceiver.c
index 9f60fdd..586d5af 100644
--- a/ttxtsubslivereceiver.c
+++ b/ttxtsubslivereceiver.c
@@ -22,7 +22,7 @@
 #include <vdr/remux.h>
 #include "ttxtsubslivereceiver.h"
 
-cTtxtSubsLiveReceiver::cTtxtSubsLiveReceiver(cChannel* channel, cVDRTtxtsubsHookListener* hook)
+cTtxtSubsLiveReceiver::cTtxtSubsLiveReceiver(const cChannel* channel, cVDRTtxtsubsHookListener* hook)
   :
   _channel(channel),
   _hook(hook)
@@ -35,7 +35,7 @@ cTtxtSubsLiveReceiver::~cTtxtSubsLiveReceiver()
   cReceiver::Detach();
 }
 
-void cTtxtSubsLiveReceiver::Receive(uchar *Data, int Length)
+void cTtxtSubsLiveReceiver::Receive(const uchar *Data, int Length)
 {
   if (Data == NULL)
   {
diff --git a/ttxtsubslivereceiver.h b/ttxtsubslivereceiver.h
index d361c7b..0aba89b 100644
--- a/ttxtsubslivereceiver.h
+++ b/ttxtsubslivereceiver.h
@@ -29,12 +29,12 @@ class cTtxtSubsLiveReceiver : public cReceiver
 {
     private:
       cTsToPes tsToPesTeletext;
-      cChannel* _channel;
+      const cChannel* _channel;
       cVDRTtxtsubsHookListener* _hook;
     protected:
-        virtual void Receive(uchar *Data, int Length);
+        virtual void Receive(const uchar *Data, int Length);
     public:
-        cTtxtSubsLiveReceiver(cChannel* channel, cVDRTtxtsubsHookListener* hook);
+        cTtxtSubsLiveReceiver(const cChannel* channel, cVDRTtxtsubsHookListener* hook);
         virtual ~cTtxtSubsLiveReceiver();
 };
 
diff --git a/ttxtsubspagemenu.c b/ttxtsubspagemenu.c
index cd7b6d0..b03949c 100644
--- a/ttxtsubspagemenu.c
+++ b/ttxtsubspagemenu.c
@@ -35,8 +35,9 @@ cTtxtsubsPageMenu::~cTtxtsubsPageMenu()
 cTtxtsubsPageMenu::cTtxtsubsPageMenu()
   :cOsdMenu(tr("Subtitle Page Settings"), 30)
 {
+    LOCK_CHANNELS_READ;
     cDevice *device = cDevice::ActualDevice();
-    channel = Channels.GetByNumber(device->CurrentChannel());
+    channel = Channels->GetByNumber(device->CurrentChannel());
     setting = TtxtSubsChannelSettings.Get(channel);
     if (setting) {
        origPageMode = mPageMode = setting->PageMode();
diff --git a/ttxtsubspagemenu.h b/ttxtsubspagemenu.h
index ad4bd48..ffe82d9 100644
--- a/ttxtsubspagemenu.h
+++ b/ttxtsubspagemenu.h
@@ -29,7 +29,7 @@
 class cTtxtsubsPageMenu : public cOsdMenu 
 {
     private:
-        cChannel *channel;
+        const cChannel *channel;
         cTtxtSubsChannelSetting *setting;
         int mPageNumber;
         int mPageMode;