Merge pull request #4284 from lemondrops/cdromfix
Fix CD-ROM menu not updating after ejecting a CD from the guest side
This commit is contained in:
@@ -61,7 +61,6 @@ add_library(plat STATIC
|
|||||||
|
|
||||||
add_library(ui STATIC
|
add_library(ui STATIC
|
||||||
qt_ui.cpp
|
qt_ui.cpp
|
||||||
qt_cdrom.c
|
|
||||||
|
|
||||||
qt_mainwindow.cpp
|
qt_mainwindow.cpp
|
||||||
qt_mainwindow.hpp
|
qt_mainwindow.hpp
|
||||||
|
@@ -1,54 +0,0 @@
|
|||||||
/*
|
|
||||||
* 86Box A hypervisor and IBM PC system emulator that specializes in
|
|
||||||
* running old operating systems and software designed for IBM
|
|
||||||
* PC systems and compatibles from 1981 through fairly recent
|
|
||||||
* system designs based on the PCI bus.
|
|
||||||
*
|
|
||||||
* This file is part of the 86Box distribution.
|
|
||||||
*
|
|
||||||
* Handle the platform-side of CDROM/ZIP/MO drives.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
|
||||||
* Fred N. van Kempen, <decwiz@yahoo.com>
|
|
||||||
*
|
|
||||||
* Copyright 2016-2018 Miran Grca.
|
|
||||||
* Copyright 2017-2018 Fred N. van Kempen.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <wchar.h>
|
|
||||||
#include <86box/86box.h>
|
|
||||||
#include <86box/config.h>
|
|
||||||
#include <86box/timer.h>
|
|
||||||
#include <86box/device.h>
|
|
||||||
#include <86box/cassette.h>
|
|
||||||
#include <86box/cartridge.h>
|
|
||||||
#include <86box/fdd.h>
|
|
||||||
#include <86box/hdd.h>
|
|
||||||
#include <86box/scsi_device.h>
|
|
||||||
#include <86box/cdrom.h>
|
|
||||||
#include <86box/mo.h>
|
|
||||||
#include <86box/zip.h>
|
|
||||||
#include <86box/scsi_disk.h>
|
|
||||||
#include <86box/plat.h>
|
|
||||||
#include <86box/ui.h>
|
|
||||||
|
|
||||||
void
|
|
||||||
plat_cdrom_ui_update(uint8_t id, uint8_t reload)
|
|
||||||
{
|
|
||||||
cdrom_t *drv = &cdrom[id];
|
|
||||||
|
|
||||||
if (drv->host_drive == 0) {
|
|
||||||
ui_sb_update_icon_state(SB_CDROM | id, 1);
|
|
||||||
} else {
|
|
||||||
ui_sb_update_icon_state(SB_CDROM | id, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// media_menu_update_cdrom(id);
|
|
||||||
ui_sb_update_tip(SB_CDROM | id);
|
|
||||||
}
|
|
@@ -61,6 +61,7 @@ MediaMenu::MediaMenu(QWidget *parent)
|
|||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
{
|
{
|
||||||
parentWidget = parent;
|
parentWidget = parent;
|
||||||
|
connect(this, &MediaMenu::onCdromUpdateUi, this, &MediaMenu::cdromUpdateUi, Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -521,6 +522,23 @@ MediaMenu::cdromReload(int index, int slot)
|
|||||||
ui_sb_update_tip(SB_CDROM | index);
|
ui_sb_update_tip(SB_CDROM | index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MediaMenu::cdromUpdateUi(int i)
|
||||||
|
{
|
||||||
|
cdrom_t *drv = &cdrom[i];
|
||||||
|
|
||||||
|
if (drv->host_drive == 0) {
|
||||||
|
mhm.addImageToHistory(i, ui::MediaType::Optical, drv->prev_image_path, QString());
|
||||||
|
ui_sb_update_icon_state(SB_CDROM | i, 1);
|
||||||
|
} else {
|
||||||
|
mhm.addImageToHistory(i, ui::MediaType::Optical, drv->prev_image_path, drv->image_path);
|
||||||
|
ui_sb_update_icon_state(SB_CDROM | i, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
cdromUpdateMenu(i);
|
||||||
|
ui_sb_update_tip(SB_CDROM | i);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MediaMenu::updateImageHistory(int index, int slot, ui::MediaType type)
|
MediaMenu::updateImageHistory(int index, int slot, ui::MediaType type)
|
||||||
{
|
{
|
||||||
@@ -891,6 +909,53 @@ MediaMenu::getMediaOpenDirectory()
|
|||||||
|
|
||||||
// callbacks from 86box C code
|
// callbacks from 86box C code
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
void
|
||||||
|
cassette_mount(char *fn, uint8_t wp)
|
||||||
|
{
|
||||||
|
MediaMenu::ptr->cassetteMount(QString(fn), wp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cassette_eject(void)
|
||||||
|
{
|
||||||
|
MediaMenu::ptr->cassetteEject();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cartridge_mount(uint8_t id, char *fn, uint8_t wp)
|
||||||
|
{
|
||||||
|
MediaMenu::ptr->cartridgeMount(id, QString(fn));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cartridge_eject(uint8_t id)
|
||||||
|
{
|
||||||
|
MediaMenu::ptr->cartridgeEject(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
floppy_mount(uint8_t id, char *fn, uint8_t wp)
|
||||||
|
{
|
||||||
|
MediaMenu::ptr->floppyMount(id, QString(fn), wp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
floppy_eject(uint8_t id)
|
||||||
|
{
|
||||||
|
MediaMenu::ptr->floppyEject(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cdrom_mount(uint8_t id, char *fn)
|
||||||
|
{
|
||||||
|
MediaMenu::ptr->cdromMount(id, QString(fn));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
plat_cdrom_ui_update(uint8_t id, uint8_t reload)
|
||||||
|
{
|
||||||
|
emit MediaMenu::ptr->onCdromUpdateUi(id);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
zip_eject(uint8_t id)
|
zip_eject(uint8_t id)
|
||||||
@@ -898,6 +963,12 @@ zip_eject(uint8_t id)
|
|||||||
MediaMenu::ptr->zipEject(id);
|
MediaMenu::ptr->zipEject(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
zip_mount(uint8_t id, char *fn, uint8_t wp)
|
||||||
|
{
|
||||||
|
MediaMenu::ptr->zipMount(id, QString(fn), wp);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
zip_reload(uint8_t id)
|
zip_reload(uint8_t id)
|
||||||
{
|
{
|
||||||
@@ -910,6 +981,12 @@ mo_eject(uint8_t id)
|
|||||||
MediaMenu::ptr->moEject(id);
|
MediaMenu::ptr->moEject(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
mo_mount(uint8_t id, char *fn, uint8_t wp)
|
||||||
|
{
|
||||||
|
MediaMenu::ptr->moMount(id, QString(fn), wp);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
mo_reload(uint8_t id)
|
mo_reload(uint8_t id)
|
||||||
{
|
{
|
||||||
|
@@ -10,7 +10,7 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
class QMenu;
|
class QMenu;
|
||||||
|
|
||||||
class MediaMenu : QObject {
|
class MediaMenu : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
MediaMenu(QWidget *parent);
|
MediaMenu(QWidget *parent);
|
||||||
@@ -67,6 +67,12 @@ public:
|
|||||||
void nicDisconnect(int i);
|
void nicDisconnect(int i);
|
||||||
void nicUpdateMenu(int i);
|
void nicUpdateMenu(int i);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void cdromUpdateUi(int i);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void onCdromUpdateUi(int i);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QWidget *parentWidget = nullptr;
|
QWidget *parentWidget = nullptr;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user