The great CD-ROM clean-up and rewrite, fixes #5134.

This commit is contained in:
OBattler
2025-01-28 16:26:28 +01:00
parent 1cb17f7a3a
commit 90e1190c92
48 changed files with 9486 additions and 9389 deletions

View File

@@ -537,10 +537,7 @@ MediaMenu::cdromMount(int i, const QString &filename)
if ((fn.data() != NULL) && (strlen(fn.data()) >= 1) && (fn.data()[strlen(fn.data()) - 1] == '\\'))
fn.data()[strlen(fn.data()) - 1] = '/';
#endif
if ((fn.data() != nullptr) && fn.contains("ioctl://"))
cdrom_ioctl_open(&(cdrom[i]), fn.data());
else
cdrom_image_open(&(cdrom[i]), fn.data());
cdrom_load(&(cdrom[i]), fn.data(), 1);
/* Signal media change to the emulated machine. */
if (cdrom[i].insert) {
@@ -806,14 +803,21 @@ MediaMenu::zipSelectImage(int i, bool wp)
void
MediaMenu::zipMount(int i, const QString &filename, bool wp)
{
const auto dev = static_cast<zip_t *>(zip_drives[i].priv);
const auto dev = static_cast<zip_t *>(zip_drives[i].priv);
int was_empty = zip_is_empty(i);
zip_disk_close(dev);
zip_drives[i].read_only = wp;
if (!filename.isEmpty()) {
QByteArray filenameBytes = filename.toUtf8();
zip_load(dev, filenameBytes.data());
zip_load(dev, filenameBytes.data(), 1);
/* Signal media change to the emulated machine. */
zip_insert(dev);
/* The drive was previously empty, transition directly to UNIT ATTENTION. */
if (was_empty)
zip_insert(dev);
}
mhm.addImageToHistory(i, ui::MediaType::Zip, zip_drives[i].prev_image_path, zip_drives[i].image_path);
@@ -935,14 +939,21 @@ MediaMenu::moSelectImage(int i, bool wp)
void
MediaMenu::moMount(int i, const QString &filename, bool wp)
{
const auto dev = static_cast<mo_t *>(mo_drives[i].priv);
const auto dev = static_cast<mo_t *>(mo_drives[i].priv);
int was_empty = mo_is_empty(i);
mo_disk_close(dev);
mo_drives[i].read_only = wp;
if (!filename.isEmpty()) {
QByteArray filenameBytes = filename.toUtf8();
mo_load(dev, filenameBytes.data());
mo_load(dev, filenameBytes.data(), 1);
/* Signal media change to the emulated machine. */
mo_insert(dev);
/* The drive was previously empty, transition directly to UNIT ATTENTION. */
if (was_empty)
mo_insert(dev);
}
mhm.addImageToHistory(i, ui::MediaType::Mo, mo_drives[i].prev_image_path, mo_drives[i].image_path);