Fixed several small buffer bugs.
This commit is contained in:
		
							parent
							
								
									473d5d1a7f
								
							
						
					
					
						commit
						d1e26d6848
					
				
					 2 changed files with 9 additions and 15 deletions
				
			
		|  | @ -65,6 +65,12 @@ namespace Buffer { | |||
|     while (usr->S.connected()){ | ||||
|       usleep(5000); //sleep 5ms
 | ||||
|       if ( !usr->myRing->playCount || !usr->Send()){ | ||||
|         if (usr->myRing->updated){ | ||||
|           Stream::get()->getReadLock(); | ||||
|           usr->S.SendNow(Stream::get()->getStream()->metadata.toNetPacked()); | ||||
|           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
 | ||||
|  |  | |||
|  | @ -67,6 +67,7 @@ bool Buffer::user::Send(){ | |||
|   if (myRing->waiting){ | ||||
|     Stream::get()->waitForData(); | ||||
|     if ( !myRing->waiting){ | ||||
|       Stream::get()->getReadLock(); | ||||
|       if (Stream::get()->getStream()->getPacket(myRing->b).isMember("keyframe") && myRing->playCount > 0){ | ||||
|         myRing->playCount--; | ||||
|         if ( !myRing->playCount){ | ||||
|  | @ -78,13 +79,7 @@ bool Buffer::user::Send(){ | |||
|           S.SendNow(pausemark.toNetPacked()); | ||||
|         } | ||||
|       } | ||||
|       if (myRing->updated){ | ||||
|         fprintf(stderr, "Sent new metadata\n"); | ||||
|         Stream::get()->getReadLock(); | ||||
|         S.SendNow(Stream::get()->getStream()->metadata.toNetPacked()); | ||||
|       Stream::get()->dropReadLock(); | ||||
|         myRing->updated = false; | ||||
|       } | ||||
|     } | ||||
|     return false; | ||||
|   } //still waiting for next buffer?
 | ||||
|  | @ -105,14 +100,6 @@ bool Buffer::user::Send(){ | |||
|       return false; | ||||
|     } //no next buffer? go in waiting mode.
 | ||||
|     myRing->b--; | ||||
|     if (myRing->updated){ | ||||
|       fprintf(stderr, "Sent new metadata\n"); | ||||
|       Stream::get()->getReadLock(); | ||||
|       S.SendNow(Stream::get()->getStream()->metadata.toNetPacked()); | ||||
|       Stream::get()->dropReadLock(); | ||||
|       myRing->updated = false; | ||||
|     } | ||||
|     Stream::get()->dropReadLock(); | ||||
|     if (Stream::get()->getStream()->getPacket(myRing->b).isMember("keyframe") && myRing->playCount > 0){ | ||||
|       myRing->playCount--; | ||||
|       if ( !myRing->playCount){ | ||||
|  | @ -124,6 +111,7 @@ bool Buffer::user::Send(){ | |||
|         S.SendNow(pausemark.toNetPacked()); | ||||
|       } | ||||
|     } | ||||
|     Stream::get()->dropReadLock(); | ||||
|     return false; | ||||
|   } //completed a send
 | ||||
|   Stream::get()->dropReadLock(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Thulinma
						Thulinma