mirror of
https://github.com/rofafor/vdr-plugin-iptv.git
synced 2023-10-10 13:37:03 +02:00
Fixed a locking bug with section filters.
This commit is contained in:
parent
b221a9a406
commit
74761da04a
1
HISTORY
1
HISTORY
@ -98,3 +98,4 @@ VDR Plugin 'iptv' Revision History
|
||||
2009-xx-xx: Version 0.2.6
|
||||
|
||||
- Added a note about recommended frequencies into README.
|
||||
- Fixed a locking bug with section filters.
|
||||
|
7
device.c
7
device.c
@ -329,6 +329,8 @@ int cIptvDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask)
|
||||
// Blacklist check, refuse certain filters
|
||||
if (IsBlackListed(Pid, Tid, Mask))
|
||||
return -1;
|
||||
// Lock
|
||||
cMutexLock MutexLock(&mutex);
|
||||
// Search the next free filter slot
|
||||
for (unsigned int i = 0; i < eMaxSecFilterCount; ++i) {
|
||||
if (!secfilters[i]) {
|
||||
@ -343,6 +345,9 @@ int cIptvDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask)
|
||||
|
||||
void cIptvDevice::CloseFilter(int Handle)
|
||||
{
|
||||
// Lock
|
||||
cMutexLock MutexLock(&mutex);
|
||||
// Search the filter for deletion
|
||||
for (unsigned int i = 0; i < eMaxSecFilterCount; ++i) {
|
||||
if (secfilters[i] && (Handle == secfilters[i]->GetReadDesc())) {
|
||||
//debug("cIptvDevice::CloseFilter(%d): %d\n", deviceIndex, Handle);
|
||||
@ -435,6 +440,8 @@ bool cIptvDevice::GetTSPacket(uchar *&Data)
|
||||
// Analyze incomplete streams with built-in pid analyzer
|
||||
if (pidScanEnabled && pPidScanner)
|
||||
pPidScanner->Process(p);
|
||||
// Lock
|
||||
cMutexLock MutexLock(&mutex);
|
||||
// Run the data through all filters
|
||||
for (unsigned int i = 0; i < eMaxSecFilterCount; ++i) {
|
||||
if (secfilters[i])
|
||||
|
Loading…
Reference in New Issue
Block a user