summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2014-02-01 13:16:20 +0100
committerlouis <louis.braun@gmx.de>2014-02-01 13:16:20 +0100
commit5ab9ad2ed362150cd7c06b4782d444495495f2db (patch)
tree0c12ad94720e55999395f2d7bd670788f4bd8eda
parentaf70b4e06b5229343a3a68935d84200d637d417b (diff)
downloadskin-nopacity-5ab9ad2ed362150cd7c06b4782d444495495f2db.tar.gz
skin-nopacity-5ab9ad2ed362150cd7c06b4782d444495495f2db.tar.bz2
Fixed a bug with xine as output plugin that VDR crashes if xine plugin gets closed
-rw-r--r--HISTORY2
-rw-r--r--displaychannel.c13
-rw-r--r--displaychannelview.c5
-rw-r--r--displaychannelview.h2
4 files changed, 15 insertions, 7 deletions
diff --git a/HISTORY b/HISTORY
index be099bd..8b945b9 100644
--- a/HISTORY
+++ b/HISTORY
@@ -401,3 +401,5 @@ Version 1.0.3
- Fixed bugs that configured OSD top and left values are not correctly
used in DisplayChannel, DisplayTracks, DisplayVolume and
DisplayMessages (closes Tickets 1659 and 1696)
+- Fixed a bug with xine as output plugin that VDR crashes if xine plugin
+ gets closed (closes Ticket 1675)
diff --git a/displaychannel.c b/displaychannel.c
index c53d5f4..7beed49 100644
--- a/displaychannel.c
+++ b/displaychannel.c
@@ -24,11 +24,14 @@ cNopacityDisplayChannel::cNopacityDisplayChannel(cImageCache *imgCache, bool Wit
FrameTime = FadeTime / 10;
channelView = new cNopacityDisplayChannelView(imgCache);
- channelView->createOsd();
- channelView->CreatePixmaps();
- channelView->DrawBackground();
- if (config.GetValue("displaySignalStrength")) {
- channelView->DrawSignalMeter();
+ if (!channelView->createOsd()) {
+ doOutput = false;
+ } else {
+ channelView->CreatePixmaps();
+ channelView->DrawBackground();
+ if (config.GetValue("displaySignalStrength")) {
+ channelView->DrawSignalMeter();
+ }
}
}
diff --git a/displaychannelview.c b/displaychannelview.c
index d4c219f..0b8a5ed 100644
--- a/displaychannelview.c
+++ b/displaychannelview.c
@@ -52,11 +52,14 @@ cNopacityDisplayChannelView::~cNopacityDisplayChannelView() {
delete osd;
}
-void cNopacityDisplayChannelView::createOsd(void) {
+bool cNopacityDisplayChannelView::createOsd(void) {
osd = CreateOsd(geoManager->osdLeft,
geoManager->osdTop,
geoManager->osdWidth,
geoManager->osdHeight);
+ if (!osd)
+ return false;
+ return true;
}
void cNopacityDisplayChannelView::CreatePixmaps(void) {
diff --git a/displaychannelview.h b/displaychannelview.h
index 0bd3eaf..4b28e04 100644
--- a/displaychannelview.h
+++ b/displaychannelview.h
@@ -38,7 +38,7 @@ private:
public:
cNopacityDisplayChannelView(cImageCache *imgCache);
virtual ~cNopacityDisplayChannelView();
- void createOsd(void);
+ bool createOsd(void);
void CreatePixmaps(void);
void SetAlpha(int alpha);
void DrawBackground(void);