[banshee] More disposing
- From: Alexander Kojevnikov <alexk src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [banshee] More disposing
- Date: Sat, 13 Feb 2010 03:55:51 +0000 (UTC)
commit 39a1c12c1c596611960bdac42f084db7fcc89cf0
Author: Alexander Kojevnikov <alexander kojevnikov com>
Date: Sat Feb 13 14:54:28 2010 +1100
More disposing
.../XmlConfigurationClient.cs | 15 ++--
.../Banshee.Collection/RescanPipeline.cs | 75 ++++++++++---------
.../Banshee.Metadata/MetadataServiceJob.cs | 6 +-
.../Banshee.Playlists.Formats/AsxPlaylistFormat.cs | 8 ++-
.../Banshee.Playlists.Formats/PlaylistParser.cs | 9 ++-
.../Banshee.Collection.Gui/ColumnCellAlbum.cs | 4 +
.../Banshee.Collection.Gui/XmlColumnController.cs | 10 ++--
.../Banshee.Gui.Dialogs/ImageFileChooserDialog.cs | 5 +-
.../Banshee.Sources.Gui/SourceRowRenderer.cs | 8 ++
.../Banshee.Dap.Gui/LibrarySyncOptions.cs | 2 +
.../Banshee.CoverArt/CoverArtService.cs | 1 +
.../Banshee.Podcasting.Gui/ColumnCellPodcast.cs | 4 +
.../Hyena.Data.Sqlite/HyenaSqliteConnection.cs | 4 +
13 files changed, 91 insertions(+), 60 deletions(-)
---
diff --git a/src/Core/Banshee.Core/Banshee.Configuration/XmlConfigurationClient.cs b/src/Core/Banshee.Core/Banshee.Configuration/XmlConfigurationClient.cs
index 2823a40..1305899 100644
--- a/src/Core/Banshee.Core/Banshee.Configuration/XmlConfigurationClient.cs
+++ b/src/Core/Banshee.Core/Banshee.Configuration/XmlConfigurationClient.cs
@@ -103,8 +103,9 @@ namespace Banshee.Configuration
foreach(XmlNode node in namespace_node.ChildNodes) {
if(node.Attributes[tag_identifier_attribute_name].Value == key && node.Name == value_tag_name) {
XmlSerializer serializer = new XmlSerializer(typeof(T));
- StringReader reader = new StringReader(node.InnerXml);
- return (T) serializer.Deserialize(reader);
+ using (var reader = new StringReader(node.InnerXml) ) {
+ return (T) serializer.Deserialize(reader);
+ }
}
}
return fallback;
@@ -125,11 +126,11 @@ namespace Banshee.Configuration
{
lock(xml_document) {
XmlSerializer serializer = new XmlSerializer(typeof(T));
- StringWriter writer = new StringWriter();
- serializer.Serialize(writer, value);
- XmlDocumentFragment fragment = xml_document.CreateDocumentFragment();
- fragment.InnerXml = writer.ToString();
- writer.Close();
+ var fragment = xml_document.CreateDocumentFragment();
+ using (var writer = new StringWriter()) {
+ serializer.Serialize(writer, value);
+ fragment.InnerXml = writer.ToString();
+ }
if(fragment.FirstChild is XmlDeclaration) {
fragment.RemoveChild(fragment.FirstChild); // This is only a problem with Microsoft's System.Xml
diff --git a/src/Core/Banshee.Services/Banshee.Collection/RescanPipeline.cs b/src/Core/Banshee.Services/Banshee.Collection/RescanPipeline.cs
index 25f2f58..66f2416 100644
--- a/src/Core/Banshee.Services/Banshee.Collection/RescanPipeline.cs
+++ b/src/Core/Banshee.Services/Banshee.Collection/RescanPipeline.cs
@@ -160,43 +160,46 @@ namespace Banshee.Collection
try {
SafeUri uri = new SafeUri (file_path);
- IDataReader reader = ServiceManager.DbConnection.Query (fetch_command, psource.DbId, uri.AbsoluteUri);
- if (reader.Read () ) {
- //Hyena.Log.DebugFormat ("Found it in the db!");
- DatabaseTrackInfo track = DatabaseTrackInfo.Provider.Load (reader);
-
- MergeIfModified (track);
-
- // Either way, update the LastSyncStamp
- track.LastSyncedStamp = DateTime.Now;
- track.Save (false);
- status = String.Format ("{0} - {1}", track.DisplayArtistName, track.DisplayTrackTitle);
- } else {
- // This URI is not in the database - try to find it based on MetadataHash in case it was simply moved
- DatabaseTrackInfo track = new DatabaseTrackInfo ();
- Banshee.Streaming.StreamTagger.TrackInfoMerge (track, uri);
-
- IDataReader similar_reader = ServiceManager.DbConnection.Query (fetch_similar_command, psource.DbId, scan_started, track.MetadataHash);
- DatabaseTrackInfo similar_track = null;
- while (similar_reader.Read ()) {
- similar_track = DatabaseTrackInfo.Provider.Load (similar_reader);
- if (!Banshee.IO.File.Exists (similar_track.Uri)) {
- //Hyena.Log.DebugFormat ("Apparently {0} was moved to {1}", similar_track.Uri, file_path);
- similar_track.Uri = uri;
- MergeIfModified (similar_track);
- similar_track.LastSyncedStamp = DateTime.Now;
- similar_track.Save (false);
- status = String.Format ("{0} - {1}", similar_track.DisplayArtistName, similar_track.DisplayTrackTitle);
- break;
+ using (var reader = ServiceManager.DbConnection.Query (fetch_command, psource.DbId, uri.AbsoluteUri)) {
+ if (reader.Read () ) {
+ //Hyena.Log.DebugFormat ("Found it in the db!");
+ DatabaseTrackInfo track = DatabaseTrackInfo.Provider.Load (reader);
+
+ MergeIfModified (track);
+
+ // Either way, update the LastSyncStamp
+ track.LastSyncedStamp = DateTime.Now;
+ track.Save (false);
+ status = String.Format ("{0} - {1}", track.DisplayArtistName, track.DisplayTrackTitle);
+ } else {
+ // This URI is not in the database - try to find it based on MetadataHash in case it was simply moved
+ DatabaseTrackInfo track = new DatabaseTrackInfo ();
+ Banshee.Streaming.StreamTagger.TrackInfoMerge (track, uri);
+
+ using (var similar_reader = ServiceManager.DbConnection.Query (
+ fetch_similar_command, psource.DbId, scan_started, track.MetadataHash)) {
+ DatabaseTrackInfo similar_track = null;
+ while (similar_reader.Read ()) {
+ similar_track = DatabaseTrackInfo.Provider.Load (similar_reader);
+ if (!Banshee.IO.File.Exists (similar_track.Uri)) {
+ //Hyena.Log.DebugFormat ("Apparently {0} was moved to {1}", similar_track.Uri, file_path);
+ similar_track.Uri = uri;
+ MergeIfModified (similar_track);
+ similar_track.LastSyncedStamp = DateTime.Now;
+ similar_track.Save (false);
+ status = String.Format ("{0} - {1}", similar_track.DisplayArtistName, similar_track.DisplayTrackTitle);
+ break;
+ }
+ similar_track = null;
+ }
+
+ // If we still couldn't find it, try to import it
+ if (similar_track == null) {
+ //Hyena.Log.DebugFormat ("Couldn't find it, so queueing to import it");
+ status = System.IO.Path.GetFileNameWithoutExtension (file_path);
+ ServiceManager.Get<Banshee.Library.LibraryImportManager> ().ImportTrack (file_path);
+ }
}
- similar_track = null;
- }
-
- // If we still couldn't find it, try to import it
- if (similar_track == null) {
- //Hyena.Log.DebugFormat ("Couldn't find it, so queueing to import it");
- status = System.IO.Path.GetFileNameWithoutExtension (file_path);
- ServiceManager.Get<Banshee.Library.LibraryImportManager> ().ImportTrack (file_path);
}
}
} catch (Exception e) {
diff --git a/src/Core/Banshee.Services/Banshee.Metadata/MetadataServiceJob.cs b/src/Core/Banshee.Services/Banshee.Metadata/MetadataServiceJob.cs
index 5e658fd..76ddc08 100644
--- a/src/Core/Banshee.Services/Banshee.Metadata/MetadataServiceJob.cs
+++ b/src/Core/Banshee.Services/Banshee.Metadata/MetadataServiceJob.cs
@@ -163,10 +163,10 @@ namespace Banshee.Metadata
{
HttpWebResponse response = GetHttpStream(uri, ignoreMimeTypes);
Stream from_stream = response == null ? null : response.GetResponseStream ();
+ if (response != null) {
+ response.Close ();
+ }
if(from_stream == null) {
- if (response != null) {
- response.Close ();
- }
return false;
}
diff --git a/src/Core/Banshee.Services/Banshee.Playlists.Formats/AsxPlaylistFormat.cs b/src/Core/Banshee.Services/Banshee.Playlists.Formats/AsxPlaylistFormat.cs
index de0d008..073f782 100644
--- a/src/Core/Banshee.Services/Banshee.Playlists.Formats/AsxPlaylistFormat.cs
+++ b/src/Core/Banshee.Services/Banshee.Playlists.Formats/AsxPlaylistFormat.cs
@@ -49,9 +49,10 @@ namespace Banshee.Playlists.Formats
public static bool MagicHandler(StreamReader reader)
{
try {
- XmlTextReader xml_reader = new XmlTextReader(reader);
- xml_reader.WhitespaceHandling = WhitespaceHandling.None;
- return CheckAsxHeader(xml_reader);
+ using (var xml_reader = new XmlTextReader(reader)) {
+ xml_reader.WhitespaceHandling = WhitespaceHandling.None;
+ return CheckAsxHeader(xml_reader);
+ }
} catch {
return false;
}
@@ -124,6 +125,7 @@ namespace Banshee.Playlists.Formats
}
} while(!xml_reader.EOF && xml_reader.Depth > 1);
}
+ xml_reader.Close ();
}
public override void Save(Stream stream, ITrackModelSource source)
diff --git a/src/Core/Banshee.Services/Banshee.Playlists.Formats/PlaylistParser.cs b/src/Core/Banshee.Services/Banshee.Playlists.Formats/PlaylistParser.cs
index 6233294..4e81090 100644
--- a/src/Core/Banshee.Services/Banshee.Playlists.Formats/PlaylistParser.cs
+++ b/src/Core/Banshee.Services/Banshee.Playlists.Formats/PlaylistParser.cs
@@ -128,10 +128,11 @@ namespace Banshee.Playlists.Formats
foreach (PlaylistFormatDescription format in playlist_formats) {
stream.Position = 0;
- StreamReader reader = new StreamReader (stream);
- if (format.MagicHandler (reader)) {
- matching_format = format;
- break;
+ using (var reader = new StreamReader (stream)) {
+ if (format.MagicHandler (reader)) {
+ matching_format = format;
+ break;
+ }
}
}
diff --git a/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs b/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs
index 716fad0..bcf806a 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs
@@ -101,6 +101,10 @@ namespace Banshee.Collection.Gui
ArtworkRenderer.RenderThumbnail (context.Context, image, false, x, y,
image_render_size, image_render_size, !is_default, context.Theme.Context.Radius);
+ if (!is_default) {
+ ((IDisposable)image).Dispose ();
+ }
+
int fl_width = 0, fl_height = 0, sl_width = 0, sl_height = 0;
Cairo.Color text_color = context.Theme.Colors.GetWidgetColor (GtkColorClass.Text, state);
text_color.A = 0.75;
diff --git a/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/XmlColumnController.cs b/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/XmlColumnController.cs
index a3998c7..bed0712 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/XmlColumnController.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/XmlColumnController.cs
@@ -41,11 +41,11 @@ namespace Banshee.Collection.Gui
{
public XmlColumnController (string xml) : base (false)
{
- XmlTextReader reader = new XmlTextReader (new StringReader (xml));
-
- while (reader.Read ()) {
- if (reader.NodeType == XmlNodeType.Element && reader.Name == "column-controller") {
- ReadColumnController (reader, reader.Depth);
+ using (var reader = new XmlTextReader (new StringReader (xml))) {
+ while (reader.Read ()) {
+ if (reader.NodeType == XmlNodeType.Element && reader.Name == "column-controller") {
+ ReadColumnController (reader, reader.Depth);
+ }
}
}
diff --git a/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/ImageFileChooserDialog.cs b/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/ImageFileChooserDialog.cs
index 2134476..3cc9cb7 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/ImageFileChooserDialog.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/ImageFileChooserDialog.cs
@@ -70,8 +70,9 @@ namespace Banshee.Gui.Dialogs
throw new ApplicationException ();
}
- Gdk.Pixbuf pixbuf = new Gdk.Pixbuf (PreviewFilename);
- preview.Pixbuf = pixbuf.ScaleSimple (100, 100, Gdk.InterpType.Bilinear);
+ using (var pixbuf = new Gdk.Pixbuf (PreviewFilename)) {
+ preview.Pixbuf = pixbuf.ScaleSimple (100, 100, Gdk.InterpType.Bilinear);
+ }
preview.Show ();
} catch {
preview.Hide ();
diff --git a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs
index 11d02c8..2c048be 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs
@@ -153,6 +153,7 @@ namespace Banshee.Sources.Gui
Pixbuf icon = SourceIconResolver.ResolveIcon (source, RowHeight);
+ bool dispose_icon = false;
if (state == StateType.Insensitive) {
// Code ported from gtk_cell_renderer_pixbuf_render()
var icon_source = new IconSource () {
@@ -163,6 +164,9 @@ namespace Banshee.Sources.Gui
icon = widget.Style.RenderIcon (icon_source, widget.Direction, state,
(IconSize)(-1), widget, "SourceRowRenderer");
+
+ dispose_icon = true;
+ icon_source.Dispose ();
}
FontDescription fd = widget.PangoContext.FontDescription.Copy ();
@@ -210,6 +214,10 @@ namespace Banshee.Sources.Gui
drawable.DrawPixbuf (main_gc, icon, 0, 0,
cell_area.X, Middle (cell_area, icon.Height),
icon.Width, icon.Height, RgbDither.None, 0, 0);
+
+ if (dispose_icon) {
+ icon.Dispose ();
+ }
}
if (hide_counts) {
diff --git a/src/Dap/Banshee.Dap/Banshee.Dap.Gui/LibrarySyncOptions.cs b/src/Dap/Banshee.Dap/Banshee.Dap.Gui/LibrarySyncOptions.cs
index f910cbe..7cec480 100644
--- a/src/Dap/Banshee.Dap/Banshee.Dap.Gui/LibrarySyncOptions.cs
+++ b/src/Dap/Banshee.Dap/Banshee.Dap.Gui/LibrarySyncOptions.cs
@@ -106,6 +106,8 @@ namespace Banshee.Dap.Gui
foreach (var child in library_sync.Library.Children) {
RemovePlaylist (child, true);
}
+
+ combo.Dispose ();
}
private void AddPlaylist (Source source)
diff --git a/src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs b/src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs
index dd3395e..6597a9d 100644
--- a/src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs
+++ b/src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs
@@ -135,6 +135,7 @@ namespace Banshee.CoverArt
action_service.RemoveActionGroup ("CoverArt");
action_service.UIManager.RemoveUi (ui_manager_id);
+ actions.Dispose ();
actions = null;
action_service = null;
diff --git a/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPodcast.cs b/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPodcast.cs
index 86884e6..c982331 100644
--- a/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPodcast.cs
+++ b/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPodcast.cs
@@ -89,6 +89,10 @@ namespace Banshee.Podcasting.Gui
ArtworkRenderer.RenderThumbnail (context.Context, image, false, x, y,
image_render_size, image_render_size, !is_default, context.Theme.Context.Radius);
+ if (!is_default) {
+ ((IDisposable)image).Dispose ();
+ }
+
int fl_width = 0, fl_height = 0, sl_width = 0, sl_height = 0;
Cairo.Color text_color = context.Theme.Colors.GetWidgetColor (GtkColorClass.Text, state);
text_color.A = 0.75;
diff --git a/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs b/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs
index 037c192..e7fad63 100644
--- a/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs
+++ b/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs
@@ -465,6 +465,10 @@ namespace Hyena.Data.Sqlite
dispose_requested = true;
queue_signal.Set ();
queue_thread.Join ();
+
+ queue_signal.Close ();
+ ResultReadySignal.Close ();
+ transaction_signal.Close ();
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]