banshee r4379 - in trunk/banshee: . src/Libraries/Hyena/Hyena.Data
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r4379 - in trunk/banshee: . src/Libraries/Hyena/Hyena.Data
- Date: Fri, 15 Aug 2008 18:07:36 +0000 (UTC)
Author: gburt
Date: Fri Aug 15 18:07:36 2008
New Revision: 4379
URL: http://svn.gnome.org/viewvc/banshee?rev=4379&view=rev
Log:
2008-08-15 Gabriel Burt <gabriel burt gmail com>
* src/Libraries/Hyena/Hyena.Data/PropertyStore.cs: Fix deadlock caused by
a property change event triggering a propety get/set/remove.
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Libraries/Hyena/Hyena.Data/PropertyStore.cs
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Data/PropertyStore.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.Data/PropertyStore.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Data/PropertyStore.cs Fri Aug 15 18:07:36 2008
@@ -94,13 +94,19 @@
public void Remove(string name)
{
+ bool raise = false;
+ object old_value = null;
lock(this) {
if(object_store.ContainsKey(name)) {
- object old_value = object_store[name];
+ old_value = object_store[name];
object_store.Remove(name);
- OnPropertyChanged(name, false, true, old_value, null);
+ raise = true;
}
}
+
+ if (raise) {
+ OnPropertyChanged(name, false, true, old_value, null);
+ }
}
public void RemoveStartingWith (string prefix)
@@ -126,10 +132,9 @@
public void Set<T>(string name, T value)
{
+ bool added = false;
+ T old_value = default(T);
lock(this) {
- bool added = false;
- T old_value = default(T);
-
if(object_store == null) {
object_store = new Dictionary<string, object>();
}
@@ -143,9 +148,8 @@
added = true;
object_store.Add(name, value);
}
-
- OnPropertyChanged(name, added, false, old_value, value);
}
+ OnPropertyChanged(name, added, false, old_value, value);
}
public T Get<T>(string name)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]