(From Oliver Stoneberg)

Fixed several memory leaks related to SCSI CD emulation.
This commit is contained in:
Aaron Giles 2007-12-31 01:57:54 +00:00
parent 1ea08b6933
commit d7e58ce2d0
8 changed files with 45 additions and 0 deletions

View File

@ -698,6 +698,16 @@ extern void lsi53c810_init(const struct LSI53C810interface *interface)
}
}
extern void lsi53c810_exit(const struct LSI53C810interface *interface)
{
int i;
for (i = 0; i < interface->scsidevs->devs_present; i++)
{
SCSIDeleteInstance( devices[interface->scsidevs->devices[i].scsiID] );
}
}
void lsi53c810_read_data(int bytes, UINT8 *pData)
{
if (devices[last_id])

View File

@ -12,6 +12,7 @@ struct LSI53C810interface
};
extern void lsi53c810_init(const struct LSI53C810interface *interface);
extern void lsi53c810_exit(const struct LSI53C810interface *interface);
extern void lsi53c810_read_data(int bytes, UINT8 *pData);
extern void lsi53c810_write_data(int bytes, UINT8 *pData);

View File

@ -231,6 +231,16 @@ void am53cf96_init( const struct AM53CF96interface *interface )
state_save_register_global(last_id);
}
void am53cf96_exit( const struct AM53CF96interface *interface )
{
int i;
for (i = 0; i < interface->scsidevs->devs_present; i++)
{
SCSIDeleteInstance( devices[interface->scsidevs->devices[i].scsiID] );
}
}
// retrieve data from the SCSI controller
void am53cf96_read_data(int bytes, UINT8 *pData)
{

View File

@ -15,6 +15,7 @@ struct AM53CF96interface
};
extern void am53cf96_init( const struct AM53CF96interface *interface );
extern void am53cf96_exit( const struct AM53CF96interface *interface );
extern void am53cf96_read_data(int bytes, UINT8 *pData);
void am53cf96_write_data(int bytes, UINT8 *pData);
void *am53cf96_get_device(int id);

View File

@ -809,6 +809,16 @@ extern void wd33c93_init( const struct WD33C93interface *interface )
// state_save_register_item_array("wd33c93", 0, scsi_data);
}
extern void wd33c93_exit( const struct WD33C93interface *interface )
{
int i;
for (i = 0; i < interface->scsidevs->devs_present; i++)
{
SCSIDeleteInstance( devices[interface->scsidevs->devices[i].scsiID] );
}
}
void wd33c93_get_dma_data( int bytes, UINT8 *pData )
{
int len = bytes;

View File

@ -15,6 +15,7 @@ struct WD33C93interface
};
extern void wd33c93_init( const struct WD33C93interface *interface );
extern void wd33c93_exit( const struct WD33C93interface *interface );
extern void wd33c93_get_dma_data(int bytes, UINT8 *pData);
extern void wd33c93_write_data(int bytes, UINT8 *pData);
extern void *wd33c93_get_device(int id);

View File

@ -346,10 +346,16 @@ static DRIVER_INIT( konamigq )
m_p_n_pcmram = memory_region( REGION_SOUND1 ) + 0x80000;
}
static void konamigq_exit(running_machine *machine)
{
am53cf96_exit(&scsi_intf);
}
static MACHINE_START( konamigq )
{
/* init the scsi controller and hook up it's DMA */
am53cf96_init(&scsi_intf);
add_exit_callback(machine, konamigq_exit);
psx_dma_install_read_handler(5, scsi_dma_read);
psx_dma_install_write_handler(5, scsi_dma_write);

View File

@ -306,12 +306,18 @@ static const struct AM53CF96interface scsi_intf =
&scsi_irq, /* command completion IRQ */
};
static void konamigv_exit(running_machine *machine)
{
am53cf96_exit(&scsi_intf);
}
static DRIVER_INIT( konamigv )
{
psx_driver_init();
/* init the scsi controller and hook up it's DMA */
am53cf96_init(&scsi_intf);
add_exit_callback(machine, konamigv_exit);
psx_dma_install_read_handler(5, scsi_dma_read);
psx_dma_install_write_handler(5, scsi_dma_write);
}