From 2f4d7eec4e3faeab1d95ece39cfb80263d792909 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 14 Apr 2021 23:44:15 -0400 Subject: Allow UI file manager to create floppy images before machine is started --- src/devices/imagedev/floppy.cpp | 5 +++-- src/frontend/mame/ui/floppycntrl.cpp | 8 ++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/devices/imagedev/floppy.cpp b/src/devices/imagedev/floppy.cpp index 2d3fd334afb..b01a7943935 100644 --- a/src/devices/imagedev/floppy.cpp +++ b/src/devices/imagedev/floppy.cpp @@ -377,7 +377,8 @@ void floppy_image_device::set_rpm(float _rpm) void floppy_image_device::setup_write(floppy_image_format_t *_output_format) { output_format = _output_format; - commit_image(); + if(image) + commit_image(); } void floppy_image_device::commit_image() @@ -713,6 +714,7 @@ static io_generic *ram_open(std::vector &data) void floppy_image_device::init_fs(const fs_info *fs) { + assert(image); if (fs->m_type) { std::vector img(fs->m_image_size); @@ -722,7 +724,6 @@ void floppy_image_device::init_fs(const fs_info *fs) source_format->load(iog, floppy_image::FF_UNKNOWN, variants, image.get()); delete source_format; delete iog; - } else fs->m_manager->floppy_instantiate_raw(fs->m_key, image.get()); } diff --git a/src/frontend/mame/ui/floppycntrl.cpp b/src/frontend/mame/ui/floppycntrl.cpp index 4d6239ded4a..15dc69944f4 100644 --- a/src/frontend/mame/ui/floppycntrl.cpp +++ b/src/frontend/mame/ui/floppycntrl.cpp @@ -49,8 +49,12 @@ void menu_control_floppy_image::do_load_create() machine().popmessage("Error: %s", fd.error()); return; } - if (create_fs) - fd.init_fs(create_fs); + if (create_fs) { + // HACK: ensure the floppy_image structure is created since device_image_interface may not otherwise do so during "init phase" + err = fd.finish_load(); + if (err != image_init_result::PASS) + fd.init_fs(create_fs); + } } else { image_init_result err = fd.load(input_filename); if ((err == image_init_result::PASS) && (output_filename.compare("") != 0)) -- cgit v1.2.3