Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files
CdStreamPosix fixes
  • Loading branch information
erorcun committed Jan 29, 2021
1 parent 3dfffdf commit 2e7405b76c4165de8dd22f9de2315d4888489723
Showing with 9 additions and 3 deletions.
  1. +9 −3 src/core/CdStreamPosix.cpp
@@ -76,7 +76,7 @@ CdStreamInitThread(void)
gChannelRequestQ.tail = 0;
gChannelRequestQ.size = gNumChannels + 1;
ASSERT(gChannelRequestQ.items != nil );
gCdStreamSema = sem_open("/semaphore_cd_stream", O_CREAT, 0644, 1);
gCdStreamSema = sem_open("/semaphore_cd_stream", O_CREAT, 0644, 0);


if (gCdStreamSema == SEM_FAILED) {
@@ -91,7 +91,7 @@ CdStreamInitThread(void)
for ( int32 i = 0; i < gNumChannels; i++ )
{
sprintf(semName,"/semaphore_done%d",i);
gpReadInfo[i].pDoneSemaphore = sem_open(semName, O_CREAT, 0644, 1);
gpReadInfo[i].pDoneSemaphore = sem_open(semName, O_CREAT, 0644, 0);

if (gpReadInfo[i].pDoneSemaphore == SEM_FAILED)
{
@@ -102,7 +102,7 @@ CdStreamInitThread(void)

#ifdef ONE_THREAD_PER_CHANNEL
sprintf(semName,"/semaphore_start%d",i);
gpReadInfo[i].pStartSemaphore = sem_open(semName, O_CREAT, 0644, 1);
gpReadInfo[i].pStartSemaphore = sem_open(semName, O_CREAT, 0644, 0);

if (gpReadInfo[i].pStartSemaphore == SEM_FAILED)
{
@@ -171,6 +171,7 @@ CdStreamInit(int32 numChannels)
gNumImages = 0;

gNumChannels = numChannels;
ASSERT( gNumChannels != 0 );

gpReadInfo = (CdReadInfo *)calloc(numChannels, sizeof(CdReadInfo));
ASSERT( gpReadInfo != nil );
@@ -398,7 +399,12 @@ void *CdStreamThread(void *param)
#ifndef ONE_THREAD_PER_CHANNEL
while (gCdStreamThreadStatus != 2) {
sem_wait(gCdStreamSema);

int32 channel = GetFirstInQueue(&gChannelRequestQ);

// spurious wakeup
if (channel == -1)
continue;
#else
int channel = *((int*)param);
while (gpReadInfo[channel].nThreadStatus != 2){

0 comments on commit 2e7405b

Please sign in to comment.