Linux DVB output for STBs based on Broadcom - replace active pooling by select (ready to write)

Signed-off-by: max_10 <max_10@gmx.de>
This commit is contained in:
samsamsam
2018-04-02 23:59:24 +02:00
committed by Thilo Graf
parent 2878ec69bc
commit 93f61a89f6
6 changed files with 178 additions and 22 deletions

View File

@@ -57,6 +57,8 @@ if (debug_level >= level) printf("[%s:%s] " fmt, __FILE__, __FUNCTION__, ## x);
#define cMaxSpeed_ff 128 /* fixme: revise */
#define cMaxSpeed_fr -320 /* fixme: revise */
#define MAX_PLAYBACK_DIE_NOW_CALLBACKS 10
/* ***************************** */
/* Varaibles */
/* ***************************** */
@@ -67,17 +69,30 @@ static int hasThreadStarted = 0;
/* ***************************** */
/* Prototypes */
/* ***************************** */
static int32_t PlaybackTerminate(Context_t *context);
static int8_t dieNow = 0;
static PlaybackDieNowCallback playbackDieNowCallbacks[MAX_PLAYBACK_DIE_NOW_CALLBACKS] = {NULL};
/* ***************************** */
/* MISC Functions */
/* ***************************** */
int8_t PlaybackDieNow(int8_t val)
{
static int8_t dieNow = 0;
if (val == 1)
if (val == 1 && dieNow == 0)
{
uint32_t i = 0;
dieNow = 1;
while (i < MAX_PLAYBACK_DIE_NOW_CALLBACKS)
{
if (playbackDieNowCallbacks[i] == NULL)
{
break;
}
playbackDieNowCallbacks[i]();
i += 1;
}
}
else if (val == 2)
{
@@ -86,6 +101,32 @@ int8_t PlaybackDieNow(int8_t val)
return dieNow;
}
bool PlaybackDieNowRegisterCallback(PlaybackDieNowCallback callback)
{
bool ret = false;
if (callback)
{
uint32_t i = 0;
while (i < MAX_PLAYBACK_DIE_NOW_CALLBACKS)
{
if (playbackDieNowCallbacks[i] == callback)
{
ret = true;
break;
}
if (playbackDieNowCallbacks[i] == NULL)
{
playbackDieNowCallbacks[i] = callback;
ret = true;
break;
}
i += 1;
}
}
return ret;
}
/* **************************** */
/* Supervisor Thread */
/* **************************** */