Add dummy UI option to add blank media to Yamaha drive.
This commit is contained in:
@@ -3188,6 +3188,15 @@ cdrom_insert(const uint8_t id)
|
||||
dev->insert(dev->priv);
|
||||
}
|
||||
|
||||
void
|
||||
cdrom_insert_blank(const uint8_t id)
|
||||
{
|
||||
const cdrom_t *dev = &cdrom[id];
|
||||
|
||||
if (dev->bus_type && dev->insert_blank)
|
||||
dev->insert_blank(dev->priv);
|
||||
}
|
||||
|
||||
void
|
||||
cdrom_exit(const uint8_t id)
|
||||
{
|
||||
|
||||
@@ -344,6 +344,7 @@ typedef struct cdrom {
|
||||
|
||||
void (*insert)(void *priv);
|
||||
void (*close)(void *priv);
|
||||
void (*insert_blank)(void *priv);
|
||||
uint32_t (*get_volume)(void *p, int channel);
|
||||
uint32_t (*get_channel)(void *p, int channel);
|
||||
|
||||
@@ -474,6 +475,7 @@ extern void cdrom_exit(const uint8_t id);
|
||||
extern int cdrom_is_empty(const uint8_t id);
|
||||
extern void cdrom_eject(const uint8_t id);
|
||||
extern void cdrom_reload(const uint8_t id);
|
||||
extern void cdrom_insert_blank(const uint8_t id);
|
||||
|
||||
extern void cdrom_compute_ecc_block(cdrom_t *dev, uint8_t *parity, const uint8_t *data,
|
||||
uint32_t major_count, uint32_t minor_count,
|
||||
|
||||
@@ -162,6 +162,9 @@ MediaMenu::refresh(QMenu *parentMenu)
|
||||
cdromMutePos = menu->children().count();
|
||||
menu->addAction(QIcon(":/settings/qt/icons/cdrom_mute.ico"), tr("&Mute"), [this, i]() { cdromMute(i); })->setCheckable(true);
|
||||
menu->addSeparator();
|
||||
// Can make it only appear if the drive is a Yamaha?
|
||||
menu->addAction(tr("Add &blank disc"), [this, i]() { cdromInsertBlank(i); })->setCheckable(false);
|
||||
menu->addSeparator();
|
||||
menu->addAction(getIconWithIndicator(QIcon(":/settings/qt/icons/cdrom_image.ico"), pixmap_size, QIcon::Normal, Browse), tr("&Image..."), [this, i]() { cdromMount(i, 0, nullptr); })->setCheckable(false);
|
||||
menu->addAction(getIconWithIndicator(QIcon(":/settings/qt/icons/cdrom_folder.ico"), pixmap_size, QIcon::Normal, Browse), tr("&Folder..."), [this, i]() { cdromMount(i, 1, nullptr); })->setCheckable(false);
|
||||
menu->addSeparator();
|
||||
@@ -608,6 +611,21 @@ MediaMenu::cdromMount(int i, int dir, const QString &arg)
|
||||
cdromMount(i, filename);
|
||||
}
|
||||
|
||||
void
|
||||
MediaMenu::cdromInsertBlank(int i)
|
||||
{
|
||||
// Check if drive is empty
|
||||
if (!cdrom_is_empty(i)) {
|
||||
QMessageBox::information(parentWidget, tr("Drive not empty"), tr("The drive must be empty to add a blank disc."));
|
||||
return;
|
||||
}
|
||||
|
||||
// Add a blank disc
|
||||
cdrom_insert_blank(i);
|
||||
|
||||
ui_sb_update_icon_state(SB_CDROM | i, 1);
|
||||
}
|
||||
|
||||
void
|
||||
MediaMenu::cdromEject(int i)
|
||||
{
|
||||
|
||||
@@ -45,6 +45,7 @@ public:
|
||||
void cdromMute(int i);
|
||||
void cdromMount(int i, int dir, const QString &arg);
|
||||
void cdromMount(int i, const QString &filename);
|
||||
void cdromInsertBlank(int i);
|
||||
void cdromEject(int i);
|
||||
void cdromReload(int index, int slot);
|
||||
void updateImageHistory(int index, int slot, ui::MediaType type);
|
||||
|
||||
@@ -1232,6 +1232,17 @@ scsi_cdrom_insert(void *priv)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
scsi_cdrom_insert_blank(void *priv)
|
||||
{
|
||||
scsi_cdrom_t *dev = (scsi_cdrom_t *) priv;
|
||||
|
||||
if ((dev == NULL) /*|| (dev->drv == NULL)*/)
|
||||
return;
|
||||
|
||||
scsi_cdrom_log(dev->log, "Inserting blank disc\n");
|
||||
}
|
||||
|
||||
static int
|
||||
scsi_command_check_ready(const scsi_cdrom_t *dev, const uint8_t *cdb)
|
||||
{
|
||||
@@ -3988,6 +3999,7 @@ scsi_cdrom_drive_reset(const int c)
|
||||
drv->get_volume = scsi_cdrom_get_volume;
|
||||
drv->get_channel = scsi_cdrom_get_channel;
|
||||
drv->close = scsi_cdrom_close;
|
||||
drv->insert_blank = scsi_cdrom_insert_blank;
|
||||
|
||||
drv->sector_size = 2048;
|
||||
(void) scsi_cdrom_update_sector_flags(dev);
|
||||
|
||||
Reference in New Issue
Block a user