Fixed buffer headers and waiting code.

This commit is contained in:
Thulinma 2013-07-03 16:12:04 +02:00
parent 6c64a854d5
commit 7bbfbda556
2 changed files with 6 additions and 9 deletions

View file

@ -66,14 +66,6 @@ namespace Buffer {
while (usr->S.connected()){ while (usr->S.connected()){
Util::sleep(5); //sleep 5ms Util::sleep(5); //sleep 5ms
if ( !usr->myRing->playCount || !usr->Send(newSelect)){ if ( !usr->myRing->playCount || !usr->Send(newSelect)){
// if (usr->myRing->updated){
Stream::get()->getReadLock();
usr->S.SendNow(thisStream->getHeader());
// std::cerr << "Sending updated header: " << std::endl;
// std::cerr << Stream::get()->getStream()->metadata.toPrettyString() << std::endl;
Stream::get()->dropReadLock();
// usr->myRing->updated = false;
// }
if (usr->S.spool()){ if (usr->S.spool()){
while (usr->S.Received().size()){ while (usr->S.Received().size()){
//delete anything that doesn't end with a newline //delete anything that doesn't end with a newline
@ -110,6 +102,9 @@ namespace Buffer {
usr->curr_down = (usr->tmpStats.down - usr->lastStats.down) / secs; usr->curr_down = (usr->tmpStats.down - usr->lastStats.down) / secs;
usr->lastStats = usr->tmpStats; usr->lastStats = usr->tmpStats;
thisStream->saveStats(usr->MyStr, usr->tmpStats); thisStream->saveStats(usr->MyStr, usr->tmpStats);
Stream::get()->getReadLock();
usr->S.SendNow(thisStream->getHeader());
Stream::get()->dropReadLock();
break; break;
} }
case 't': { case 't': {

View file

@ -77,8 +77,10 @@ namespace Buffer {
} //cancel if not connected } //cancel if not connected
if (myRing->waiting){ if (myRing->waiting){
Stream::get()->waitForData(); Stream::get()->waitForData();
if ( !myRing->waiting){ if (!Stream::get()->getStream()->isNewest(myRing->b)){
myRing->waiting = false;
Stream::get()->getReadLock(); Stream::get()->getReadLock();
myRing->b = Stream::get()->getStream()->getNext(myRing->b, allowedTracks);
if (Stream::get()->getStream()->getPacket(myRing->b).isMember("keyframe") && myRing->playCount > 0){ if (Stream::get()->getStream()->getPacket(myRing->b).isMember("keyframe") && myRing->playCount > 0){
myRing->playCount--; myRing->playCount--;
if ( !myRing->playCount){ if ( !myRing->playCount){