]> git.tdb.fi Git - libs/gui.git/blobdiff - source/graphics/imageloader.cpp
Use a RefPtr of correct type
[libs/gui.git] / source / graphics / imageloader.cpp
index 679f797adcc2bae5d7499c7cc41f6254ef3bb723..6cdaef912e65062740c284559b3851c742bd102b 100644 (file)
@@ -27,7 +27,7 @@ ImageLoader *ImageLoader::open_file(const string &fn)
 {
        try
        {
-               RefPtr<IO::File> file = new IO::BufferedFile(fn);
+               RefPtr<IO::BufferedFile> file = new IO::BufferedFile(fn);
                ImageLoader *loader = open_io(*file);
                loader->source = file.release();
                return loader;
@@ -38,11 +38,12 @@ ImageLoader *ImageLoader::open_file(const string &fn)
        }
 }
 
-ImageLoader *ImageLoader::open_io(IO::Base &io)
+ImageLoader *ImageLoader::open_io(IO::Seekable &io)
 {
        char sig_buf[8];
        unsigned sig_len = io.read(sig_buf, sizeof(sig_buf));
        string sig(sig_buf, sig_len);
+       io.seek(0, IO::S_BEG);
 
        // TODO register loader classes automatically
        ImageLoader *loader = 0;
@@ -50,11 +51,11 @@ ImageLoader *ImageLoader::open_io(IO::Base &io)
                ;
 #ifdef WITH_LIBPNG
        else if(PngLoader::detect(sig))
-               loader = new PngLoader(io, sig);
+               loader = new PngLoader(io);
 #endif
 #ifdef WITH_DEVIL
        else if(DevilLoader::detect(sig))
-               loader = new DevilLoader(io, sig);
+               loader = new DevilLoader(io);
 #endif
        else
        {