diff --git a/DMX-2.0/EventManager.cs b/DMX-2.0/EventManager.cs
index 4ebb355..407455e 100644
--- a/DMX-2.0/EventManager.cs
+++ b/DMX-2.0/EventManager.cs
@@ -62,6 +62,8 @@ namespace DMX2
/// Appelé par le Timer de la conduite
/// Fonction a appeler pour chaque evenement.
void ProcessEvents(EventManagerCallback callback);
+
+
}
///
@@ -122,6 +124,7 @@ namespace DMX2
{
Dictionary bindings = new Dictionary();
List providers = new List();
+ Dictionary feedbackLookup = new Dictionary();
class eventBinding
{
@@ -150,8 +153,11 @@ namespace DMX2
public void RegisterProvider (IEventProvider prov)
{
providers.Add (prov);
- foreach( var bind in bindings)
- prov.Bind(bind.Key);
+ foreach (var bind in bindings) {
+ if (prov.Bind (bind.Key)) {
+ feedbackLookup[bind.Key] = prov;
+ }
+ }
}
#region Menus
@@ -213,6 +219,9 @@ namespace DMX2
public void UnregisterProvider (IEventProvider prov)
{
providers.Remove(prov);
+ var q = from feedback in feedbackLookup where feedback.Value == prov select feedback.Key;
+ foreach(string id in q.ToArray())
+ feedbackLookup.Remove(id);
}
/// Enregistrement d'une association id => cible
@@ -223,7 +232,10 @@ namespace DMX2
bindings[eventId].AddTarget(target);
target.Bind(eventId);
foreach (IEventProvider prov in providers) {
- if(prov.Bind(eventId)) return true;
+ if(prov.Bind(eventId)) {
+ feedbackLookup[eventId] = prov;
+ return true;
+ }
}
return false;
}