Browse Source

Merge pull request #1402 from hungrymonkey/audiostream_cpp

added deconstructor to remove dynmically allocated memory
Max Hilbrunner 7 years ago
parent
commit
f90477a709
1 changed files with 14 additions and 0 deletions
  1. 14 0
      development/cpp/custom_audiostreams.rst

+ 14 - 0
development/cpp/custom_audiostreams.rst

@@ -161,6 +161,7 @@ Since AudioStreamPlayback is controlled by the audio thread, i/o and dynamic mem
 		virtual void mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames);
 		virtual float get_length() const; //if supported, otherwise return 0
 		AudioStreamPlaybackMyTone();
+		~AudioStreamPlaybackMyTone();
 
 	};
 
@@ -180,6 +181,12 @@ Since AudioStreamPlayback is controlled by the audio thread, i/o and dynamic mem
 		zeromem(pcm_buffer, PCM_BUFFER_SIZE);
 		AudioServer::get_singleton()->unlock();
 	}
+	AudioStreamPlaybackMyTone::~AudioStreamPlaybackMyTone() {
+		if(pcm_buffer) {
+			AudioServer::get_singleton()->audio_data_free(pcm_buffer);
+			pcm_buffer = NULL;
+		}
+	}
 	void AudioStreamPlaybackMyTone::stop(){
 		active = false;
 		base->reset();
@@ -271,6 +278,7 @@ query AudioFrames and ``get_stream_sampling_rate`` to query current mix rate.
 		virtual float get_length() const; //if supported, otherwise return 0
 		virtual float get_stream_sampling_rate();
 		AudioStreamPlaybackResampledMyTone();
+		~AudioStreamPlaybackResampledMyTone();
 
 	};
 
@@ -289,6 +297,12 @@ query AudioFrames and ``get_stream_sampling_rate`` to query current mix rate.
 		zeromem(pcm_buffer, PCM_BUFFER_SIZE);
 		AudioServer::get_singleton()->unlock();
 	}
+	AudioStreamPlaybackResampledMyTone::~AudioStreamPlaybackResampledMyTone() {
+		if (pcm_buffer) {
+			AudioServer::get_singleton()->audio_data_free(pcm_buffer);
+			pcm_buffer = NULL;
+		}
+	}
 	void AudioStreamPlaybackResampledMyTone::stop(){
 		active = false;
 		base->reset();