banshee r3402 - in trunk/banshee: . src/Libraries/Hyena/Hyena.Data src/Libraries/Hyena/Hyena.Data.Sqlite
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3402 - in trunk/banshee: . src/Libraries/Hyena/Hyena.Data src/Libraries/Hyena/Hyena.Data.Sqlite
- Date: Mon, 10 Mar 2008 17:19:20 +0000 (GMT)
Author: gburt
Date: Mon Mar 10 17:19:20 2008
New Revision: 3402
URL: http://svn.gnome.org/viewvc/banshee?rev=3402&view=rev
Log:
2008-03-10 Gabriel Burt <gabriel burt gmail com>
* src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Avoid
unnecessary db queries in saving/restoring selection. Fix bugs with
IndexOf method.
* src/Libraries/Hyena/Hyena.Data/DictionaryModelCache.cs: Add lock
around Clear command.
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs
trunk/banshee/src/Libraries/Hyena/Hyena.Data/DictionaryModelCache.cs
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs Mon Mar 10 17:19:20 2008
@@ -122,7 +122,7 @@
SELECT OrderID FROM {0}
WHERE
ModelID = {1} AND
- ItemID = (SELECT {2} FROM {3} WHERE {4} = ?)",
+ ItemID IN (SELECT {2} FROM {3} WHERE {4} = ?) LIMIT 1",
CacheTableName, uid, model.JoinPrimaryKey, model.JoinTable, model.JoinColumn
)
);
@@ -232,9 +232,6 @@
if (rows == 0)
return -1;
- if (item_id == FirstOrderId)
- return 0;
-
long target_id = connection.Query<long> (select_single_command, item_id);
if (target_id == 0) {
return -1;
@@ -276,11 +273,13 @@
}
}
+ private bool saved_selection = false;
private void SaveSelection ()
{
- connection.Execute (delete_selection_command);
-
if (model.Selection.Count > 0 && !(has_select_all_item && model.Selection.AllSelected)) {
+ connection.Execute (delete_selection_command);
+ saved_selection = true;
+
long start, end;
foreach (Hyena.Collections.RangeCollection.Range range in model.Selection.Ranges) {
start = range.Start;
@@ -294,6 +293,8 @@
connection.Execute (save_selection_command, start, end - start + 1);
}
+ } else {
+ saved_selection = false;
}
}
@@ -309,10 +310,12 @@
model.Selection.Clear (false);
- using (IDataReader reader = connection.Query (get_selection_command)) {
- while (reader.Read ()) {
- selected_id = Convert.ToInt64 (reader[0]) - first_id;
- model.Selection.QuietSelect ((int)selected_id);
+ if (saved_selection) {
+ using (IDataReader reader = connection.Query (get_selection_command)) {
+ while (reader.Read ()) {
+ selected_id = Convert.ToInt64 (reader[0]) - first_id;
+ model.Selection.QuietSelect ((int)selected_id);
+ }
}
}
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Data/DictionaryModelCache.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.Data/DictionaryModelCache.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Data/DictionaryModelCache.cs Mon Mar 10 17:19:20 2008
@@ -56,7 +56,9 @@
public override void Clear ()
{
- cache.Clear ();
+ lock (this) {
+ cache.Clear ();
+ }
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]