Fixed a segfault that sometimes happened when killing VDR

This commit is contained in:
Klaus Schmidinger 2001-03-31 15:04:37 +02:00
parent 2eebbba75e
commit f3f2d4577d
4 changed files with 695 additions and 690 deletions

View File

@ -444,3 +444,4 @@ Video Disk Recorder Revision History
CAM card for FTA recordings unless necessary. This is only important for CAM card for FTA recordings unless necessary. This is only important for
systems with three or more DVB cards. systems with three or more DVB cards.
- Added the "statdvb2vdr" tool from Hans-Peter Raschke. - Added the "statdvb2vdr" tool from Hans-Peter Raschke.
- Fixed a segfault that sometimes happened when killing VDR.

View File

@ -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: dvbapi.c 1.65 2001/03/31 10:46:17 kls Exp $ * $Id: dvbapi.c 1.66 2001/03/31 15:01:57 kls Exp $
*/ */
#include "dvbapi.h" #include "dvbapi.h"
@ -1488,7 +1488,7 @@ cDvbApi::~cDvbApi()
StopTransfer(); StopTransfer();
OvlO(false); //Overlay off! OvlO(false); //Overlay off!
//XXX the following call sometimes causes a segfault - driver problem? //XXX the following call sometimes causes a segfault - driver problem?
close(videoDev); //XXX close(videoDev);
} }
#if defined(DEBUG_OSD) || defined(REMOTE_KBD) #if defined(DEBUG_OSD) || defined(REMOTE_KBD)
endwin(); endwin();

9
eit.c
View File

@ -13,7 +13,7 @@
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (at your option) any later version. *
* * * *
* $Id: eit.c 1.13 2001/03/03 13:23:00 kls Exp $ * $Id: eit.c 1.14 2001/03/31 15:03:16 kls Exp $
***************************************************************************/ ***************************************************************************/
#include "eit.h" #include "eit.h"
@ -1125,7 +1125,8 @@ cSIProcessor::~cSIProcessor()
{ {
if (fsvbi >= 0) if (fsvbi >= 0)
{ {
Cancel(); active = false;
Cancel(3);
ShutDownFilters(); ShutDownFilters();
delete filters; delete filters;
if (!--numSIProcessors) // the last one deletes it if (!--numSIProcessors) // the last one deletes it
@ -1153,7 +1154,9 @@ void cSIProcessor::Action()
time_t lastDump = time(NULL); time_t lastDump = time(NULL);
struct pollfd pfd; struct pollfd pfd;
while(true) active = true;
while(active)
{ {
if (masterSIProcessor) if (masterSIProcessor)
{ {

3
eit.h
View File

@ -13,7 +13,7 @@
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (at your option) any later version. *
* * * *
* $Id: eit.h 1.4 2000/11/24 14:35:22 kls Exp $ * $Id: eit.h 1.5 2001/03/31 12:42:52 kls Exp $
***************************************************************************/ ***************************************************************************/
#ifndef __EIT_H #ifndef __EIT_H
@ -130,6 +130,7 @@ private:
bool useTStime; bool useTStime;
SIP_FILTER *filters; SIP_FILTER *filters;
int fsvbi; int fsvbi;
bool active;
bool RefreshFilters(void); bool RefreshFilters(void);
void Action(void); void Action(void);
public: public: