mirror of
https://github.com/rofafor/vdr-plugin-iptv.git
synced 2023-10-10 13:37:03 +02:00
Bug and style fixes.
This commit is contained in:
parent
28d1869a28
commit
4915630cfc
4
common.c
4
common.c
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: common.c,v 1.8 2007/10/26 23:18:50 rahrenbe Exp $
|
||||
* $Id: common.c,v 1.9 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include <vdr/tools.h>
|
||||
@ -23,7 +23,7 @@ uint8_t payload(const uint8_t *tsp)
|
||||
if (tsp[4] > 183) // corrupted data?
|
||||
return 0;
|
||||
else
|
||||
return 184 - 1 - tsp[4];
|
||||
return (184 - 1) - tsp[4];
|
||||
}
|
||||
|
||||
return 184;
|
||||
|
4
common.h
4
common.h
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: common.h,v 1.18 2007/10/28 16:22:44 rahrenbe Exp $
|
||||
* $Id: common.h,v 1.19 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#ifndef __IPTV_COMMON_H
|
||||
@ -63,6 +63,8 @@
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
|
||||
|
||||
uint16_t ts_pid(const uint8_t *buf);
|
||||
uint8_t payload(const uint8_t *tsp);
|
||||
const char *id_pid(const u_short Pid);
|
||||
|
14
config.c
14
config.c
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: config.c,v 1.18 2007/10/20 17:26:46 rahrenbe Exp $
|
||||
* $Id: config.c,v 1.19 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
@ -19,27 +19,27 @@ cIptvConfig::cIptvConfig(void)
|
||||
sectionFiltering(1),
|
||||
sidScanning(1)
|
||||
{
|
||||
for (unsigned int i = 0; i < sizeof(disabledFilters); ++i)
|
||||
for (unsigned int i = 0; i < ARRAY_SIZE(disabledFilters) - 1; ++i)
|
||||
disabledFilters[i] = -1;
|
||||
memset(configDirectory, '\0', sizeof(configDirectory));
|
||||
}
|
||||
|
||||
unsigned int cIptvConfig::GetDisabledFiltersCount(void)
|
||||
unsigned int cIptvConfig::GetDisabledFiltersCount(void) const
|
||||
{
|
||||
unsigned int n = 0;
|
||||
while ((disabledFilters[n] != -1) && (n < sizeof(disabledFilters)))
|
||||
while ((disabledFilters[n] != -1) && (n < ARRAY_SIZE(disabledFilters) - 1))
|
||||
n++;
|
||||
return n;
|
||||
}
|
||||
|
||||
int cIptvConfig::GetDisabledFilters(unsigned int Index)
|
||||
int cIptvConfig::GetDisabledFilters(unsigned int Index) const
|
||||
{
|
||||
return (Index < sizeof(disabledFilters)) ? disabledFilters[Index] : -1;
|
||||
return (Index < ARRAY_SIZE(disabledFilters)) ? disabledFilters[Index] : -1;
|
||||
}
|
||||
|
||||
void cIptvConfig::SetDisabledFilters(unsigned int Index, int Number)
|
||||
{
|
||||
if (Index < sizeof(disabledFilters))
|
||||
if (Index < ARRAY_SIZE(disabledFilters))
|
||||
disabledFilters[Index] = Number;
|
||||
}
|
||||
|
||||
|
22
config.h
22
config.h
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: config.h,v 1.17 2007/10/28 16:22:44 rahrenbe Exp $
|
||||
* $Id: config.h,v 1.18 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#ifndef __IPTV_CONFIG_H
|
||||
@ -27,16 +27,16 @@ private:
|
||||
|
||||
public:
|
||||
cIptvConfig();
|
||||
unsigned int GetReadBufferTsCount(void) { return readBufferTsCount; }
|
||||
unsigned int GetTsBufferSize(void) { return tsBufferSize; }
|
||||
unsigned int GetTsBufferPrefillRatio(void) { return tsBufferPrefillRatio; }
|
||||
unsigned int GetExtProtocolBasePort(void) { return extProtocolBasePort; }
|
||||
unsigned int GetUseBytes(void) { return useBytes; }
|
||||
unsigned int GetSectionFiltering(void) { return sectionFiltering; }
|
||||
unsigned int GetSidScanning(void) { return sidScanning; }
|
||||
const char *GetConfigDirectory(void) { return configDirectory; }
|
||||
unsigned int GetDisabledFiltersCount(void);
|
||||
int GetDisabledFilters(unsigned int Index);
|
||||
unsigned int GetReadBufferTsCount(void) const { return readBufferTsCount; }
|
||||
unsigned int GetTsBufferSize(void) const { return tsBufferSize; }
|
||||
unsigned int GetTsBufferPrefillRatio(void) const { return tsBufferPrefillRatio; }
|
||||
unsigned int GetExtProtocolBasePort(void) const { return extProtocolBasePort; }
|
||||
unsigned int GetUseBytes(void) const { return useBytes; }
|
||||
unsigned int GetSectionFiltering(void) const { return sectionFiltering; }
|
||||
unsigned int GetSidScanning(void) const { return sidScanning; }
|
||||
const char *GetConfigDirectory(void) const { return configDirectory; }
|
||||
unsigned int GetDisabledFiltersCount(void) const;
|
||||
int GetDisabledFilters(unsigned int Index) const;
|
||||
void SetTsBufferSize(unsigned int Size) { tsBufferSize = Size; }
|
||||
void SetTsBufferPrefillRatio(unsigned int Ratio) { tsBufferPrefillRatio = Ratio; }
|
||||
void SetExtProtocolBasePort(unsigned int PortNumber) { extProtocolBasePort = PortNumber; }
|
||||
|
7
device.c
7
device.c
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: device.c,v 1.76 2007/10/26 23:48:30 rahrenbe Exp $
|
||||
* $Id: device.c,v 1.77 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
@ -33,7 +33,7 @@ cIptvDevice::cIptvDevice(unsigned int Index)
|
||||
pExtProtocol = new cIptvProtocolExt();
|
||||
pIptvStreamer = new cIptvStreamer(tsBuffer, &mutex);
|
||||
// Initialize filter pointers
|
||||
memset(&secfilters, '\0', sizeof(secfilters));
|
||||
memset(secfilters, '\0', sizeof(secfilters));
|
||||
// Start section handler for iptv device
|
||||
StartSectionHandler();
|
||||
// Sid scanner must be created after the section handler
|
||||
@ -320,7 +320,8 @@ void cIptvDevice::CloseDvr(void)
|
||||
debug("cIptvDevice::CloseDvr(%d)\n", deviceIndex);
|
||||
if (pSidScanner && IptvConfig.GetSectionFiltering() && IptvConfig.GetSidScanning())
|
||||
pSidScanner->SetStatus(false);
|
||||
pIptvStreamer->Close();
|
||||
if (pIptvStreamer)
|
||||
pIptvStreamer->Close();
|
||||
isOpenDvr = false;
|
||||
}
|
||||
|
||||
|
8
device.h
8
device.h
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: device.h,v 1.34 2007/10/19 21:36:28 rahrenbe Exp $
|
||||
* $Id: device.h,v 1.35 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#ifndef __IPTV_DEVICE_H
|
||||
@ -53,8 +53,12 @@ public:
|
||||
virtual ~cIptvDevice();
|
||||
cString GetInformation(unsigned int Page = IPTV_DEVICE_INFO_ALL);
|
||||
|
||||
// for statistics and general information
|
||||
// copy and assignment constructors
|
||||
private:
|
||||
cIptvDevice(const cIptvDevice&);
|
||||
cIptvDevice& operator=(const cIptvDevice&);
|
||||
|
||||
// for statistics and general information
|
||||
cString GetGeneralInformation(void);
|
||||
cString GetPidsInformation(void);
|
||||
cString GetFiltersInformation(void);
|
||||
|
7
iptv.c
7
iptv.c
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: iptv.c,v 1.29 2007/11/04 17:07:25 rahrenbe Exp $
|
||||
* $Id: iptv.c,v 1.30 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include <getopt.h>
|
||||
@ -193,7 +193,10 @@ bool cPluginIptv::SetupParse(const char *Name, const char *Value)
|
||||
else if (!strcasecmp(Name, "SidScanning"))
|
||||
IptvConfig.SetSidScanning(atoi(Value));
|
||||
else if (!strcasecmp(Name, "DisabledFilters")) {
|
||||
int DisabledFilters[SECTION_FILTER_TABLE_SIZE] = { -1 };
|
||||
int DisabledFilters[SECTION_FILTER_TABLE_SIZE];
|
||||
for (unsigned int i = 0; i < ARRAY_SIZE(DisabledFilters); ++i) {
|
||||
DisabledFilters[i] = -1;
|
||||
}
|
||||
int DisabledFiltersCount = ParseFilters(Value, DisabledFilters);
|
||||
for (int i = 0; i < DisabledFiltersCount; ++i)
|
||||
IptvConfig.SetDisabledFilters(i, DisabledFilters[i]);
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: protocolext.c,v 1.20 2007/10/21 19:32:14 ajhseppa Exp $
|
||||
* $Id: protocolext.c,v 1.21 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include <sys/wait.h>
|
||||
@ -33,7 +33,7 @@ cIptvProtocolExt::~cIptvProtocolExt()
|
||||
{
|
||||
debug("cIptvProtocolExt::~cIptvProtocolExt()\n");
|
||||
// Drop the socket connection
|
||||
Close();
|
||||
cIptvProtocolExt::Close();
|
||||
// Free allocated memory
|
||||
free(scriptFile);
|
||||
free(listenAddr);
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: protocolext.h,v 1.8 2007/10/21 17:32:43 ajhseppa Exp $
|
||||
* $Id: protocolext.h,v 1.9 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#ifndef __IPTV_PROTOCOLEXT_H
|
||||
@ -28,10 +28,10 @@ public:
|
||||
cIptvProtocolExt();
|
||||
virtual ~cIptvProtocolExt();
|
||||
int Read(unsigned char* *BufferAddr);
|
||||
virtual bool Set(const char* Location, const int Parameter, const int Index);
|
||||
virtual bool Open(void);
|
||||
virtual bool Close(void);
|
||||
virtual cString GetInformation(void);
|
||||
bool Set(const char* Location, const int Parameter, const int Index);
|
||||
bool Open(void);
|
||||
bool Close(void);
|
||||
cString GetInformation(void);
|
||||
};
|
||||
|
||||
#endif // __IPTV_PROTOCOLEXT_H
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: protocolfile.c,v 1.14 2007/10/20 23:25:14 ajhseppa Exp $
|
||||
* $Id: protocolfile.c,v 1.15 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include <fcntl.h>
|
||||
@ -32,7 +32,7 @@ cIptvProtocolFile::~cIptvProtocolFile()
|
||||
{
|
||||
debug("cIptvProtocolFile::~cIptvProtocolFile()\n");
|
||||
// Drop open handles
|
||||
Close();
|
||||
cIptvProtocolFile::Close();
|
||||
// Free allocated memory
|
||||
free(fileLocation);
|
||||
free(readBuffer);
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: protocolfile.h,v 1.7 2007/10/19 22:18:55 rahrenbe Exp $
|
||||
* $Id: protocolfile.h,v 1.8 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#ifndef __IPTV_PROTOCOLFILE_H
|
||||
@ -28,11 +28,11 @@ private:
|
||||
public:
|
||||
cIptvProtocolFile();
|
||||
virtual ~cIptvProtocolFile();
|
||||
virtual int Read(unsigned char* *BufferAddr);
|
||||
virtual bool Set(const char* Location, const int Parameter, const int Index);
|
||||
virtual bool Open(void);
|
||||
virtual bool Close(void);
|
||||
virtual cString GetInformation(void);
|
||||
int Read(unsigned char* *BufferAddr);
|
||||
bool Set(const char* Location, const int Parameter, const int Index);
|
||||
bool Open(void);
|
||||
bool Close(void);
|
||||
cString GetInformation(void);
|
||||
};
|
||||
|
||||
#endif // __IPTV_PROTOCOLFILE_H
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: protocolhttp.c,v 1.21 2007/10/21 19:46:03 rahrenbe Exp $
|
||||
* $Id: protocolhttp.c,v 1.22 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
@ -30,7 +30,7 @@ cIptvProtocolHttp::~cIptvProtocolHttp()
|
||||
{
|
||||
debug("cIptvProtocolHttp::~cIptvProtocolHttp()\n");
|
||||
// Close the socket
|
||||
Close();
|
||||
cIptvProtocolHttp::Close();
|
||||
// Free allocated memory
|
||||
free(streamPath);
|
||||
free(streamAddr);
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: protocolhttp.h,v 1.11 2007/10/21 17:32:43 ajhseppa Exp $
|
||||
* $Id: protocolhttp.h,v 1.12 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#ifndef __IPTV_PROTOCOLHTTP_H
|
||||
@ -29,10 +29,10 @@ public:
|
||||
cIptvProtocolHttp();
|
||||
virtual ~cIptvProtocolHttp();
|
||||
int Read(unsigned char* *BufferAddr);
|
||||
virtual bool Set(const char* Location, const int Parameter, const int Index);
|
||||
virtual bool Open(void);
|
||||
virtual bool Close(void);
|
||||
virtual cString GetInformation(void);
|
||||
bool Set(const char* Location, const int Parameter, const int Index);
|
||||
bool Open(void);
|
||||
bool Close(void);
|
||||
cString GetInformation(void);
|
||||
};
|
||||
|
||||
#endif // __IPTV_PROTOCOLHTTP_H
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: protocoludp.c,v 1.21 2007/10/21 19:32:15 ajhseppa Exp $
|
||||
* $Id: protocoludp.c,v 1.22 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
@ -29,7 +29,7 @@ cIptvProtocolUdp::~cIptvProtocolUdp()
|
||||
{
|
||||
debug("cIptvProtocolUdp::~cIptvProtocolUdp()\n");
|
||||
// Drop the multicast group and close the socket
|
||||
Close();
|
||||
cIptvProtocolUdp::Close();
|
||||
// Free allocated memory
|
||||
free(streamAddr);
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: protocoludp.h,v 1.12 2007/10/21 17:32:43 ajhseppa Exp $
|
||||
* $Id: protocoludp.h,v 1.13 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#ifndef __IPTV_PROTOCOLUDP_H
|
||||
@ -25,10 +25,10 @@ public:
|
||||
cIptvProtocolUdp();
|
||||
virtual ~cIptvProtocolUdp();
|
||||
int Read(unsigned char* *BufferAddr);
|
||||
virtual bool Set(const char* Location, const int Parameter, const int Index);
|
||||
virtual bool Open(void);
|
||||
virtual bool Close(void);
|
||||
virtual cString GetInformation(void);
|
||||
bool Set(const char* Location, const int Parameter, const int Index);
|
||||
bool Open(void);
|
||||
bool Close(void);
|
||||
cString GetInformation(void);
|
||||
};
|
||||
|
||||
#endif // __IPTV_PROTOCOLUDP_H
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: sectionfilter.c,v 1.15 2007/10/20 23:25:14 ajhseppa Exp $
|
||||
* $Id: sectionfilter.c,v 1.16 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include "sectionfilter.h"
|
||||
@ -283,7 +283,7 @@ void cIptvSectionFilter::ProcessData(const uint8_t* buf)
|
||||
const uint8_t *before = &buf[p + 1];
|
||||
uint8_t before_len = buf[p];
|
||||
const uint8_t *after = &before[before_len];
|
||||
uint8_t after_len = count - 1 - before_len;
|
||||
uint8_t after_len = (count - 1) - before_len;
|
||||
|
||||
demux_swfilter_section_copy_dump(before, before_len);
|
||||
/* before start of new section, set pusi_seen = 1 */
|
||||
|
20
setup.c
20
setup.c
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: setup.c,v 1.44 2007/11/04 15:23:16 rahrenbe Exp $
|
||||
* $Id: setup.c,v 1.45 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
@ -73,7 +73,7 @@ cString cIptvMenuEditChannel::GetIptvSettings(const char *Param, int *Parameter,
|
||||
char *tag = NULL;
|
||||
char *proto = NULL;
|
||||
char *loc = NULL;
|
||||
if (sscanf(Param, "%a[^|]|%a[^|]|%a[^|]|%u", &tag, &proto, &loc, Parameter) == 4) {
|
||||
if (sscanf(Param, "%a[^|]|%a[^|]|%a[^|]|%d", &tag, &proto, &loc, Parameter) == 4) {
|
||||
cString tagstr(tag, true);
|
||||
cString protostr(proto, true);
|
||||
cString locstr(loc, true);
|
||||
@ -106,13 +106,13 @@ void cIptvMenuEditChannel::GetChannelData(cChannel *Channel)
|
||||
data.vpid = Channel->Vpid();
|
||||
data.ppid = Channel->Ppid();
|
||||
data.tpid = Channel->Tpid();
|
||||
for (unsigned int i = 0; i < sizeof(data.apid); ++i)
|
||||
for (unsigned int i = 0; i < ARRAY_SIZE(data.apid); ++i)
|
||||
data.apid[i] = Channel->Apid(i);
|
||||
for (unsigned int i = 0; i < sizeof(data.dpid); ++i)
|
||||
for (unsigned int i = 0; i < ARRAY_SIZE(data.dpid); ++i)
|
||||
data.dpid[i] = Channel->Dpid(i);
|
||||
for (unsigned int i = 0; i < sizeof(data.spid); ++i)
|
||||
for (unsigned int i = 0; i < ARRAY_SIZE(data.spid); ++i)
|
||||
data.spid[i] = Channel->Spid(i);
|
||||
for (unsigned int i = 0; i < sizeof(data.caids); ++i)
|
||||
for (unsigned int i = 0; i < ARRAY_SIZE(data.caids); ++i)
|
||||
data.caids[i] = Channel->Ca(i);
|
||||
data.sid = Channel->Sid();
|
||||
data.nid = Channel->Nid();
|
||||
@ -129,13 +129,13 @@ void cIptvMenuEditChannel::GetChannelData(cChannel *Channel)
|
||||
data.vpid = 0;
|
||||
data.ppid = 0;
|
||||
data.tpid = 0;
|
||||
for (unsigned int i = 0; i < sizeof(data.apid); ++i)
|
||||
for (unsigned int i = 0; i < ARRAY_SIZE(data.apid); ++i)
|
||||
data.apid[i] = 0;
|
||||
for (unsigned int i = 0; i < sizeof(data.dpid); ++i)
|
||||
for (unsigned int i = 0; i < ARRAY_SIZE(data.dpid); ++i)
|
||||
data.dpid[i] = 0;
|
||||
for (unsigned int i = 0; i < sizeof(data.spid); ++i)
|
||||
for (unsigned int i = 0; i < ARRAY_SIZE(data.spid); ++i)
|
||||
data.spid[i] = 0;
|
||||
for (unsigned int i = 0; i < sizeof(data.caids); ++i)
|
||||
for (unsigned int i = 0; i < ARRAY_SIZE(data.caids); ++i)
|
||||
data.caids[i] = 0;
|
||||
data.sid = 1;
|
||||
data.nid = 0;
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: statistics.c,v 1.20 2007/10/11 23:06:49 rahrenbe Exp $
|
||||
* $Id: statistics.c,v 1.21 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
@ -84,7 +84,7 @@ cString cIptvPidStatistics::GetStatistic()
|
||||
IptvConfig.GetUseBytes() ? "B" : "bit");
|
||||
}
|
||||
}
|
||||
memset(&mostActivePids, '\0', sizeof(mostActivePids));
|
||||
memset(mostActivePids, '\0', sizeof(mostActivePids));
|
||||
return info;
|
||||
}
|
||||
|
||||
@ -110,7 +110,7 @@ void cIptvPidStatistics::AddStatistic(u_short Pid, long Payload)
|
||||
if (mostActivePids[i].pid == Pid) {
|
||||
mostActivePids[i].DataAmount += Payload;
|
||||
// Now re-sort the array and quit
|
||||
qsort(&mostActivePids, numberOfElements, sizeof(pidStruct), SortPids);
|
||||
qsort(mostActivePids, numberOfElements, sizeof(pidStruct), SortPids);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
10
streamer.c
10
streamer.c
@ -3,7 +3,7 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: streamer.c,v 1.27 2007/10/20 08:58:15 ajhseppa Exp $
|
||||
* $Id: streamer.c,v 1.28 2008/01/04 23:36:37 ajhseppa Exp $
|
||||
*/
|
||||
|
||||
#include <vdr/thread.h>
|
||||
@ -76,11 +76,13 @@ bool cIptvStreamer::Close(void)
|
||||
// Close the protocol. A mutex should be taken here to avoid a race condition
|
||||
// where thread Action() may be in the process of accessing the protocol.
|
||||
// Taking a mutex serializes the Close() and Action() -calls.
|
||||
if (protocol) {
|
||||
mutex->Lock();
|
||||
if (mutex)
|
||||
mutex->Lock();
|
||||
if (protocol)
|
||||
protocol->Close();
|
||||
if (mutex)
|
||||
mutex->Unlock();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user