| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1667,16 +1667,16 @@ void StopMusicStream(Music music) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    switch (music.ctxType) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(SUPPORT_FILEFORMAT_WAV) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        case MUSIC_AUDIO_WAV: drwav_seek_to_pcm_frame((drwav *)music.ctxData, 0); break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        case MUSIC_AUDIO_WAV: drwav_seek_to_first_pcm_frame((drwav *)music.ctxData); break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(SUPPORT_FILEFORMAT_OGG) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        case MUSIC_AUDIO_OGG: stb_vorbis_seek_start((stb_vorbis *)music.ctxData); break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(SUPPORT_FILEFORMAT_FLAC) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        case MUSIC_AUDIO_FLAC: drflac_seek_to_pcm_frame((drflac *)music.ctxData, 0); break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        case MUSIC_AUDIO_FLAC: drflac__seek_to_first_frame((drflac *)music.ctxData); break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(SUPPORT_FILEFORMAT_MP3) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        case MUSIC_AUDIO_MP3: drmp3_seek_to_pcm_frame((drmp3 *)music.ctxData, 0); break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        case MUSIC_AUDIO_MP3: drmp3_seek_to_start_of_stream((drmp3 *)music.ctxData); break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#endif | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(SUPPORT_FILEFORMAT_XM) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        case MUSIC_MODULE_XM: jar_xm_reset((jar_xm_context_t *)music.ctxData); break; | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1721,7 +1721,6 @@ void UpdateMusicStream(Music music) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (music.stream.buffer == NULL) return; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    bool streamEnding = false; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    unsigned int subBufferSizeInFrames = music.stream.buffer->sizeInFrames/2; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // On first call of this function we lazily pre-allocated a temp buffer to read audio files/memory data in | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1845,22 +1844,18 @@ void UpdateMusicStream(Music music) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        if (framesLeft <= subBufferSizeInFrames) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Streaming is ending, we filled latest frames from input | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            streamEnding = true; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            if (!music.looping) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                // Streaming is ending, we filled latest frames from input | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                StopMusicStream(music); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                return; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (streamEnding) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        if (!music.looping) StopMusicStream(music); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    else | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        // NOTE: In case window is minimized, music stream is stopped, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        // just make sure to play again on window restore | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        if (IsMusicStreamPlaying(music)) PlayMusicStream(music); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // NOTE: In case window is minimized, music stream is stopped, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // just make sure to play again on window restore | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (IsMusicStreamPlaying(music)) PlayMusicStream(music); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Check if any music is playing | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -2003,9 +1998,7 @@ void UpdateAudioStream(AudioStream stream, const void *data, int frameCount) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Assuming so, but if not will need to change this logic. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            if (subBufferSizeInFrames >= (ma_uint32)frameCount) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                ma_uint32 framesToWrite = subBufferSizeInFrames; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                if (framesToWrite > (ma_uint32)frameCount) framesToWrite = (ma_uint32)frameCount; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                ma_uint32 framesToWrite = (ma_uint32)frameCount; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                ma_uint32 bytesToWrite = framesToWrite*stream.channels*(stream.sampleSize/8); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                memcpy(subBuffer, data, bytesToWrite); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |