vdr  2.7.6
status.c
Go to the documentation of this file.
1 /*
2  * status.c: Status monitoring
3  *
4  * See the main source file 'vdr.c' for copyright information and
5  * how to reach the author.
6  *
7  * $Id: status.c 5.5 2025/03/03 13:31:10 kls Exp $
8  */
9 
10 #include "status.h"
11 #include "thread.h"
12 
13 // --- cStatus ---------------------------------------------------------------
14 
16 
17 static cMutex Mutex;
18 
20 {
21  Mutex.Lock();
22  statusMonitors.Add(this);
23  Mutex.Unlock();
24 }
25 
27 {
28  Mutex.Lock();
29  statusMonitors.Del(this, false);
30  Mutex.Unlock();
31 }
32 
33 void cStatus::MsgChannelChange(const cChannel *Channel)
34 {
35  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
36  sm->ChannelChange(Channel);
37 }
38 
39 void cStatus::MsgTimerChange(const cTimer *Timer, eTimerChange Change)
40 {
41  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
42  sm->TimerChange(Timer, Change);
43 }
44 
45 void cStatus::MsgChannelSwitch(const cDevice *Device, int ChannelNumber, bool LiveView)
46 {
47  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
48  sm->ChannelSwitch(Device, ChannelNumber, LiveView);
49 }
50 
51 void cStatus::MsgRecording(const cDevice *Device, const char *Name, const char *FileName, bool On)
52 {
53  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
54  sm->Recording(Device, Name, FileName, On);
55 }
56 
57 void cStatus::MsgReplaying(const cControl *Control, const char *Name, const char *FileName, bool On)
58 {
59  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
60  sm->Replaying(Control, Name, FileName, On);
61 }
62 
64 {
65  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
66  sm->MarksModified(Marks);
67 }
68 
69 void cStatus::MsgSetVolume(int Volume, bool Absolute)
70 {
71  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
72  sm->SetVolume(Volume, Absolute);
73 }
74 
75 void cStatus::MsgSetAudioTrack(int Index, const char * const *Tracks)
76 {
77  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
78  sm->SetAudioTrack(Index, Tracks);
79 }
80 
81 void cStatus::MsgSetAudioChannel(int AudioChannel)
82 {
83  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
84  sm->SetAudioChannel(AudioChannel);
85 }
86 
87 void cStatus::MsgSetSubtitleTrack(int Index, const char * const *Tracks)
88 {
89  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
90  sm->SetSubtitleTrack(Index, Tracks);
91 }
92 
94 {
95  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
96  sm->OsdClear();
97 }
98 
99 void cStatus::MsgOsdTitle(const char *Title)
100 {
101  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
102  sm->OsdTitle(Title);
103 }
104 
105 void cStatus::MsgOsdStatusMessage(eMessageType Type, const char *Message)
106 {
107  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
108  sm->OsdStatusMessage(Type, Message);
109 }
110 
111 void cStatus::MsgOsdHelpKeys(const char *Red, const char *Green, const char *Yellow, const char *Blue)
112 {
113  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
114  sm->OsdHelpKeys(Red, Green, Yellow, Blue);
115 }
116 
117 void cStatus::MsgOsdItem(const char *Text, int Index, bool Selectable)
118 {
119  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
120  sm->OsdItem(Text, Index, Selectable);
121 }
122 
123 void cStatus::MsgOsdCurrentItem(const char *Text, int Index)
124 {
125  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
126  sm->OsdCurrentItem(Text, Index);
127 }
128 
129 void cStatus::MsgOsdTextItem(const char *Text, bool Scroll)
130 {
131  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
132  sm->OsdTextItem(Text, Scroll);
133 }
134 
135 void cStatus::MsgOsdChannel(const char *Text)
136 {
137  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
138  sm->OsdChannel(Text);
139 }
140 
141 void cStatus::MsgOsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle)
142 {
143  for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
144  sm->OsdProgramme(PresentTime, PresentTitle, PresentSubtitle, FollowingTime, FollowingTitle, FollowingSubtitle);
145 }
void Del(cListObject *Object, bool DeleteObject=true)
Definition: tools.c:2209
void Add(cListObject *Object, cListObject *After=NULL)
Definition: tools.c:2177
int Index(void) const
Definition: tools.c:2097
const T * Next(const T *Object) const
< Returns the element immediately before Object in this list, or NULL if Object is the first element ...
Definition: tools.h:650
const T * First(void) const
Returns the first element in this list, or NULL if the list is empty.
Definition: tools.h:643
Definition: thread.h:67
void Lock(void)
Definition: thread.c:223
void Unlock(void)
Definition: thread.c:229
Definition: status.h:36
static void MsgMarksModified(const cMarks *Marks)
Definition: status.c:63
static void MsgOsdTitle(const char *Title)
Definition: status.c:99
static void MsgOsdChannel(const char *Text)
Definition: status.c:135
cStatus(void)
Definition: status.c:19
static void MsgOsdItem(const char *Text, int Index, bool Selectable=true)
Definition: status.c:117
static void MsgOsdHelpKeys(const char *Red, const char *Green, const char *Yellow, const char *Blue)
Definition: status.c:111
static void MsgOsdStatusMessage(const char *Message)
Definition: status.h:125
static void MsgSetAudioChannel(int AudioChannel)
Definition: status.c:81
static void MsgOsdProgramme(time_t PresentTime, const char *PresentTitle, const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, const char *FollowingSubtitle)
Definition: status.c:141
static void MsgReplaying(const cControl *Control, const char *Name, const char *FileName, bool On)
Definition: status.c:57
static void MsgSetVolume(int Volume, bool Absolute)
Definition: status.c:69
static void MsgRecording(const cDevice *Device, const char *Name, const char *FileName, bool On)
Definition: status.c:51
static cList< cStatus > statusMonitors
Definition: status.h:38
static void MsgOsdClear(void)
Definition: status.c:93
static void MsgChannelChange(const cChannel *Channel)
Definition: status.c:33
static void MsgSetAudioTrack(int Index, const char *const *Tracks)
Definition: status.c:75
static void MsgOsdCurrentItem(const char *Text, int Index=-1)
Definition: status.c:123
static void MsgTimerChange(const cTimer *Timer, eTimerChange Change)
Definition: status.c:39
static void MsgOsdTextItem(const char *Text, bool Scroll=false)
Definition: status.c:129
static void MsgSetSubtitleTrack(int Index, const char *const *Tracks)
Definition: status.c:87
static void MsgChannelSwitch(const cDevice *Device, int ChannelNumber, bool LiveView)
Definition: status.c:45
virtual ~cStatus() override
Definition: status.c:26
Definition: timers.h:31
eMessageType
Definition: skins.h:37
static cMutex Mutex
Definition: status.c:17
eTimerChange
Definition: status.h:32