[hyena] Revert "[Hyena.Gui] Fix crash-causing race in ListViewAccessible"



commit 7297c706506be7b58d46361c4c7582f2917df216
Author: Gabriel Burt <gabriel burt gmail com>
Date:   Tue Aug 10 21:12:23 2010 -0700

    Revert "[Hyena.Gui] Fix crash-causing race in ListViewAccessible"
    
    This reverts commit baf44bebbcb9a93d3232457c3deb1b3cd414200d.
    
    A lock isn't the right fix here - only the GUI thread should be
    accessing this class.

 .../Accessibility/ListViewAccessible.cs            |   63 +++++++++-----------
 1 files changed, 28 insertions(+), 35 deletions(-)
---
diff --git a/Hyena.Gui/Hyena.Data.Gui/Accessibility/ListViewAccessible.cs b/Hyena.Gui/Hyena.Data.Gui/Accessibility/ListViewAccessible.cs
index 19eba8a..a9ba835 100644
--- a/Hyena.Gui/Hyena.Data.Gui/Accessibility/ListViewAccessible.cs
+++ b/Hyena.Gui/Hyena.Data.Gui/Accessibility/ListViewAccessible.cs
@@ -92,32 +92,30 @@ namespace Hyena.Data.Gui.Accessibility
         {
             ColumnCellAccessible child;
 
-            lock (cell_cache) {
-                if (cell_cache.ContainsKey (index)) {
-                    return cell_cache[index];
-                }
-
-                // FIXME workaround to prevent crashing on Grid ListViews
-                if (list_view.ColumnController == null)
-                    return null;
-
-                var columns = list_view.ColumnController.Where (c => c.Visible);
-
-                if (index - n_columns < 0) {
-                    child = columns.ElementAtOrDefault (index)
-                                   .HeaderCell
-                                   .GetAccessible (this) as ColumnCellAccessible;
-                } else {
-                    int column = (index - n_columns) % n_columns;
-                    int row = (index - n_columns) / n_columns;
-                    var cell = columns.ElementAtOrDefault (column).GetCell (0);
-                    cell.BindListItem (list_view.Model[row]);
-                    child = (ColumnCellAccessible) cell.GetAccessible (this);
-                }
+            if (cell_cache.ContainsKey (index)) {
+                return cell_cache[index];
+            }
 
-                cell_cache.Add (index, child);
+            // FIXME workaround to prevent crashing on Grid ListViews
+            if (list_view.ColumnController == null)
+                return null;
+
+            var columns = list_view.ColumnController.Where (c => c.Visible);
+
+            if (index - n_columns < 0) {
+                child = columns.ElementAtOrDefault (index)
+                               .HeaderCell
+                               .GetAccessible (this) as ColumnCellAccessible;
+            } else {
+                int column = (index - n_columns) % n_columns;
+                int row = (index - n_columns) / n_columns;
+                var cell = columns.ElementAtOrDefault (column).GetCell (0);
+                cell.BindListItem (list_view.Model[row]);
+                child = (ColumnCellAccessible) cell.GetAccessible (this);
             }
 
+            cell_cache.Add (index, child);
+
             return child;
         }
 
@@ -131,9 +129,7 @@ namespace Hyena.Data.Gui.Accessibility
         private void OnModelChanged ()
         {
             GLib.Signal.Emit (this, "model_changed");
-            lock (cell_cache) {
-                cell_cache.Clear ();
-            }
+            cell_cache.Clear ();
             /*var handler = ModelChanged;
             if (handler != null) {
                 handler (this, EventArgs.Empty);
@@ -173,11 +169,10 @@ namespace Hyena.Data.Gui.Accessibility
 
         public int GetCellIndex (ColumnCellAccessible cell)
         {
-            lock (cell_cache) {
-                foreach (KeyValuePair<int, ColumnCellAccessible> kv in cell_cache) {
-                    if ((ColumnCellAccessible)kv.Value == cell)
-                        return (int)kv.Key;
-                }
+            foreach (KeyValuePair<int, ColumnCellAccessible> kv in cell_cache)
+            {
+                if ((ColumnCellAccessible)kv.Value == cell)
+                    return (int)kv.Key;
             }
 
             return -1;
@@ -250,10 +245,8 @@ namespace Hyena.Data.Gui.Accessibility
             else
                 index = column;
 
-            lock (cell_cache) {
-                if (cell_cache.ContainsKey (index)) {
-                    cell_cache[index].Redrawn ();
-                }
+            if (cell_cache.ContainsKey (index)) {
+                cell_cache[index].Redrawn ();
             }
         }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]