Explorar el Código

SLESRenderer works like ALRenderer now, clean Device

mikymod hace 12 años
padre
commit
9d226323d5
Se han modificado 3 ficheros con 19 adiciones y 13 borrados
  1. 0 12
      engine/Device.cpp
  2. 17 1
      engine/renderers/sles/SLESRenderer.cpp
  3. 2 0
      engine/renderers/sles/SLESRenderer.h

+ 0 - 12
engine/Device.cpp

@@ -517,18 +517,6 @@ void Device::create_audio_renderer()
 
 	m_audio_renderer->init();
 
-	ResourceId rid = m_resource_manager->load("wav", "mono");
-
-	m_resource_manager->flush();
-
-	SoundResource* res = (SoundResource*)m_resource_manager->data(rid);
-
-	SoundBufferId bid = m_audio_renderer->create_buffer(res->data(), res->size(), res->sample_rate(), res->channels(), res->bits_per_sample());
-
-	SoundSourceId sid = m_audio_renderer->create_source();
-
-	m_audio_renderer->play_source(sid, bid);
-
 	Log::d("Audio renderer created");
 }
 

+ 17 - 1
engine/renderers/sles/SLESRenderer.cpp

@@ -259,7 +259,11 @@ bool SLESRenderer::source_playing(SoundSourceId id)
 
 	SoundSource& s = m_sources[id.index];
 
-	return s.playing;
+    SLuint32 state;
+
+    (*s.player_play)->GetPlayState(s.player_play, &state);
+
+    return state == SL_PLAYSTATE_PLAYING;
 }	
 
 //-----------------------------------------------------------------------------
@@ -323,6 +327,8 @@ void SLESRenderer::create_bufferqueue_player(SoundSource& s)
 	result = (*s.player_obj)->GetInterface(s.player_obj, SL_IID_VOLUME, &s.player_volume);
 	check_sles_errors(result);
 
+	(*s.player_bufferqueue)->RegisterCallback(s.player_bufferqueue, player_callback, &s);
+
 	result = (*s.player_play)->SetPlayState(s.player_play, SL_PLAYSTATE_PLAYING);
 	check_sles_errors(result);
 }
@@ -350,4 +356,14 @@ void SLESRenderer::destroy_bufferqueue_player(SoundSource& s)
 	}
 }
 
+//-----------------------------------------------------------------------------
+void player_callback(SLAndroidSimpleBufferQueueItf caller, void* source)
+{
+	(void)caller;
+
+	SoundSource* s = (SoundSource*)source;
+
+	(*s->player_play)->SetPlayState(s->player_play, SL_PLAYSTATE_STOPPED);
+}
+
 } // namespace crown

+ 2 - 0
engine/renderers/sles/SLESRenderer.h

@@ -36,6 +36,8 @@ OTHER DEALINGS IN THE SOFTWARE.
 namespace crown
 {
 
+void player_callback(SLAndroidSimpleBufferQueueItf caller, void* source);
+
 //-----------------------------------------------------------------------------
 struct SoundBuffer
 {