summaryrefslogtreecommitdiff
path: root/skins.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2018-04-28 12:17:22 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2018-04-28 12:17:22 +0200
commit820a0ddb8a046c04833c667ecaf0148babe837bc (patch)
tree26833126c8523e7f19035fe50d3dded3f434510b /skins.c
parentd84ec07ff67f259c17462f7aa7a5c489e5f05713 (diff)
downloadvdr-820a0ddb8a046c04833c667ecaf0148babe837bc.tar.gz
vdr-820a0ddb8a046c04833c667ecaf0148babe837bc.tar.bz2
Fixed a possible invalid locking sequence in case a remote timer handling error message is displayed on the OSD and the skin tries to lock the Recordings or DeletedRecordings list in its Flush() function
Diffstat (limited to 'skins.c')
-rw-r--r--skins.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/skins.c b/skins.c
index 8d00e8d4..b5c447b0 100644
--- a/skins.c
+++ b/skins.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: skins.c 3.1 2013/08/18 12:07:22 kls Exp $
+ * $Id: skins.c 4.1 2018/04/28 12:13:01 kls Exp $
*/
#include "skins.h"
@@ -352,6 +352,14 @@ void cSkins::ProcessQueuedMessages(void)
dsyslog("cSkins::ProcessQueuedMessages() called from background thread - ignored!");
return;
}
+ // Check whether there is a cSkinDisplay object (if any) that implements SetMessage():
+ if (cSkinDisplay *sd = cSkinDisplay::Current()) {
+ if (!(dynamic_cast<cSkinDisplayChannel *>(sd) ||
+ dynamic_cast<cSkinDisplayMenu *>(sd) ||
+ dynamic_cast<cSkinDisplayReplay *>(sd) ||
+ dynamic_cast<cSkinDisplayMessage *>(sd)))
+ return;
+ }
cSkinQueuedMessage *msg = NULL;
// Get the first waiting message:
queueMessageMutex.Lock();