diff options
| author | Klaus Schmidinger <vdr@tvdr.de> | 2013-03-08 13:47:02 +0100 | 
|---|---|---|
| committer | Klaus Schmidinger <vdr@tvdr.de> | 2013-03-08 13:47:02 +0100 | 
| commit | d08777ed87b68faca08959d561e1134563f91073 (patch) | |
| tree | 344e4dd10758d19ff5c25940fb1a55d84a029eb7 | |
| parent | f7645402ffd4f79cc92278135bc29f1b477f3682 (diff) | |
| download | vdr-d08777ed87b68faca08959d561e1134563f91073.tar.gz vdr-d08777ed87b68faca08959d561e1134563f91073.tar.bz2 | |
Limited the Goto() call in cDvbPlayer::SetAudioTrack() to the main thread
| -rw-r--r-- | HISTORY | 4 | ||||
| -rw-r--r-- | dvbplayer.c | 4 | 
2 files changed, 6 insertions, 2 deletions
| @@ -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; | 
