Fixed buffer disconnecting pushed inputs if they shared a PID with a viewer that disconnected
This commit is contained in:
parent
3baa8d1524
commit
9f2fe22074
2 changed files with 6 additions and 6 deletions
|
@ -519,7 +519,7 @@ namespace Mist{
|
||||||
///\todo Add tracing of earliest watched keys, to prevent data going out of memory for
|
///\todo Add tracing of earliest watched keys, to prevent data going out of memory for
|
||||||
/// still-watching viewers
|
/// still-watching viewers
|
||||||
if (!(users.getStatus(id) & COMM_STATUS_DISCONNECT) && (users.getStatus(id) & COMM_STATUS_SOURCE)){
|
if (!(users.getStatus(id) & COMM_STATUS_DISCONNECT) && (users.getStatus(id) & COMM_STATUS_SOURCE)){
|
||||||
sourcePids[users.getPid(id)].insert(users.getTrack(id));
|
sourcePids[id] = users.getTrack(id);
|
||||||
// GeneratePids holds the pids of the process that generate data, so ignore those for determining if a push is ingested.
|
// GeneratePids holds the pids of the process that generate data, so ignore those for determining if a push is ingested.
|
||||||
if (M.trackValid(users.getTrack(id)) && !generatePids.count(users.getPid(id))){hasPush = true;}
|
if (M.trackValid(users.getTrack(id)) && !generatePids.count(users.getPid(id))){hasPush = true;}
|
||||||
}
|
}
|
||||||
|
@ -527,11 +527,11 @@ namespace Mist{
|
||||||
if (!(users.getStatus(id) & COMM_STATUS_DONOTTRACK)){++connectedUsers;}
|
if (!(users.getStatus(id) & COMM_STATUS_DONOTTRACK)){++connectedUsers;}
|
||||||
}
|
}
|
||||||
void inputBuffer::userOnDisconnect(size_t id){
|
void inputBuffer::userOnDisconnect(size_t id){
|
||||||
if (sourcePids.count(users.getPid(id)) && sourcePids[users.getPid(id)].count(users.getTrack(id))){
|
if (sourcePids.count(id)){
|
||||||
INFO_MSG("Disconnected track %" PRIu32, users.getTrack(id));
|
INFO_MSG("Disconnected track %zu", sourcePids[id]);
|
||||||
meta.refresh();
|
meta.refresh();
|
||||||
removeTrack(users.getTrack(id));
|
removeTrack(sourcePids[id]);
|
||||||
sourcePids[users.getPid(id)].erase(users.getTrack(id));
|
sourcePids.erase(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void inputBuffer::userLeadOut(){
|
void inputBuffer::userLeadOut(){
|
||||||
|
|
|
@ -53,7 +53,7 @@ namespace Mist{
|
||||||
std::map<std::string, pid_t> runningProcs; // LTS
|
std::map<std::string, pid_t> runningProcs; // LTS
|
||||||
|
|
||||||
std::set<size_t> generatePids;
|
std::set<size_t> generatePids;
|
||||||
std::map<size_t, std::set<size_t> > sourcePids;
|
std::map<size_t, size_t> sourcePids;
|
||||||
};
|
};
|
||||||
}// namespace Mist
|
}// namespace Mist
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue