commit f5072d80fcba9ea52170671bfb50fdd6e0581a67
Author: Ignacio R. Morelle <shadowm@wesnoth.org>
Date:   Wed Jan 23 01:32:44 2013 -0300

    Convert soundsource::manager to use events::pump_monitor so its update method can get called during GUI1 and GUI2 dialog loops

diff --git a/src/play_controller.cpp b/src/play_controller.cpp
index 4e11bd5..e3a560d 100644
--- a/src/play_controller.cpp
+++ b/src/play_controller.cpp
@@ -1044,7 +1044,7 @@ int play_controller::find_human_team_before(const size_t team_num) const
 }
 
 void play_controller::slice_before_scroll() {
-	soundsources_manager_->update();
+	//soundsources_manager_->update();
 }
 
 events::mouse_handler& play_controller::get_mouse_handler_base() {
diff --git a/src/soundsource.cpp b/src/soundsource.cpp
index f6d9196..a5532ce 100644
--- a/src/soundsource.cpp
+++ b/src/soundsource.cpp
@@ -32,6 +32,7 @@ const unsigned DEFAULT_FADE_RANGE       = 14;
 unsigned int positional_source::last_id = 0;
 
 manager::manager(const display &disp) :
+	pump_monitor(),
 	observer(),
 	savegame_config(),
 	sources_(),
diff --git a/src/soundsource.hpp b/src/soundsource.hpp
index fbbbcea..b52b179 100644
--- a/src/soundsource.hpp
+++ b/src/soundsource.hpp
@@ -17,6 +17,7 @@
 
 #include <map>
 
+#include "events.hpp"
 #include "generic_event.hpp"
 #include "map_location.hpp"
 #include "savegame_config.hpp"
@@ -75,7 +76,7 @@ public:
 	void write_config(config& cfg) const;
 };
 
-class manager : public events::observer, public savegame::savegame_config {
+class manager : public events::pump_monitor, public events::observer, public savegame::savegame_config {
 
 	typedef std::map<std::string, positional_source *> positional_source_map;
 	typedef positional_source_map::iterator            positional_source_iterator;
@@ -96,6 +97,11 @@ public:
 	void remove(const std::string &id);
 	void update();
 
+	// from pump_monitor
+	void process(events::pump_info& /*info*/) {
+		update();
+	}
+
 	// checks which sound sources are visible
 	void update_positions();
 
