Fix bug for memory-backed DTSC::Meta when tracks are added
This commit is contained in:
parent
ffd22a45d4
commit
95706337c1
1 changed files with 21 additions and 19 deletions
12
lib/dtsc.cpp
12
lib/dtsc.cpp
|
@ -1514,9 +1514,10 @@ namespace DTSC{
|
|||
/// To be called from the various inputs/outputs whenever they want to add a track.
|
||||
size_t Meta::addTrack(size_t fragCount, size_t keyCount, size_t partCount, size_t pageCount, bool setValid){
|
||||
char pageName[NAME_BUFFER_SIZE];
|
||||
|
||||
IPC::semaphore trackLock;
|
||||
if (!isMemBuf){
|
||||
snprintf(pageName, NAME_BUFFER_SIZE, SEM_TRACKLIST, streamName.c_str());
|
||||
IPC::semaphore trackLock(pageName, O_CREAT | O_RDWR, ACCESSPERMS, 1);
|
||||
trackLock.open(pageName, O_CREAT | O_RDWR, ACCESSPERMS, 1);
|
||||
if (!trackLock){
|
||||
FAIL_MSG("Could not open semaphore to add track!");
|
||||
return -1;
|
||||
|
@ -1527,6 +1528,8 @@ namespace DTSC{
|
|||
FAIL_MSG("Not adding track: stream is shutting down");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
size_t pageSize = TRACK_TRACK_OFFSET + TRACK_TRACK_RECORDSIZE +
|
||||
(TRACK_FRAGMENT_OFFSET + (TRACK_FRAGMENT_RECORDSIZE * fragCount)) +
|
||||
(TRACK_KEY_OFFSET + (TRACK_KEY_RECORDSIZE * keyCount)) +
|
||||
|
@ -1557,7 +1560,7 @@ namespace DTSC{
|
|||
trackList.setInt(trackPidField, getpid(), tNumber);
|
||||
trackList.setInt(trackSourceTidField, INVALID_TRACK_ID, tNumber);
|
||||
if (setValid){validateTrack(tNumber);}
|
||||
trackLock.post();
|
||||
if (!isMemBuf){trackLock.post();}
|
||||
return tNumber;
|
||||
}
|
||||
|
||||
|
@ -2337,8 +2340,7 @@ namespace DTSC{
|
|||
}
|
||||
tMemBuf.clear();
|
||||
sizeMemBuf.clear();
|
||||
}
|
||||
if (isMaster){
|
||||
}else if (isMaster){
|
||||
char pageName[NAME_BUFFER_SIZE];
|
||||
snprintf(pageName, NAME_BUFFER_SIZE, SEM_TRACKLIST, streamName.c_str());
|
||||
IPC::semaphore trackLock(pageName, O_CREAT|O_RDWR, ACCESSPERMS, 1);
|
||||
|
|
Loading…
Add table
Reference in a new issue