From: leslie Date: Sun, 28 Feb 2010 05:06:16 +0000 (+0800) Subject: fix segfault with vdr 1.7.11+ and --help X-Git-Tag: upstream/620~89 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=b8acd1e126e244ad8fc8f8d0810ca9f8b69677ee;p=sasc-ng.git fix segfault with vdr 1.7.11+ and --help --- diff --git a/cam.c b/cam.c index 0a47e92..804dcee 100644 --- a/cam.c +++ b/cam.c @@ -3139,7 +3139,7 @@ bool cScDvbDevice::ForceBudget(int n) static int *vdr_nci=0, *vdr_ud=0, vdr_save_ud; #endif -void cScDvbDevice::Capture(void) +void cScDvbDevice::OnPluginLoad(void) { #if APIVERSNUM >= 10711 scProbe=new cScDvbDeviceProbe; @@ -3164,10 +3164,16 @@ void cScDvbDevice::Capture(void) #endif } -bool cScDvbDevice::Initialize(void) +void cScDvbDevice::OnPluginUnload(void) { #if APIVERSNUM >= 10711 delete scProbe; scProbe=0; +#endif +} + +bool cScDvbDevice::Initialize(void) +{ +#if APIVERSNUM >= 10711 return true; #else if(!vdr_nci || !vdr_ud) { @@ -3510,7 +3516,10 @@ bool cScDvbDevice::ForceBudget(int n) return true; } -void cScDvbDevice::Capture(void) +void cScDvbDevice::OnPluginLoad(void) +{} + +void cScDvbDevice::OnPluginUnload(void) {} bool cScDvbDevice::Initialize(void) diff --git a/cam.h b/cam.h index 2dda4ca..a8cd183 100644 --- a/cam.h +++ b/cam.h @@ -245,7 +245,8 @@ public: virtual int ProvidesCa(const cChannel *Channel) const; #endif #endif //SASC - static void Capture(void); + static void OnPluginLoad(void); + static void OnPluginUnload(void); static bool Initialize(void); static void Startup(void); static void Shutdown(void); diff --git a/sc.c b/sc.c index 120b887..5afb242 100644 --- a/sc.c +++ b/sc.c @@ -1277,7 +1277,7 @@ cScPlugin::cScPlugin(void) #else dllSuccess=true; #endif - if(dllSuccess) cScDvbDevice::Capture(); + if(dllSuccess) cScDvbDevice::OnPluginLoad(); keeper=0; } @@ -1286,6 +1286,7 @@ cScPlugin::~cScPlugin() delete keeper; delete ScOpts; delete LogOpts; + cScDvbDevice::OnPluginUnload(); } bool cScPlugin::Initialize(void)