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()){ |     while (usr->S.connected()){ | ||||||
|       usleep(5000); //sleep 5ms
 |       usleep(5000); //sleep 5ms
 | ||||||
|       if ( !usr->myRing->playCount || !usr->Send()){ |       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()){ |         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
 | ||||||
|  |  | ||||||
|  | @ -67,6 +67,7 @@ bool Buffer::user::Send(){ | ||||||
|   if (myRing->waiting){ |   if (myRing->waiting){ | ||||||
|     Stream::get()->waitForData(); |     Stream::get()->waitForData(); | ||||||
|     if ( !myRing->waiting){ |     if ( !myRing->waiting){ | ||||||
|  |       Stream::get()->getReadLock(); | ||||||
|       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){ | ||||||
|  | @ -78,13 +79,7 @@ bool Buffer::user::Send(){ | ||||||
|           S.SendNow(pausemark.toNetPacked()); |           S.SendNow(pausemark.toNetPacked()); | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|       if (myRing->updated){ |       Stream::get()->dropReadLock(); | ||||||
|         fprintf(stderr, "Sent new metadata\n"); |  | ||||||
|         Stream::get()->getReadLock(); |  | ||||||
|         S.SendNow(Stream::get()->getStream()->metadata.toNetPacked()); |  | ||||||
|         Stream::get()->dropReadLock(); |  | ||||||
|         myRing->updated = false; |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|     return false; |     return false; | ||||||
|   } //still waiting for next buffer?
 |   } //still waiting for next buffer?
 | ||||||
|  | @ -105,14 +100,6 @@ bool Buffer::user::Send(){ | ||||||
|       return false; |       return false; | ||||||
|     } //no next buffer? go in waiting mode.
 |     } //no next buffer? go in waiting mode.
 | ||||||
|     myRing->b--; |     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){ |     if (Stream::get()->getStream()->getPacket(myRing->b).isMember("keyframe") && myRing->playCount > 0){ | ||||||
|       myRing->playCount--; |       myRing->playCount--; | ||||||
|       if ( !myRing->playCount){ |       if ( !myRing->playCount){ | ||||||
|  | @ -124,6 +111,7 @@ bool Buffer::user::Send(){ | ||||||
|         S.SendNow(pausemark.toNetPacked()); |         S.SendNow(pausemark.toNetPacked()); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |     Stream::get()->dropReadLock(); | ||||||
|     return false; |     return false; | ||||||
|   } //completed a send
 |   } //completed a send
 | ||||||
|   Stream::get()->dropReadLock(); |   Stream::get()->dropReadLock(); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Thulinma
						Thulinma