[hyena] Revert "[Hyena.Gui] Fix crash-causing race in ListViewAccessible"
- From: Gabriel Burt <gburt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [hyena] Revert "[Hyena.Gui] Fix crash-causing race in ListViewAccessible"
- Date: Wed, 11 Aug 2010 04:14:24 +0000 (UTC)
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]