Index: trunk/src/lib/sound/ogg_player.cc
===================================================================
--- trunk/src/lib/sound/ogg_player.cc	(revision 7291)
+++ trunk/src/lib/sound/ogg_player.cc	(revision 7292)
@@ -99,4 +99,5 @@
   alSourcei (source, AL_SOURCE_RELATIVE, AL_TRUE      );
   alSourcef (source, AL_GAIN,            SoundEngine::getInstance()->getMusicVolume());
+  SoundEngine::checkError("OggPlayer::SetSourceProperties", __LINE__);
 
   this->trackLoaded = true;
@@ -112,12 +113,12 @@
     return;
   alSourceStop(source);
+  SoundEngine::checkError("OggPlayer::release()::alSourceStop", __LINE__);
   empty();
   SoundEngine::getInstance()->pushALSource(source);
   this->source = 0;
-  check();
   alDeleteBuffers(2, buffers);
+  SoundEngine::checkError("OggPlayer::release()::alDeleteBuffers", __LINE__);
   this->buffers[0] = 0;
   this->buffers[1] = 0;
-  check();
 
   ov_clear(&oggStream);
@@ -138,13 +139,14 @@
     return true;
 
-  if(!stream(buffers[0]))
-    return false;
-
-  if(!stream(buffers[1]))
-    return false;
-
-  alSourceQueueBuffers(source, 2, buffers);
-  alSourcePlay(source);
-
+  if(!stream(buffers[0]) || !stream(buffers[1]))
+    return false;
+
+  alSourceQueueBuffers(this->source, 2, this->buffers);
+  if (DEBUG >= 3)
+    SoundEngine::checkError("OggPlayer::playback()::alSourceQueueBuffers", __LINE__);
+  alSourcePlay(this->source);
+  if (DEBUG >= 3)
+    SoundEngine::checkError("OggPlayer::playback()::alSourcePlay", __LINE__);
+  printf("%d\n", this->source);
   return true;
 }
@@ -178,4 +180,6 @@
 
   alGetSourcei(source, AL_BUFFERS_PROCESSED, &processed);
+  if (DEBUG >= 3)
+    SoundEngine::checkError("OggPlayer::update()::alGetSourceI", __LINE__);
 
   while(processed--)
@@ -184,10 +188,12 @@
 
     alSourceUnqueueBuffers(source, 1, &buffer);
-    check();
+    if (DEBUG >= 3)
+      SoundEngine::checkError("OggPlayer::update()::unqueue", __LINE__);
 
     active = stream(buffer);
 
     alSourceQueueBuffers(source, 1, &buffer);
-    check();
+    if (DEBUG >= 3)
+      SoundEngine::checkError("OggPlayer::update()::queue", __LINE__);
   }
 
@@ -226,5 +232,6 @@
 
   alBufferData(buffer, format, pcm, size, vorbisInfo->rate);
-  check();
+  if (DEBUG >= 3)
+    SoundEngine::checkError("OggPlayer::playback()::BUFFER", __LINE__);
 
   return true;
@@ -246,5 +253,5 @@
 
     alSourceUnqueueBuffers(source, 1, &buffer);
-    check();
+    SoundEngine::checkError("OggPlayer::empty()::unqueue Buffers", __LINE__);
   }
 }
@@ -273,13 +280,4 @@
 }
 
-/**
- * checks for errors
- */
-void OggPlayer::check()
-{
-  int error = alGetError();
-  if(error != AL_NO_ERROR)
-    PRINTF(2)("OpenAL error was raised.");
-}
 
 /**
Index: trunk/src/lib/sound/ogg_player.h
===================================================================
--- trunk/src/lib/sound/ogg_player.h	(revision 7291)
+++ trunk/src/lib/sound/ogg_player.h	(revision 7292)
@@ -38,8 +38,6 @@
 
 protected:
-
   bool stream(ALuint buffer);
   void empty();
-  void check();
   const char* errorString(int code);
 
Index: trunk/src/lib/sound/sound_engine.cc
===================================================================
--- trunk/src/lib/sound/sound_engine.cc	(revision 7291)
+++ trunk/src/lib/sound/sound_engine.cc	(revision 7292)
@@ -152,4 +152,5 @@
     source = this->ALSources.top();
     this->ALSources.pop();
+    printf("Retrieve Source %d\n", source);
   }
 }
Index: trunk/src/story_entities/game_world.cc
===================================================================
--- trunk/src/story_entities/game_world.cc	(revision 7291)
+++ trunk/src/story_entities/game_world.cc	(revision 7292)
@@ -136,5 +136,5 @@
 int GameWorld::createAudioThread(void* gameWorld)
 {
-  GameWorld* gw = (GameWorld*)gameWorld;
+/*  GameWorld* gw = (GameWorld*)gameWorld;
   printf("STARTIG AUDIO THREAD\n");
   if(gw->dataTank && gw->dataTank->music != NULL)
@@ -146,5 +146,5 @@
       gw->dataTank->music->update();
     SDL_Delay(1);
-  }
+  }*/
   printf("End the AudioThread\n");
 }
@@ -230,4 +230,7 @@
     this->audioThread = SDL_CreateThread(GameWorld::createAudioThread, (void*)this);
 
+  if (this->dataTank->music != NULL)
+    this->dataTank->music->playback();
+
   this->run();
 }
@@ -241,4 +244,11 @@
   PRINTF(3)("GameWorld::stop() - got stop signal\n");
   this->bRunning = false;
+
+  if (this->audioThread != NULL)
+  {
+    this->bRunning = false;
+    SDL_WaitThread(this->audioThread, NULL);
+    this->audioThread = NULL;
+  }
 
   this->audioThread = NULL;
@@ -403,4 +413,8 @@
   PNode::getNullParent()->updateNode (this->dtS);
   SoundEngine::getInstance()->update();
+
+  if (this->dataTank->music != NULL)
+    this->dataTank->music->update();
+
 }
 
