aboutsummaryrefslogtreecommitdiffstats
path: root/fsomusicd
diff options
context:
space:
mode:
authorFrederik 'playya' Sdun <Frederik.Sdun@googlemail.com>2009-11-21 23:33:55 +0100
committerFrederik 'playya' Sdun <Frederik.Sdun@googlemail.com>2009-11-21 23:33:55 +0100
commit71c9aef8fab0b83a85a7891e20e12571c507e8a2 (patch)
treed63f2c2bd23b27e9478086f4a648305a4141b8d7 /fsomusicd
parentd0fdbec3aba491de9957bbbf1db6a3090cb754eb (diff)
downloadcornucopia-71c9aef8fab0b83a85a7891e20e12571c507e8a2.tar.gz
cornucopia-71c9aef8fab0b83a85a7891e20e12571c507e8a2.tar.bz2
cornucopia-71c9aef8fab0b83a85a7891e20e12571c507e8a2.zip
fsomusicd: Make LoadFromFile real async
Diffstat (limited to 'fsomusicd')
-rw-r--r--fsomusicd/src/playlist.vala29
1 files changed, 21 insertions, 8 deletions
diff --git a/fsomusicd/src/playlist.vala b/fsomusicd/src/playlist.vala
index 038dfaf6..34127d40 100644
--- a/fsomusicd/src/playlist.vala
+++ b/fsomusicd/src/playlist.vala
@@ -1,7 +1,7 @@
/*
* File Name: playlist.vala
* Creation Date: 23-08-2009
- * Last Modified: 21-11-2009 23:04:30
+ * Last Modified: 21-11-2009 23:31:02
*
* Authored by Frederik 'playya' Sdun <Frederik.Sdun@googlemail.com>
*
@@ -264,16 +264,29 @@ namespace FsoMusic
}
public async void load_from_file( string file ) throws MusicPlayerPlaylistError, DBus.Error
{
- this.files = new List<string>();
- var fs = FileStream.open( file, "r" );
- if( fs == null )
+ if( ! FileUtils.test( file, FileTest.IS_REGULAR ))
throw new MusicPlayerPlaylistError.FILE_NOT_FOUND( "Can't open file: %s".printf(file));
- while(!fs.eof())
+ this.files = new List<string>();
+ try
{
- string? line = fs.read_line();
- if( line != null && line.len() > 0 )
- this.files.prepend( line );
+ var f = File.new_for_path( file );
+ var in_stream = yield f.read_async( Priority.DEFAULT, null );
+ var data_stream = new DataInputStream( in_stream );
+ while( true )
+ {
+ size_t len;
+ var line = yield data_stream.read_line_async( Priority.DEFAULT, null, out len );
+ if( line == null )
+ break;
+ if( len > 0 )
+ files.prepend( line );
+ }
}
+ catch (GLib.Error e)
+ {
+ logger.error( @"LoadFromFile: $(e.message)" );
+ }
+
this.files.reverse();
}
//