Ticket #8917: mt32-archive.patch

File mt32-archive.patch, 1.6 KB (added by fingolfin, 13 years ago)
  • sound/softsynth/mt32.cpp

     
    3232#include "sound/musicplugin.h"
    3333#include "sound/mpu401.h"
    3434
     35#include "common/archive.h"
    3536#include "common/config-manager.h"
    3637#include "common/events.h"
    3738#include "common/file.h"
     
    8081};
    8182
    8283class MT32File : public MT32Emu::File {
    83         Common::File _in;
     84        Common::SeekableReadStream *_in;
    8485        Common::DumpFile _out;
    8586public:
     87        MT32File() : _in(0) { }
     88        ~MT32File() { close(); }
    8689        bool open(const char *filename, OpenMode mode) {
    8790                if (mode == OpenMode_read)
    88                         return _in.open(filename);
     91                        return (_in = SearchMan.openFile(filename));
    8992                else
    9093                        return _out.open(filename);
    9194        }
    9295        void close() {
    93                 _in.close();
     96                delete _in; _in = 0;
    9497                _out.close();
    9598        }
    9699        size_t read(void *in, size_t size) {
    97                 return _in.read(in, size);
     100                return _in->read(in, size);
    98101        }
    99102        bool readBit8u(MT32Emu::Bit8u *in) {
    100                 byte b = _in.readByte();
    101                 if (_in.eof())
     103                byte b = _in->readByte();
     104                if (_in->eos())
    102105                        return false;
    103106                *in = b;
    104107                return true;
     
    111114                return !_out.ioFailed();
    112115        }
    113116        bool isEOF() {
    114                 return _in.isOpen() ? _in.eof() : _out.eof();
     117                return _in ? _in->eos() : _out.eos();
    115118        }
    116119};
    117120
     
    511514}
    512515
    513516MidiDriver *MidiDriver_MT32_create(Audio::Mixer *mixer) {
    514         // HACK: It will stay here until engine plugin loader overhaul
    515         if (ConfMan.hasKey("extrapath"))
    516                 Common::File::addDefaultDirectory(ConfMan.get("extrapath"));
    517 
    518517        MidiDriver *mididriver;
    519518
    520519        MT32EmuMusicPlugin p;