From 7bbfbda556ac66d382a46d1dff04233e4d8d6076 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Wed, 3 Jul 2013 16:12:04 +0200 Subject: [PATCH] Fixed buffer headers and waiting code. --- src/buffer/buffer.cpp | 11 +++-------- src/buffer/buffer_user.cpp | 4 +++- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/buffer/buffer.cpp b/src/buffer/buffer.cpp index 233eebce..909e8d15 100644 --- a/src/buffer/buffer.cpp +++ b/src/buffer/buffer.cpp @@ -66,14 +66,6 @@ namespace Buffer { while (usr->S.connected()){ Util::sleep(5); //sleep 5ms 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()){ while (usr->S.Received().size()){ //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->lastStats = usr->tmpStats; thisStream->saveStats(usr->MyStr, usr->tmpStats); + Stream::get()->getReadLock(); + usr->S.SendNow(thisStream->getHeader()); + Stream::get()->dropReadLock(); break; } case 't': { diff --git a/src/buffer/buffer_user.cpp b/src/buffer/buffer_user.cpp index faac506d..caac5d98 100644 --- a/src/buffer/buffer_user.cpp +++ b/src/buffer/buffer_user.cpp @@ -77,8 +77,10 @@ namespace Buffer { } //cancel if not connected if (myRing->waiting){ Stream::get()->waitForData(); - if ( !myRing->waiting){ + if (!Stream::get()->getStream()->isNewest(myRing->b)){ + myRing->waiting = false; Stream::get()->getReadLock(); + myRing->b = Stream::get()->getStream()->getNext(myRing->b, allowedTracks); if (Stream::get()->getStream()->getPacket(myRing->b).isMember("keyframe") && myRing->playCount > 0){ myRing->playCount--; if ( !myRing->playCount){