diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 6ee8f26b9fa6b2887d45bf11cfd9087686920f61..b1cd68140e145a89b4dd3b161aa347b6c0a739a5 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -981,6 +981,10 @@ boost::signals2::connection LLAgent::addRegionChangedCallback(region_changed_cal
 	return mRegionChangedSignal.connect(cb);
 }
 
+void LLAgent::removeRegionChangedCallback(boost::signals2::connection callback)
+{
+	mRegionChangedSignal.disconnect(callback);
+}
 
 //-----------------------------------------------------------------------------
 // inPrelude()
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 0662be897a3c807d1ac414af4f46f674f210081e..bc003387de9a993fa520f9d4a0b8cb96c9dd4390 100755
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -273,6 +273,7 @@ class LLAgent : public LLOldEvents::LLObservable
 	 */
 	typedef boost::function<void()> region_changed_callback_t;
 	boost::signals2::connection     addRegionChangedCallback(region_changed_callback_t);
+	void                            removeRegionChangedCallback(boost::signals2::connection callback);
 
   private:
 	LLViewerRegion	*mRegionp;