kumquat-buildroot/package/kodi-pvr-mediaportal-tvserver/0005-Use-thread-sleep_for-instead-of-p8-time-utils.patch

309 lines
10 KiB
Diff
Raw Normal View History

From 4b4a16157870d5816339700616f1efdb60fb59e3 Mon Sep 17 00:00:00 2001
From: phunkyfish <phunkyfish@gmail.com>
Date: Wed, 7 Oct 2020 18:12:10 +0100
Subject: [PATCH] Use thread sleep_for instead of p8 time utils
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
src/lib/tsreader/DeMultiplexer.cpp | 6 ++++--
src/lib/tsreader/FileReader.cpp | 5 +++--
src/lib/tsreader/MemoryBuffer.cpp | 5 +++--
src/lib/tsreader/MepoRTSPClient.cpp | 5 +++--
src/lib/tsreader/MultiFileReader.cpp | 9 +++++----
src/lib/tsreader/TSReader.cpp | 5 +++--
src/pvrclient-mediaportal.cpp | 23 +++++++++++++----------
7 files changed, 34 insertions(+), 24 deletions(-)
diff --git a/src/lib/tsreader/DeMultiplexer.cpp b/src/lib/tsreader/DeMultiplexer.cpp
index 63bf20e..436e452 100644
--- a/src/lib/tsreader/DeMultiplexer.cpp
+++ b/src/lib/tsreader/DeMultiplexer.cpp
@@ -37,6 +37,8 @@
#include <kodi/General.h> //for kodi::Log
#include "TSReader.h"
+#include <thread>
+
#define MAX_BUF_SIZE 8000
#define BUFFER_LENGTH 0x1000
#define READ_SIZE (1316*30)
@@ -83,7 +85,7 @@ namespace MPTV
{
size_t BytesRead = ReadFromFile();
if (0 == BytesRead)
- usleep(10000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
m_bStarting = false;
}
@@ -248,7 +250,7 @@ namespace MPTV
{
size_t BytesRead = ReadFromFile();
if (0 == BytesRead)
- usleep(10000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(10));
dwBytesProcessed += BytesRead;
}
diff --git a/src/lib/tsreader/FileReader.cpp b/src/lib/tsreader/FileReader.cpp
index 3df22f2..73b23af 100644
--- a/src/lib/tsreader/FileReader.cpp
+++ b/src/lib/tsreader/FileReader.cpp
@@ -37,10 +37,10 @@
#include "TSDebug.h"
#include "p8-platform/threads/threads.h"
#include <algorithm> //std::min, std::max
-#include "p8-platform/util/timeutils.h" // for usleep
#include "utils.h"
#include <errno.h>
+#include <thread>
/* indicate that caller can handle truncated reads, where function returns before entire buffer has been filled */
#define READ_TRUNCATED 0x01
@@ -145,7 +145,8 @@ namespace MPTV
}
}
}
- usleep(20000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(20));
+
} while (--Tmo);
if (Tmo)
diff --git a/src/lib/tsreader/MemoryBuffer.cpp b/src/lib/tsreader/MemoryBuffer.cpp
index 609b575..0e736f2 100644
--- a/src/lib/tsreader/MemoryBuffer.cpp
+++ b/src/lib/tsreader/MemoryBuffer.cpp
@@ -29,12 +29,13 @@
#ifdef LIVE555
-#include "p8-platform/util/timeutils.h"
#include "p8-platform/threads/mutex.h"
#include "MemoryBuffer.h"
#include <kodi/General.h> //for kodi::Log
#include "TSDebug.h"
+#include <thread>
+
#define MAX_MEMORY_BUFFER_SIZE (1024L*1024L*12L)
CMemoryBuffer::CMemoryBuffer(void)
@@ -197,7 +198,7 @@ long CMemoryBuffer::PutBuffer(unsigned char *pbData, size_t lDataLength)
if (sleep)
{
- usleep(10000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
return S_OK;
}
diff --git a/src/lib/tsreader/MepoRTSPClient.cpp b/src/lib/tsreader/MepoRTSPClient.cpp
index 4971986..ccd6761 100644
--- a/src/lib/tsreader/MepoRTSPClient.cpp
+++ b/src/lib/tsreader/MepoRTSPClient.cpp
@@ -18,13 +18,14 @@
#if defined LIVE555
-#include "p8-platform/util/timeutils.h"
#include "MepoRTSPClient.h"
#include "MemorySink.h"
#include <kodi/General.h> //for kodi::Log
#include "utils.h"
#include "os-dependent.h"
+#include <thread>
+
CRTSPClient::CRTSPClient()
{
kodi::Log(ADDON_LOG_DEBUG, "CRTSPClient::CRTSPClient()");
@@ -531,7 +532,7 @@ void CRTSPClient::FillBuffer(unsigned long byteCount)
while ( IsRunning() && m_buffer->Size() < byteCount)
{
- usleep(5000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(5));
if (GetTickCount64() - tickCount > 3000)
break;
}
diff --git a/src/lib/tsreader/MultiFileReader.cpp b/src/lib/tsreader/MultiFileReader.cpp
index 3828e06..21fd7b2 100644
--- a/src/lib/tsreader/MultiFileReader.cpp
+++ b/src/lib/tsreader/MultiFileReader.cpp
@@ -39,10 +39,11 @@
#include <string>
#include "utils.h"
#include <algorithm>
-#include "p8-platform/util/timeutils.h"
#include "p8-platform/threads/threads.h"
#include <inttypes.h>
+#include <thread>
+
using namespace P8PLATFORM;
//Maximum time in msec to wait for the buffer file to become available - Needed for DVB radio (this sometimes takes some time)
@@ -112,7 +113,7 @@ namespace MPTV
retryCount++;
kodi::Log(ADDON_LOG_DEBUG, "MultiFileReader: buffer file has zero length, closing, waiting 100 ms and re-opening. Attempt: %d.", retryCount);
m_TSBufferFile.CloseFile();
- usleep(100000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
hResult = m_TSBufferFile.OpenFile();
kodi::Log(ADDON_LOG_DEBUG, "MultiFileReader: buffer file opened return code %d.", hResult);
}
@@ -124,7 +125,7 @@ namespace MPTV
do
{
- usleep(100000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
if (timeout.TimeLeft() == 0)
{
kodi::Log(ADDON_LOG_ERROR, "MultiFileReader: timed out while waiting for buffer file to become available");
@@ -457,7 +458,7 @@ namespace MPTV
// try to clear local / remote SMB file cache. This should happen when we close the filehandle
m_TSBufferFile.CloseFile();
m_TSBufferFile.OpenFile();
- usleep(5000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(5));
}
if (Error)
diff --git a/src/lib/tsreader/TSReader.cpp b/src/lib/tsreader/TSReader.cpp
index 4a72f4f..40a4faf 100644
--- a/src/lib/tsreader/TSReader.cpp
+++ b/src/lib/tsreader/TSReader.cpp
@@ -33,7 +33,6 @@
#include "MultiFileReader.h"
#include "utils.h"
#include "TSDebug.h"
-#include "p8-platform/util/timeutils.h"
#include <kodi/tools/StringUtils.h>
#ifdef LIVE555
#include "MemoryReader.h"
@@ -42,6 +41,8 @@
#endif
#include "FileUtils.h"
+#include <thread>
+
using namespace std;
template<typename T> void SafeDelete(T*& p)
@@ -396,7 +397,7 @@ namespace MPTV
fileReader->OnChannelChange();
kodi::Log(ADDON_LOG_DEBUG, "%s:: move from %I64d to %I64d tsbufpos %I64d", __FUNCTION__, pos_before, pos_after, timeShiftBufferPos);
- usleep(100000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
// Set the stream start times to this new channel
time(&m_startTime);
diff --git a/src/pvrclient-mediaportal.cpp b/src/pvrclient-mediaportal.cpp
index 5479950..851b940 100644
--- a/src/pvrclient-mediaportal.cpp
+++ b/src/pvrclient-mediaportal.cpp
@@ -10,7 +10,6 @@
#include <stdlib.h>
#include <clocale>
-#include "p8-platform/util/timeutils.h"
#include <kodi/tools/StringUtils.h>
#include "timers.h"
@@ -29,6 +28,8 @@
#include <kodi/General.h>
#include <kodi/Filesystem.h>
+#include <thread>
+
using namespace kodi::tools;
using namespace std;
using namespace MPTV;
@@ -389,7 +390,7 @@ void* cPVRClientMediaPortal::Process(void)
if (keepWaiting)
{
// Wait for 1 minute before re-trying
- usleep(60000000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(60000));
}
}
SetConnectionState(state);
@@ -1571,7 +1572,8 @@ PVR_ERROR cPVRClientMediaPortal::AddTimer(const kodi::addon::PVRTimer& timerinfo
if (timerinfo.GetStartTime() <= 0)
{
// Refresh the recordings list to see the newly created recording
- usleep(100000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
+
kodi::addon::CInstancePVRClient::TriggerRecordingUpdate();
}
@@ -1785,7 +1787,8 @@ bool cPVRClientMediaPortal::OpenLiveStream(const kodi::addon::PVRChannel& channe
kodi::Log(ADDON_LOG_INFO, "Channel timeshift buffer: %s", timeshiftfields[2].c_str());
if (channelinfo.GetIsRadio())
{
- usleep(100000); // 100 ms sleep to allow the buffer to fill
+ // 100 ms sleep to allow the buffer to fill
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
else
@@ -1796,7 +1799,7 @@ bool cPVRClientMediaPortal::OpenLiveStream(const kodi::addon::PVRChannel& channe
if (CSettings::Get().GetSleepOnRTSPurl() > 0)
{
kodi::Log(ADDON_LOG_INFO, "Sleeping %i ms before opening stream: %s", CSettings::Get().GetSleepOnRTSPurl(), timeshiftfields[0].c_str());
- usleep(CSettings::Get().GetSleepOnRTSPurl() * 1000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(CSettings::Get().GetSleepOnRTSPurl()));
}
// Check the returned stream URL. When the URL is an rtsp stream, we need
@@ -1878,7 +1881,7 @@ bool cPVRClientMediaPortal::OpenLiveStream(const kodi::addon::PVRChannel& channe
CloseLiveStream();
return false;
}
- usleep(400000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(400));
}
}
@@ -1924,7 +1927,7 @@ int cPVRClientMediaPortal::ReadLiveStream(unsigned char *pBuffer, unsigned int i
if (m_tsreader->Read(bufptr, read_wanted, &read_wanted) > 0)
{
- usleep(20000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(20));
read_timeouts++;
return static_cast<int>(read_wanted);
}
@@ -1948,7 +1951,7 @@ int cPVRClientMediaPortal::ReadLiveStream(unsigned char *pBuffer, unsigned int i
}
bufptr += read_wanted;
read_timeouts++;
- usleep(10000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
}
read_timeouts = 0;
@@ -2175,7 +2178,7 @@ int cPVRClientMediaPortal::ReadRecordedStream(unsigned char *pBuffer, unsigned i
if (m_tsreader->Read(bufptr, read_wanted, &read_wanted) > 0)
{
- usleep(20000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(20));
return static_cast<int>(read_wanted);
}
read_done += read_wanted;
@@ -2183,7 +2186,7 @@ int cPVRClientMediaPortal::ReadRecordedStream(unsigned char *pBuffer, unsigned i
if ( read_done < static_cast<size_t>(iBufferSize) )
{
bufptr += read_wanted;
- usleep(20000);
+ std::this_thread::sleep_for(std::chrono::milliseconds(20));
}
}