[cppcheck] Part 1: Performance
[supertux.git] / src / object / ambient_sound.cpp
index 730e7a7..0965fc3 100644 (file)
 #include "util/reader.hpp"
 
 AmbientSound::AmbientSound(const Reader& lisp) :
-  name(),
+  name(""),
   position(),
   dimension(),
-  sample(),
+  sample(""),
   sound_source(),
   latency(),
   distance_factor(),
@@ -41,7 +41,6 @@ AmbientSound::AmbientSound(const Reader& lisp) :
   currentvolume(),
   volume_ptr()
 {
-  name="";
   position.x = 0;
   position.y = 0;
 
@@ -51,7 +50,6 @@ AmbientSound::AmbientSound(const Reader& lisp) :
   distance_factor = 0;
   distance_bias = 0;
   maximumvolume = 1;
-  sample = "";
   currentvolume = 0;
 
   if (!(lisp.get("x", position.x)&&lisp.get("y", position.y))) {
@@ -88,8 +86,8 @@ AmbientSound::AmbientSound(const Reader& lisp) :
 
   lisp.get("silence_distance",silence_distance);
 
-  sound_source = 0; // not playing at the beginning
-  sound_manager->preload(sample);
+  sound_source.reset(); // not playing at the beginning
+  SoundManager::current()->preload(sample);
   latency=0;
 }
 
@@ -97,7 +95,7 @@ AmbientSound::AmbientSound(Vector pos, float factor, float bias, float vol, std:
   name(),
   position(),
   dimension(),
-  sample(),
+  sample(file),
   sound_source(),
   latency(),
   distance_factor(),
@@ -117,7 +115,6 @@ AmbientSound::AmbientSound(Vector pos, float factor, float bias, float vol, std:
   distance_factor=factor*factor;
   distance_bias=bias*bias;
   maximumvolume=vol;
-  sample=file;
 
   // set default silence_distance
 
@@ -127,7 +124,7 @@ AmbientSound::AmbientSound(Vector pos, float factor, float bias, float vol, std:
     silence_distance = 1/distance_factor;
 
   sound_source = 0; // not playing at the beginning
-  sound_manager->preload(sample);
+  SoundManager::current()->preload(sample);
   latency=0;
 }
 
@@ -142,17 +139,16 @@ AmbientSound::hit(Player& )
 }
 
 void
-AmbientSound::stop_playing() 
+AmbientSound::stop_playing()
 {
-  delete sound_source;
-  sound_source = 0;
+  sound_source.reset();
 }
 
 void
 AmbientSound::start_playing()
 {
   try {
-    sound_source = sound_manager->create_sound_source(sample);
+    sound_source = SoundManager::current()->create_sound_source(sample);
     if(!sound_source)
       throw std::runtime_error("file not found");
 
@@ -162,8 +158,7 @@ AmbientSound::start_playing()
     sound_source->play();
   } catch(std::exception& e) {
     log_warning << "Couldn't play '" << sample << "': " << e.what() << "" << std::endl;
-    delete sound_source;
-    sound_source = 0;
+    sound_source.reset();
     remove_me();
   }
 }