mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Keeping signal display from slowing things down during heavy zapping
This commit is contained in:
parent
edb85b014c
commit
61a9b09403
64
skinsttng.c
64
skinsttng.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: skinsttng.c 2.9 2011/06/12 14:40:50 kls Exp $
|
* $Id: skinsttng.c 2.10 2011/06/12 15:20:59 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Star Trek: The Next Generation® is a registered trademark of Paramount Pictures
|
// Star Trek: The Next Generation® is a registered trademark of Paramount Pictures
|
||||||
@ -139,6 +139,7 @@ private:
|
|||||||
int lastDeviceNumber;
|
int lastDeviceNumber;
|
||||||
int lastSignalStrength;
|
int lastSignalStrength;
|
||||||
int lastSignalQuality;
|
int lastSignalQuality;
|
||||||
|
time_t lastSignalDisplay;
|
||||||
tTrackId lastTrackId;
|
tTrackId lastTrackId;
|
||||||
static cBitmap bmTeletext, bmRadio, bmAudio, bmDolbyDigital, bmEncrypted, bmRecording;
|
static cBitmap bmTeletext, bmRadio, bmAudio, bmDolbyDigital, bmEncrypted, bmRecording;
|
||||||
public:
|
public:
|
||||||
@ -164,6 +165,7 @@ cSkinSTTNGDisplayChannel::cSkinSTTNGDisplayChannel(bool WithInfo)
|
|||||||
lastDeviceNumber = -1;
|
lastDeviceNumber = -1;
|
||||||
lastSignalStrength = -1;
|
lastSignalStrength = -1;
|
||||||
lastSignalQuality = -1;
|
lastSignalQuality = -1;
|
||||||
|
lastSignalDisplay = 0;
|
||||||
memset(&lastTrackId, 0, sizeof(lastTrackId));
|
memset(&lastTrackId, 0, sizeof(lastTrackId));
|
||||||
const cFont *font = cFont::GetFont(fontOsd);
|
const cFont *font = cFont::GetFont(fontOsd);
|
||||||
withInfo = WithInfo;
|
withInfo = WithInfo;
|
||||||
@ -282,6 +284,7 @@ void cSkinSTTNGDisplayChannel::SetChannel(const cChannel *Channel, int Number)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
osd->DrawText(x3 + TextFrame, y0, ChannelString(Channel, Number), Theme.Color(clrChannelName), frameColor, cFont::GetFont(fontOsd), x - x3 - TextFrame);
|
osd->DrawText(x3 + TextFrame, y0, ChannelString(Channel, Number), Theme.Color(clrChannelName), frameColor, cFont::GetFont(fontOsd), x - x3 - TextFrame);
|
||||||
|
lastSignalDisplay = time(NULL); // don't get slowed down during heavy zapping
|
||||||
}
|
}
|
||||||
|
|
||||||
void cSkinSTTNGDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Following)
|
void cSkinSTTNGDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Following)
|
||||||
@ -338,35 +341,38 @@ void cSkinSTTNGDisplayChannel::Flush(void)
|
|||||||
osd->DrawText(x3 + TextFrame, y6, Track ? Track->description : "", Theme.Color(clrChannelName), frameColor, font, x4 - x3 - w - 2 * TextFrame);
|
osd->DrawText(x3 + TextFrame, y6, Track ? Track->description : "", Theme.Color(clrChannelName), frameColor, font, x4 - x3 - w - 2 * TextFrame);
|
||||||
strn0cpy(lastTrackId.description, Track ? Track->description : "", sizeof(lastTrackId.description));
|
strn0cpy(lastTrackId.description, Track ? Track->description : "", sizeof(lastTrackId.description));
|
||||||
}
|
}
|
||||||
int DeviceNumber = cDevice::ActualDevice()->DeviceNumber() + 1;
|
if (time(NULL) != lastSignalDisplay) {
|
||||||
int SignalStrength = cDevice::ActualDevice()->SignalStrength();
|
int DeviceNumber = cDevice::ActualDevice()->DeviceNumber() + 1;
|
||||||
int SignalQuality = cDevice::ActualDevice()->SignalQuality();
|
int SignalStrength = cDevice::ActualDevice()->SignalStrength();
|
||||||
if (DeviceNumber != lastDeviceNumber || SignalStrength != lastSignalStrength || SignalQuality != lastSignalQuality) {
|
int SignalQuality = cDevice::ActualDevice()->SignalQuality();
|
||||||
int d = 3;
|
if (DeviceNumber != lastDeviceNumber || SignalStrength != lastSignalStrength || SignalQuality != lastSignalQuality) {
|
||||||
int h = ((y7 - y6 + 1) - 3 * d) / 2;
|
int d = 3;
|
||||||
int w = (x4 - x3) / 5;
|
int h = ((y7 - y6 + 1) - 3 * d) / 2;
|
||||||
int x = (x3 + x4) / 2 - w / 2;
|
int w = (x4 - x3) / 5;
|
||||||
if (SignalStrength >= 0) {
|
int x = (x3 + x4) / 2 - w / 2;
|
||||||
int s = SignalStrength * w / 100;
|
if (SignalStrength >= 0) {
|
||||||
osd->DrawRectangle(x, y6 + d, x + s - 1, y6 + d + h - 1, Theme.Color(clrChannelSignalValue));
|
int s = SignalStrength * w / 100;
|
||||||
osd->DrawRectangle(x + s, y6 + d, x + w - 1, y6 + d + h - 1, Theme.Color(clrChannelSignalRest));
|
osd->DrawRectangle(x, y6 + d, x + s - 1, y6 + d + h - 1, Theme.Color(clrChannelSignalValue));
|
||||||
|
osd->DrawRectangle(x + s, y6 + d, x + w - 1, y6 + d + h - 1, Theme.Color(clrChannelSignalRest));
|
||||||
|
}
|
||||||
|
else if (DeviceNumber != lastDeviceNumber)
|
||||||
|
osd->DrawRectangle(x, y6 + d, x + w - 1, y6 + d + h - 1, Theme.Color(clrChannelFrame));
|
||||||
|
if (SignalQuality >= 0) {
|
||||||
|
int q = SignalQuality * w / 100;
|
||||||
|
osd->DrawRectangle(x, y7 - d - h + 1, x + q - 1, y7 - d, Theme.Color(clrChannelSignalValue));
|
||||||
|
osd->DrawRectangle(x + q, y7 - d - h + 1, x + w - 1, y7 - d, Theme.Color(clrChannelSignalRest));
|
||||||
|
}
|
||||||
|
else if (DeviceNumber != lastDeviceNumber)
|
||||||
|
osd->DrawRectangle(x, y7 - d - h + 1, x + w - 1, y7 - d, Theme.Color(clrChannelFrame));
|
||||||
|
cString dn = cString::sprintf(" %d ", DeviceNumber);
|
||||||
|
const cFont *font = cFont::GetFont(fontSml);
|
||||||
|
int dw = font->Width(dn);
|
||||||
|
osd->DrawText(x - 2 * d - dw, y6, dn, Theme.Color(clrChannelDate), frameColor, font, dw);
|
||||||
|
lastDeviceNumber = DeviceNumber;
|
||||||
|
lastSignalStrength = SignalStrength;
|
||||||
|
lastSignalQuality = SignalQuality;
|
||||||
}
|
}
|
||||||
else if (DeviceNumber != lastDeviceNumber)
|
lastSignalDisplay = time(NULL);
|
||||||
osd->DrawRectangle(x, y6 + d, x + w - 1, y6 + d + h - 1, Theme.Color(clrChannelFrame));
|
|
||||||
if (SignalQuality >= 0) {
|
|
||||||
int q = SignalQuality * w / 100;
|
|
||||||
osd->DrawRectangle(x, y7 - d - h + 1, x + q - 1, y7 - d, Theme.Color(clrChannelSignalValue));
|
|
||||||
osd->DrawRectangle(x + q, y7 - d - h + 1, x + w - 1, y7 - d, Theme.Color(clrChannelSignalRest));
|
|
||||||
}
|
|
||||||
else if (DeviceNumber != lastDeviceNumber)
|
|
||||||
osd->DrawRectangle(x, y7 - d - h + 1, x + w - 1, y7 - d, Theme.Color(clrChannelFrame));
|
|
||||||
cString dn = cString::sprintf(" %d ", DeviceNumber);
|
|
||||||
const cFont *font = cFont::GetFont(fontSml);
|
|
||||||
int dw = font->Width(dn);
|
|
||||||
osd->DrawText(x - 2 * d - dw, y6, dn, Theme.Color(clrChannelDate), frameColor, font, dw);
|
|
||||||
lastDeviceNumber = DeviceNumber;
|
|
||||||
lastSignalStrength = SignalStrength;
|
|
||||||
lastSignalQuality = SignalQuality;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int seen = 0;
|
int seen = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user