summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2013-03-08 13:47:02 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2013-03-08 13:47:02 +0100
commitd08777ed87b68faca08959d561e1134563f91073 (patch)
tree344e4dd10758d19ff5c25940fb1a55d84a029eb7
parentf7645402ffd4f79cc92278135bc29f1b477f3682 (diff)
downloadvdr-d08777ed87b68faca08959d561e1134563f91073.tar.gz
vdr-d08777ed87b68faca08959d561e1134563f91073.tar.bz2
Limited the Goto() call in cDvbPlayer::SetAudioTrack() to the main thread
-rw-r--r--HISTORY4
-rw-r--r--dvbplayer.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/HISTORY b/HISTORY
index 23d191d1..092979c8 100644
--- a/HISTORY
+++ b/HISTORY
@@ -7689,7 +7689,7 @@ Video Disk Recorder Revision History
- When sorting recordings by name, folders are now always at the top of the list.
- Updated the Russian OSD texts (thanks to Oleg Roitburd).
-2013-03-07: Version 1.7.40
+2013-03-08: Version 1.7.40
- The "Recording info" page of the skins that come with VDR now displays the name of
the channel (if available) from which this recording was taken.
@@ -7722,3 +7722,5 @@ Video Disk Recorder Revision History
With this VDR now supports "multi streaming" on DVB-S2 and DVB-T2 transponders.
- Fixed a possible deadlock when changing the audio track while replaying a recording.
- Fixed resuming replay of PES recordings (reported by Oliver Endriss).
+- Limited the Goto() call in cDvbPlayer::SetAudioTrack() to the main thread, in order
+ to avoid a crash when the track is automatically set from the player thread.
diff --git a/dvbplayer.c b/dvbplayer.c
index 9f4d97e6..dc206a39 100644
--- a/dvbplayer.c
+++ b/dvbplayer.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbplayer.c 2.34 2013/03/07 14:38:26 kls Exp $
+ * $Id: dvbplayer.c 2.35 2013/03/08 13:44:19 kls Exp $
*/
#include "dvbplayer.h"
@@ -817,6 +817,8 @@ void cDvbPlayer::Goto(int Index, bool Still)
void cDvbPlayer::SetAudioTrack(eTrackType Type, const tTrackId *TrackId)
{
+ if (!cThread::IsMainThread())
+ return; // only do this upon user interaction
if (playMode == pmPlay) {
if (!ptsIndex.IsEmpty()) {
int Current, Total;