Write indicators (except for floppy drives)
This commit is contained in:
@@ -395,7 +395,7 @@ esdi_write(uint16_t port, uint8_t val, void *priv)
|
||||
fatal("Write with ECC\n");
|
||||
esdi->status = STAT_READY | STAT_DRQ | STAT_DSC;
|
||||
esdi->pos = 0;
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 1);
|
||||
break;
|
||||
|
||||
case CMD_VERIFY:
|
||||
@@ -412,7 +412,7 @@ esdi_write(uint16_t port, uint8_t val, void *priv)
|
||||
case CMD_FORMAT:
|
||||
esdi->status = STAT_DRQ;
|
||||
esdi->pos = 0;
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 1);
|
||||
break;
|
||||
|
||||
case CMD_SET_PARAMETERS: /* Initialize Drive Parameters */
|
||||
@@ -593,6 +593,7 @@ esdi_callback(void *priv)
|
||||
esdi->reset = 0;
|
||||
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -650,7 +651,7 @@ read_error:
|
||||
esdi->status = STAT_READY | STAT_ERR | STAT_DSC;
|
||||
esdi->error = ERR_ABRT;
|
||||
irq_raise(esdi);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
} else {
|
||||
if (get_sector(esdi, &addr)) {
|
||||
@@ -658,7 +659,7 @@ read_error:
|
||||
write_error:
|
||||
esdi->status = STAT_READY | STAT_DSC | STAT_ERR;
|
||||
irq_raise(esdi);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -672,10 +673,10 @@ write_error:
|
||||
esdi->status = STAT_DRQ | STAT_READY | STAT_DSC;
|
||||
esdi->pos = 0;
|
||||
next_sector(esdi);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 1);
|
||||
} else {
|
||||
esdi->status = STAT_READY | STAT_DSC;
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -718,7 +719,7 @@ verify_error:
|
||||
break;
|
||||
|
||||
case CMD_FORMAT:
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
if (!drive->present) {
|
||||
esdi->status = STAT_READY | STAT_ERR | STAT_DSC;
|
||||
esdi->error = ERR_ABRT;
|
||||
@@ -752,10 +753,12 @@ format_error:
|
||||
esdi->status = STAT_READY | STAT_DSC;
|
||||
irq_raise(esdi);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
|
||||
case CMD_SET_PARAMETERS: /* Initialize Drive Parameters */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
if (!drive->present) {
|
||||
esdi->status = STAT_READY | STAT_ERR | STAT_DSC;
|
||||
esdi->error = ERR_ABRT;
|
||||
@@ -778,10 +781,12 @@ format_error:
|
||||
esdi->error = ERR_ABRT;
|
||||
irq_raise(esdi);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
|
||||
case 0xe0:
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
if (!drive->present) {
|
||||
esdi->status = STAT_READY | STAT_ERR | STAT_DSC;
|
||||
esdi->error = ERR_ABRT;
|
||||
@@ -825,6 +830,7 @@ format_error:
|
||||
}
|
||||
irq_raise(esdi);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
|
||||
case CMD_READ_PARAMETERS:
|
||||
@@ -869,6 +875,7 @@ format_error:
|
||||
irq_raise(esdi);
|
||||
}
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -880,6 +887,7 @@ format_error:
|
||||
esdi->error = ERR_ABRT;
|
||||
irq_raise(esdi);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -954,6 +962,7 @@ wd1007vse1_init(UNUSED(const device_t *info))
|
||||
timer_add(&esdi->callback_timer, esdi_callback, esdi, 0);
|
||||
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
|
||||
return esdi;
|
||||
}
|
||||
@@ -973,6 +982,7 @@ wd1007vse1_close(void *priv)
|
||||
free(esdi);
|
||||
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -288,6 +288,7 @@ cmd_unsupported(esdi_t *dev)
|
||||
dev->irq_in_progress = 1;
|
||||
set_irq(dev);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -309,6 +310,7 @@ device_not_present(esdi_t *dev)
|
||||
dev->irq_in_progress = 1;
|
||||
set_irq(dev);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -330,6 +332,7 @@ rba_out_of_range(esdi_t *dev)
|
||||
dev->irq_in_progress = 1;
|
||||
set_irq(dev);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -351,6 +354,7 @@ defective_block(esdi_t *dev)
|
||||
dev->irq_in_progress = 1;
|
||||
set_irq(dev);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -368,6 +372,7 @@ complete_command_status(esdi_t *dev)
|
||||
dev->status_data[5] = (dev->rba - 1) >> 8;
|
||||
dev->status_data[6] = 0; /*Number of blocks requiring error recovery*/
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
}
|
||||
|
||||
#define ESDI_ADAPTER_ONLY() \
|
||||
@@ -696,6 +701,7 @@ esdi_callback(void *priv)
|
||||
dev->irq_in_progress = 1;
|
||||
set_irq(dev);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
|
||||
case CMD_GET_DEV_CONFIG:
|
||||
@@ -744,6 +750,7 @@ esdi_callback(void *priv)
|
||||
dev->irq_in_progress = 1;
|
||||
set_irq(dev);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
|
||||
case CMD_GET_POS_INFO:
|
||||
@@ -764,6 +771,7 @@ esdi_callback(void *priv)
|
||||
dev->irq_in_progress = 1;
|
||||
set_irq(dev);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
|
||||
case 0x10:
|
||||
@@ -817,6 +825,7 @@ esdi_callback(void *priv)
|
||||
dev->irq_in_progress = 1;
|
||||
set_irq(dev);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_ESDI, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -1827,7 +1827,7 @@ ide_writeb(uint16_t addr, uint8_t val, void *priv)
|
||||
ide->blockcount = 0;
|
||||
/* Turn on the activity indicator *here* so that it gets turned on
|
||||
less times. */
|
||||
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus_type, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 1);
|
||||
fallthrough;
|
||||
|
||||
case WIN_WRITE:
|
||||
@@ -2479,10 +2479,10 @@ ide_callback(void *priv)
|
||||
ide->tf->atastat = DRQ_STAT | DRDY_STAT | DSC_STAT;
|
||||
ide->tf->pos = 0;
|
||||
ide_next_sector(ide);
|
||||
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus_type, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 1);
|
||||
} else {
|
||||
ide->tf->atastat = DRDY_STAT | DSC_STAT;
|
||||
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus_type, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 0);
|
||||
}
|
||||
if (ret < 0)
|
||||
err = UNC_ERR;
|
||||
@@ -2524,7 +2524,7 @@ ide_callback(void *priv)
|
||||
err = UNC_ERR;
|
||||
|
||||
ide_irq_raise(ide);
|
||||
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus_type, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 0);
|
||||
} else {
|
||||
/* Bus master DMA error, abort the command. */
|
||||
ide_log("IDE %i: DMA read aborted (failed)\n", ide->channel);
|
||||
@@ -2562,7 +2562,7 @@ ide_callback(void *priv)
|
||||
ide_next_sector(ide);
|
||||
} else {
|
||||
ide->tf->atastat = DRDY_STAT | DSC_STAT;
|
||||
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus_type, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 0);
|
||||
}
|
||||
if (ret < 0)
|
||||
err = UNC_ERR;
|
||||
@@ -2596,7 +2596,7 @@ ide_callback(void *priv)
|
||||
err = UNC_ERR;
|
||||
ide_irq_raise(ide);
|
||||
|
||||
ui_sb_update_icon(SB_HDD | hdd[ide->hdd_num].bus_type, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -557,6 +557,7 @@ do_callback(void *priv)
|
||||
mfm->reset = 0;
|
||||
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 0);
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -627,9 +628,9 @@ write_error:
|
||||
mfm->status |= STAT_DRQ;
|
||||
mfm->pos = 0;
|
||||
next_sector(mfm);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 1);
|
||||
} else
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 0);
|
||||
break;
|
||||
|
||||
case CMD_VERIFY:
|
||||
@@ -657,7 +658,7 @@ write_error:
|
||||
|
||||
mfm->status = STAT_READY | STAT_DSC;
|
||||
irq_raise(mfm);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 1);
|
||||
break;
|
||||
|
||||
case CMD_DIAGNOSE:
|
||||
@@ -772,6 +773,7 @@ mfm_init(UNUSED(const device_t *info))
|
||||
timer_add(&mfm->callback_timer, do_callback, mfm, 0);
|
||||
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 0);
|
||||
|
||||
return mfm;
|
||||
}
|
||||
@@ -790,6 +792,7 @@ mfm_close(void *priv)
|
||||
free(mfm);
|
||||
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 0);
|
||||
}
|
||||
|
||||
const device_t st506_at_wd1003_device = {
|
||||
|
||||
@@ -580,14 +580,14 @@ st506_callback(void *priv)
|
||||
(void) get_chs(dev, drive);
|
||||
st506_xt_log("ST506: FORMAT_DRIVE(%i) interleave=%i\n",
|
||||
dev->drive_sel, dev->command[4]);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 1);
|
||||
timer_advance_u64(&dev->timer, ST506_TIME);
|
||||
dev->state = STATE_SEND_DATA;
|
||||
break;
|
||||
|
||||
case STATE_SEND_DATA: /* wrong, but works */
|
||||
if (!get_sector(dev, drive, &addr)) {
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 0);
|
||||
st506_error(dev, dev->error);
|
||||
st506_complete(dev);
|
||||
return;
|
||||
@@ -604,7 +604,7 @@ st506_callback(void *priv)
|
||||
break;
|
||||
|
||||
case STATE_SENT_DATA:
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 0);
|
||||
st506_complete(dev);
|
||||
break;
|
||||
|
||||
@@ -663,14 +663,14 @@ st506_callback(void *priv)
|
||||
st506_xt_log("ST506: FORMAT_%sTRACK(%i, %i/%i)\n",
|
||||
(dev->command[0] == CMD_FORMAT_BAD_TRACK) ? "BAD_" : "",
|
||||
dev->drive_sel, dev->cylinder, dev->head);
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 1);
|
||||
timer_advance_u64(&dev->timer, ST506_TIME);
|
||||
dev->state = STATE_SEND_DATA;
|
||||
break;
|
||||
|
||||
case STATE_SEND_DATA: /* wrong, but works */
|
||||
if (!get_sector(dev, drive, &addr)) {
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 0);
|
||||
st506_error(dev, dev->error);
|
||||
st506_complete(dev);
|
||||
return;
|
||||
@@ -686,7 +686,7 @@ st506_callback(void *priv)
|
||||
break;
|
||||
|
||||
case STATE_SENT_DATA:
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 0);
|
||||
st506_complete(dev);
|
||||
break;
|
||||
|
||||
@@ -828,7 +828,7 @@ read_error_sent:
|
||||
return;
|
||||
}
|
||||
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 1);
|
||||
|
||||
/* Set up the data transfer. */
|
||||
dev->buff_pos = 0;
|
||||
@@ -865,7 +865,7 @@ read_error_sent:
|
||||
case STATE_RECEIVED_DATA:
|
||||
if (!get_sector(dev, drive, &addr)) {
|
||||
write_error:
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 0);
|
||||
st506_error(dev, dev->error);
|
||||
st506_complete(dev);
|
||||
return;
|
||||
@@ -879,7 +879,7 @@ write_error:
|
||||
}
|
||||
|
||||
if (--dev->count == 0) {
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_MFM, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_MFM, 0);
|
||||
st506_complete(dev);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -385,7 +385,7 @@ do_format(hdc_t *dev, drive_t *drive, dcb_t *dcb)
|
||||
dev->sector = 0;
|
||||
|
||||
/* Activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 1);
|
||||
|
||||
do_fmt:
|
||||
/*
|
||||
@@ -426,7 +426,7 @@ do_fmt:
|
||||
}
|
||||
|
||||
/* De-activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 0);
|
||||
}
|
||||
|
||||
/* Execute the DCB we just received. */
|
||||
@@ -631,7 +631,7 @@ read_error:
|
||||
|
||||
case STATE_RECV:
|
||||
/* Activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 1);
|
||||
do_recv:
|
||||
/* Ready to transfer the data in. */
|
||||
dev->state = STATE_RDATA;
|
||||
@@ -680,7 +680,7 @@ do_recv:
|
||||
if (get_sector(dev, drive, &addr)) {
|
||||
write_error:
|
||||
/* De-activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 0);
|
||||
|
||||
dev->comp |= COMP_ERR;
|
||||
set_intr(dev);
|
||||
@@ -697,7 +697,7 @@ write_error:
|
||||
dev->buf_idx = 0;
|
||||
if (--dev->count == 0) {
|
||||
/* De-activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 0);
|
||||
|
||||
set_intr(dev);
|
||||
return;
|
||||
|
||||
@@ -628,6 +628,7 @@ mo_cmd_error(mo_t *dev)
|
||||
dev->callback = 50.0 * MO_TIME;
|
||||
mo_set_callback(dev);
|
||||
ui_sb_update_icon(SB_MO | dev->id, 0);
|
||||
ui_sb_update_icon_write(SB_MO | dev->id, 0);
|
||||
mo_log(dev->log, "[%02X] ERROR: %02X/%02X/%02X\n", dev->current_cdb[0], mo_sense_key,
|
||||
mo_asc, mo_ascq);
|
||||
}
|
||||
@@ -644,6 +645,7 @@ mo_unit_attention(mo_t *dev)
|
||||
dev->callback = 50.0 * MO_TIME;
|
||||
mo_set_callback(dev);
|
||||
ui_sb_update_icon(SB_MO | dev->id, 0);
|
||||
ui_sb_update_icon_write(SB_MO | dev->id, 0);
|
||||
mo_log(dev->log, "UNIT ATTENTION\n");
|
||||
}
|
||||
|
||||
@@ -1462,7 +1464,7 @@ mo_command(scsi_common_t *sc, const uint8_t *cdb)
|
||||
mo_data_command_finish(dev, dev->packet_len, dev->drv->sector_size,
|
||||
dev->packet_len, 1);
|
||||
|
||||
ui_sb_update_icon(SB_MO | dev->id,
|
||||
ui_sb_update_icon_write(SB_MO | dev->id,
|
||||
dev->packet_status != PHASE_COMPLETE);
|
||||
} else {
|
||||
mo_set_phase(dev, SCSI_PHASE_STATUS);
|
||||
@@ -1501,7 +1503,7 @@ mo_command(scsi_common_t *sc, const uint8_t *cdb)
|
||||
dev->drv->sector_size,
|
||||
alloc_length, 1);
|
||||
|
||||
ui_sb_update_icon(SB_MO | dev->id,
|
||||
ui_sb_update_icon_write(SB_MO | dev->id,
|
||||
dev->packet_status != PHASE_COMPLETE);
|
||||
} else {
|
||||
mo_set_phase(dev, SCSI_PHASE_STATUS);
|
||||
|
||||
@@ -709,6 +709,7 @@ zip_cmd_error(zip_t *dev)
|
||||
dev->callback = 50.0 * ZIP_TIME;
|
||||
zip_set_callback(dev);
|
||||
ui_sb_update_icon(SB_ZIP | dev->id, 0);
|
||||
ui_sb_update_icon_write(SB_ZIP | dev->id, 0);
|
||||
zip_log(dev->log, "[%02X] ERROR: %02X/%02X/%02X\n", dev->current_cdb[0], zip_sense_key,
|
||||
zip_asc, zip_ascq);
|
||||
}
|
||||
@@ -725,6 +726,7 @@ zip_unit_attention(zip_t *dev)
|
||||
dev->callback = 50.0 * ZIP_TIME;
|
||||
zip_set_callback(dev);
|
||||
ui_sb_update_icon(SB_ZIP | dev->id, 0);
|
||||
ui_sb_update_icon_write(SB_ZIP | dev->id, 0);
|
||||
zip_log(dev->log, "UNIT ATTENTION\n", dev->id);
|
||||
}
|
||||
|
||||
@@ -1485,7 +1487,7 @@ zip_command(scsi_common_t *sc, const uint8_t *cdb)
|
||||
zip_data_command_finish(dev, dev->packet_len, 512,
|
||||
dev->packet_len, 1);
|
||||
|
||||
ui_sb_update_icon(SB_ZIP | dev->id,
|
||||
ui_sb_update_icon_write(SB_ZIP | dev->id,
|
||||
dev->packet_status != PHASE_COMPLETE);
|
||||
} else {
|
||||
zip_set_phase(dev, SCSI_PHASE_STATUS);
|
||||
@@ -1526,7 +1528,7 @@ zip_command(scsi_common_t *sc, const uint8_t *cdb)
|
||||
zip_data_command_finish(dev, 512, 512,
|
||||
alloc_length, 1);
|
||||
|
||||
ui_sb_update_icon(SB_ZIP | dev->id,
|
||||
ui_sb_update_icon_write(SB_ZIP | dev->id,
|
||||
dev->packet_status != PHASE_COMPLETE);
|
||||
} else {
|
||||
zip_set_phase(dev, SCSI_PHASE_STATUS);
|
||||
|
||||
@@ -4,10 +4,12 @@
|
||||
typedef struct dev_status_empty_active_t {
|
||||
atomic_bool_t empty;
|
||||
atomic_bool_t active;
|
||||
atomic_bool_t write_active;
|
||||
} dev_status_empty_active_t;
|
||||
|
||||
typedef struct dev_status_active_t {
|
||||
atomic_bool_t active;
|
||||
atomic_bool_t write_active;
|
||||
} dev_status_active_t;
|
||||
|
||||
typedef struct dev_status_empty_t {
|
||||
|
||||
@@ -65,6 +65,7 @@ extern void ui_sb_update_panes(void);
|
||||
extern void ui_sb_update_text(void);
|
||||
extern void ui_sb_update_tip(int meaning);
|
||||
extern void ui_sb_update_icon(int tag, int active);
|
||||
extern void ui_sb_update_icon_write(int tag, int write);
|
||||
extern void ui_sb_update_icon_state(int tag, int state);
|
||||
extern void ui_sb_set_text_w(wchar_t *wstr);
|
||||
extern void ui_sb_set_text(char *str);
|
||||
|
||||
@@ -653,7 +653,7 @@ do_format(hdc_t *dev, drive_t *drive, ccb_t *ccb)
|
||||
case STATE_FINIT:
|
||||
do_fmt:
|
||||
/* Activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 1);
|
||||
|
||||
/* Seek to cylinder. */
|
||||
if (do_seek(dev, drive, start_cyl)) {
|
||||
@@ -691,7 +691,7 @@ do_fmt:
|
||||
}
|
||||
|
||||
/* De-activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 0);
|
||||
|
||||
/* This saves us a LOT of code. */
|
||||
dev->state = STATE_FINIT;
|
||||
@@ -705,6 +705,7 @@ do_fmt:
|
||||
if (intr) {
|
||||
/* De-activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 0);
|
||||
|
||||
do_finish(dev);
|
||||
}
|
||||
@@ -970,7 +971,7 @@ do_send:
|
||||
|
||||
case STATE_RECV:
|
||||
/* Activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 1);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 1);
|
||||
do_recv:
|
||||
/* Ready to transfer the data in. */
|
||||
dev->state = STATE_RDATA;
|
||||
@@ -1000,7 +1001,7 @@ do_recv:
|
||||
ps1_hdc_log("HDC: CMD_WRITE_SECTORS out of data (idx=%d, len=%d)!\n", dev->buf_idx, dev->buf_len);
|
||||
|
||||
/* De-activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 0);
|
||||
|
||||
dev->intstat |= ISR_EQUIP_CHECK;
|
||||
dev->ssb.need_reset = 1;
|
||||
@@ -1025,7 +1026,7 @@ do_recv:
|
||||
/* Get address of sector to write. */
|
||||
if (get_sector(dev, drive, &addr)) {
|
||||
/* De-activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 0);
|
||||
|
||||
do_finish(dev);
|
||||
return;
|
||||
@@ -1038,7 +1039,7 @@ do_recv:
|
||||
dev->buf_idx = 0;
|
||||
if (--dev->count == 0) {
|
||||
/* De-activate the status icon. */
|
||||
ui_sb_update_icon(SB_HDD | HDD_BUS_XTA, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | HDD_BUS_XTA, 0);
|
||||
|
||||
if (!(dev->ctrl & ACR_DMA_EN))
|
||||
dev->status &= ~ASR_DATA_REQ;
|
||||
|
||||
@@ -432,7 +432,8 @@ network_rx_queue(void *priv)
|
||||
bool activity = rx_bytes || tx_bytes;
|
||||
bool led_on = card->led_timer & 0x80000000;
|
||||
if ((activity && !led_on) || (card->led_timer & 0x7fffffff) >= 150000) {
|
||||
ui_sb_update_icon(SB_NETWORK | card->card_num, activity);
|
||||
ui_sb_update_icon(SB_NETWORK | card->card_num, !!(rx_bytes));
|
||||
ui_sb_update_icon_write(SB_NETWORK | card->card_num, !!(tx_bytes));
|
||||
card->led_timer = 0 | (activity << 31);
|
||||
}
|
||||
|
||||
@@ -577,6 +578,7 @@ void
|
||||
network_reset(void)
|
||||
{
|
||||
ui_sb_update_icon(SB_NETWORK, 0);
|
||||
ui_sb_update_icon_write(SB_NETWORK, 0);
|
||||
|
||||
#ifdef ENABLE_NETWORK_LOG
|
||||
network_dump_mutex = thread_create_mutex();
|
||||
|
||||
BIN
src/qt/icons/write_active.ico
Normal file
BIN
src/qt/icons/write_active.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.8 KiB |
@@ -8,6 +8,8 @@ getIndicatorIcon(IconIndicator indicator)
|
||||
switch (indicator) {
|
||||
case Active:
|
||||
return QIcon(":/settings/qt/icons/active.ico");
|
||||
case WriteActive:
|
||||
return QIcon(":/settings/qt/icons/write_active.ico");
|
||||
case Disabled:
|
||||
return QIcon(":/settings/qt/icons/disabled.ico");
|
||||
default:
|
||||
@@ -24,9 +26,13 @@ getIconWithIndicator(const QIcon &icon, const QSize &size, QIcon::Mode iconMode,
|
||||
return iconPixmap;
|
||||
|
||||
auto painter = QPainter(&iconPixmap);
|
||||
auto indicatorPixmap = getIndicatorIcon(indicator).pixmap(size);
|
||||
auto indicatorPixmap = getIndicatorIcon(indicator == ReadWriteActive ? Active : indicator).pixmap(size);
|
||||
|
||||
painter.drawPixmap(0, 0, indicatorPixmap);
|
||||
if (indicator == ReadWriteActive) {
|
||||
auto writeIndicatorPixmap = getIndicatorIcon(WriteActive).pixmap(size);
|
||||
painter.drawPixmap(0, 0, writeIndicatorPixmap);
|
||||
}
|
||||
painter.end();
|
||||
|
||||
return iconPixmap;
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
enum IconIndicator {
|
||||
None,
|
||||
Active,
|
||||
WriteActive,
|
||||
ReadWriteActive,
|
||||
Disabled,
|
||||
};
|
||||
|
||||
|
||||
@@ -68,6 +68,8 @@ namespace {
|
||||
struct PixmapSetActive {
|
||||
QPixmap normal;
|
||||
QPixmap active;
|
||||
QPixmap write_active;
|
||||
QPixmap read_write_active;
|
||||
void load(const QIcon &icon);
|
||||
};
|
||||
struct PixmapSetDisabled {
|
||||
@@ -85,6 +87,10 @@ struct PixmapSetEmptyActive {
|
||||
QPixmap active;
|
||||
QPixmap empty;
|
||||
QPixmap empty_active;
|
||||
QPixmap write_active;
|
||||
QPixmap read_write_active;
|
||||
QPixmap empty_write_active;
|
||||
QPixmap empty_read_write_active;
|
||||
void load(const QIcon &icon);
|
||||
};
|
||||
struct Pixmaps {
|
||||
@@ -105,6 +111,7 @@ struct StateActive {
|
||||
std::unique_ptr<QLabel> label;
|
||||
PixmapSetActive *pixmaps = nullptr;
|
||||
bool active = false;
|
||||
bool write_active = false;
|
||||
|
||||
void setActive(bool b)
|
||||
{
|
||||
@@ -115,11 +122,23 @@ struct StateActive {
|
||||
refresh();
|
||||
}
|
||||
|
||||
void setWriteActive(bool b)
|
||||
{
|
||||
if (!label || b == write_active)
|
||||
return;
|
||||
|
||||
write_active = b;
|
||||
refresh();
|
||||
}
|
||||
|
||||
void refresh()
|
||||
{
|
||||
if (!label)
|
||||
return;
|
||||
label->setPixmap(active ? pixmaps->active : pixmaps->normal);
|
||||
if (active && write_active)
|
||||
label->setPixmap(pixmaps->read_write_active);
|
||||
else
|
||||
label->setPixmap(write_active ? pixmaps->write_active : (active ? pixmaps->active : pixmaps->normal));
|
||||
}
|
||||
};
|
||||
struct StateEmpty {
|
||||
@@ -145,9 +164,10 @@ struct StateEmpty {
|
||||
};
|
||||
struct StateEmptyActive {
|
||||
std::unique_ptr<QLabel> label;
|
||||
PixmapSetEmptyActive *pixmaps = nullptr;
|
||||
bool empty = false;
|
||||
bool active = false;
|
||||
PixmapSetEmptyActive *pixmaps = nullptr;
|
||||
bool empty = false;
|
||||
bool active = false;
|
||||
bool write_active = false;
|
||||
|
||||
void setActive(bool b)
|
||||
{
|
||||
@@ -157,6 +177,14 @@ struct StateEmptyActive {
|
||||
active = b;
|
||||
refresh();
|
||||
}
|
||||
void setWriteActive(bool b)
|
||||
{
|
||||
if (!label || b == write_active)
|
||||
return;
|
||||
|
||||
write_active = b;
|
||||
refresh();
|
||||
}
|
||||
void setEmpty(bool b)
|
||||
{
|
||||
if (!label || b == empty)
|
||||
@@ -170,9 +198,15 @@ struct StateEmptyActive {
|
||||
if (!label)
|
||||
return;
|
||||
if (empty) {
|
||||
label->setPixmap(active ? pixmaps->empty_active : pixmaps->empty);
|
||||
if (active && write_active)
|
||||
label->setPixmap(pixmaps->empty_read_write_active);
|
||||
else
|
||||
label->setPixmap(write_active ? pixmaps->empty_write_active : (active ? pixmaps->empty_active : pixmaps->empty));
|
||||
} else {
|
||||
label->setPixmap(active ? pixmaps->active : pixmaps->normal);
|
||||
if (active && write_active)
|
||||
label->setPixmap(pixmaps->read_write_active);
|
||||
else
|
||||
label->setPixmap(write_active ? pixmaps->write_active : (active ? pixmaps->active : pixmaps->normal));
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -191,6 +225,9 @@ PixmapSetActive::load(const QIcon &icon)
|
||||
{
|
||||
normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None);
|
||||
active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, Active);
|
||||
|
||||
write_active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, WriteActive);
|
||||
read_write_active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, ReadWriteActive);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -203,10 +240,14 @@ PixmapSetDisabled::load(const QIcon &icon)
|
||||
void
|
||||
PixmapSetEmptyActive::load(const QIcon &icon)
|
||||
{
|
||||
normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None);
|
||||
active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, Active);
|
||||
empty = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, None);
|
||||
empty_active = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, Active);
|
||||
normal = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, None);
|
||||
active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, Active);
|
||||
write_active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, WriteActive);
|
||||
read_write_active = getIconWithIndicator(icon, pixmap_size, QIcon::Normal, ReadWriteActive);
|
||||
empty = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, None);
|
||||
empty_active = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, Active);
|
||||
empty_write_active = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, WriteActive);
|
||||
empty_read_write_active = getIconWithIndicator(icon, pixmap_size, QIcon::Disabled, ReadWriteActive);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,10 +258,13 @@ struct MachineStatus::States {
|
||||
{
|
||||
pixmaps.cartridge.load(QIcon(":/settings/qt/icons/cartridge.ico"));
|
||||
pixmaps.cassette.load(QIcon(":/settings/qt/icons/cassette.ico"));
|
||||
pixmaps.floppy_disabled.normal = QIcon(":/settings/qt/icons/floppy_disabled.ico").pixmap(pixmap_size);
|
||||
pixmaps.floppy_disabled.active = pixmaps.floppy_disabled.normal;
|
||||
pixmaps.floppy_disabled.empty = pixmaps.floppy_disabled.normal;
|
||||
pixmaps.floppy_disabled.empty_active = pixmaps.floppy_disabled.normal;
|
||||
pixmaps.floppy_disabled.normal = QIcon(":/settings/qt/icons/floppy_disabled.ico").pixmap(pixmap_size);
|
||||
pixmaps.floppy_disabled.active = pixmaps.floppy_disabled.normal;
|
||||
pixmaps.floppy_disabled.read_write_active = pixmaps.floppy_disabled.normal;
|
||||
pixmaps.floppy_disabled.empty = pixmaps.floppy_disabled.normal;
|
||||
pixmaps.floppy_disabled.empty_active = pixmaps.floppy_disabled.normal;
|
||||
pixmaps.floppy_disabled.empty_write_active = pixmaps.floppy_disabled.normal;
|
||||
pixmaps.floppy_disabled.empty_read_write_active = pixmaps.floppy_disabled.normal;
|
||||
pixmaps.floppy_525.load(QIcon(":/settings/qt/icons/floppy_525.ico"));
|
||||
pixmaps.floppy_35.load(QIcon(":/settings/qt/icons/floppy_35.ico"));
|
||||
pixmaps.cdrom.load(QIcon(":/settings/qt/icons/cdrom.ico"));
|
||||
@@ -435,49 +479,79 @@ MachineStatus::refreshIcons()
|
||||
if (!update_icons)
|
||||
return;
|
||||
|
||||
for (size_t i = 0; i < FDD_NUM; ++i)
|
||||
for (size_t i = 0; i < FDD_NUM; ++i) {
|
||||
d->fdd[i].setActive(machine_status.fdd[i].active);
|
||||
d->fdd[i].setWriteActive(machine_status.fdd[i].write_active);
|
||||
}
|
||||
for (size_t i = 0; i < CDROM_NUM; ++i) {
|
||||
d->cdrom[i].setActive(machine_status.cdrom[i].active);
|
||||
if (machine_status.cdrom[i].active)
|
||||
d->cdrom[i].setWriteActive(machine_status.cdrom[i].write_active);
|
||||
if (machine_status.cdrom[i].active) {
|
||||
ui_sb_update_icon(SB_CDROM | i, 0);
|
||||
}
|
||||
if (machine_status.cdrom[i].write_active) {
|
||||
ui_sb_update_icon_write(SB_CDROM | i, 0);
|
||||
}
|
||||
}
|
||||
for (size_t i = 0; i < ZIP_NUM; i++) {
|
||||
d->zip[i].setActive(machine_status.zip[i].active);
|
||||
d->zip[i].setWriteActive(machine_status.zip[i].write_active);
|
||||
if (machine_status.zip[i].active)
|
||||
ui_sb_update_icon(SB_ZIP | i, 0);
|
||||
if (machine_status.zip[i].write_active)
|
||||
ui_sb_update_icon_write(SB_ZIP | i, 0);
|
||||
}
|
||||
for (size_t i = 0; i < MO_NUM; i++) {
|
||||
d->mo[i].setActive(machine_status.mo[i].active);
|
||||
d->mo[i].setWriteActive(machine_status.mo[i].write_active);
|
||||
if (machine_status.mo[i].active)
|
||||
ui_sb_update_icon(SB_MO | i, 0);
|
||||
if (machine_status.mo[i].write_active)
|
||||
ui_sb_update_icon_write(SB_MO | i, 0);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < HDD_BUS_USB; i++) {
|
||||
d->hdds[i].setActive(machine_status.hdd[i].active);
|
||||
d->hdds[i].setWriteActive(machine_status.hdd[i].write_active);
|
||||
if (machine_status.hdd[i].active)
|
||||
ui_sb_update_icon(SB_HDD | i, 0);
|
||||
if (machine_status.hdd[i].write_active)
|
||||
ui_sb_update_icon_write(SB_HDD | i, 0);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < NET_CARD_MAX; i++)
|
||||
for (size_t i = 0; i < NET_CARD_MAX; i++) {
|
||||
d->net[i].setActive(machine_status.net[i].active);
|
||||
d->net[i].setWriteActive(machine_status.net[i].write_active);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MachineStatus::clearActivity()
|
||||
{
|
||||
for (auto &fdd : d->fdd)
|
||||
for (auto &fdd : d->fdd) {
|
||||
fdd.setActive(false);
|
||||
for (auto &cdrom : d->cdrom)
|
||||
fdd.setWriteActive(false);
|
||||
}
|
||||
for (auto &cdrom : d->cdrom) {
|
||||
cdrom.setActive(false);
|
||||
for (auto &zip : d->zip)
|
||||
cdrom.setWriteActive(false);
|
||||
}
|
||||
for (auto &zip : d->zip) {
|
||||
zip.setActive(false);
|
||||
for (auto &mo : d->mo)
|
||||
zip.setWriteActive(false);
|
||||
}
|
||||
for (auto &mo : d->mo) {
|
||||
mo.setActive(false);
|
||||
for (auto &hdd : d->hdds)
|
||||
mo.setWriteActive(false);
|
||||
}
|
||||
for (auto &hdd : d->hdds) {
|
||||
hdd.setActive(false);
|
||||
for (auto &net : d->net)
|
||||
hdd.setWriteActive(false);
|
||||
}
|
||||
for (auto &net : d->net) {
|
||||
net.setActive(false);
|
||||
net.setWriteActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@@ -562,6 +636,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
d->fdd[i].label = std::make_unique<ClickableLabel>();
|
||||
d->fdd[i].setEmpty(QString(floppyfns[i]).isEmpty());
|
||||
d->fdd[i].setActive(false);
|
||||
d->fdd[i].setWriteActive(false);
|
||||
d->fdd[i].refresh();
|
||||
connect((ClickableLabel *) d->fdd[i].label.get(), &ClickableLabel::clicked, [i](QPoint pos) {
|
||||
MediaMenu::ptr->floppyMenus[i]->popup(pos - QPoint(0, MediaMenu::ptr->floppyMenus[i]->sizeHint().height()));
|
||||
@@ -578,6 +653,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
d->cdrom[i].label = std::make_unique<ClickableLabel>();
|
||||
d->cdrom[i].setEmpty(QString(cdrom[i].image_path).isEmpty());
|
||||
d->cdrom[i].setActive(false);
|
||||
d->cdrom[i].setWriteActive(false);
|
||||
d->cdrom[i].refresh();
|
||||
connect((ClickableLabel *) d->cdrom[i].label.get(), &ClickableLabel::clicked, [i](QPoint pos) {
|
||||
MediaMenu::ptr->cdromMenus[i]->popup(pos - QPoint(0, MediaMenu::ptr->cdromMenus[i]->sizeHint().height()));
|
||||
@@ -594,6 +670,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
d->zip[i].label = std::make_unique<ClickableLabel>();
|
||||
d->zip[i].setEmpty(QString(zip_drives[i].image_path).isEmpty());
|
||||
d->zip[i].setActive(false);
|
||||
d->zip[i].setWriteActive(false);
|
||||
d->zip[i].refresh();
|
||||
connect((ClickableLabel *) d->zip[i].label.get(), &ClickableLabel::clicked, [i](QPoint pos) {
|
||||
MediaMenu::ptr->zipMenus[i]->popup(pos - QPoint(0, MediaMenu::ptr->zipMenus[i]->sizeHint().height()));
|
||||
@@ -610,6 +687,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
d->mo[i].label = std::make_unique<ClickableLabel>();
|
||||
d->mo[i].setEmpty(QString(mo_drives[i].image_path).isEmpty());
|
||||
d->mo[i].setActive(false);
|
||||
d->mo[i].setWriteActive(false);
|
||||
d->mo[i].refresh();
|
||||
connect((ClickableLabel *) d->mo[i].label.get(), &ClickableLabel::clicked, [i](QPoint pos) {
|
||||
MediaMenu::ptr->moMenus[i]->popup(pos - QPoint(0, MediaMenu::ptr->moMenus[i]->sizeHint().height()));
|
||||
@@ -626,6 +704,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
d->net[i].label = std::make_unique<ClickableLabel>();
|
||||
d->net[i].setEmpty(!network_is_connected(i));
|
||||
d->net[i].setActive(false);
|
||||
d->net[i].setWriteActive(false);
|
||||
d->net[i].refresh();
|
||||
d->net[i].label->setToolTip(MediaMenu::ptr->netMenus[i]->title());
|
||||
connect((ClickableLabel *) d->net[i].label.get(), &ClickableLabel::clicked, [i](QPoint pos) {
|
||||
@@ -638,6 +717,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
if ((has_mfm || (hdc_name.left(5) == QStringLiteral("st506"))) && (c_mfm > 0)) {
|
||||
d->hdds[HDD_BUS_MFM].label = std::make_unique<QLabel>();
|
||||
d->hdds[HDD_BUS_MFM].setActive(false);
|
||||
d->hdds[HDD_BUS_MFM].setWriteActive(false);
|
||||
d->hdds[HDD_BUS_MFM].refresh();
|
||||
d->hdds[HDD_BUS_MFM].label->setToolTip(tr("Hard disk (%1)").arg("MFM/RLL"));
|
||||
auto tooltip = d->hdds[HDD_BUS_MFM].label->toolTip();
|
||||
@@ -653,6 +733,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
if ((has_esdi || (hdc_name.left(4) == QStringLiteral("esdi"))) && (c_esdi > 0)) {
|
||||
d->hdds[HDD_BUS_ESDI].label = std::make_unique<QLabel>();
|
||||
d->hdds[HDD_BUS_ESDI].setActive(false);
|
||||
d->hdds[HDD_BUS_ESDI].setWriteActive(false);
|
||||
d->hdds[HDD_BUS_ESDI].refresh();
|
||||
d->hdds[HDD_BUS_ESDI].label->setToolTip(tr("Hard disk (%1)").arg("ESDI"));
|
||||
auto tooltip = d->hdds[HDD_BUS_ESDI].label->toolTip();
|
||||
@@ -668,6 +749,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
if ((has_xta || (hdc_name.left(3) == QStringLiteral("xta"))) && (c_xta > 0)) {
|
||||
d->hdds[HDD_BUS_XTA].label = std::make_unique<QLabel>();
|
||||
d->hdds[HDD_BUS_XTA].setActive(false);
|
||||
d->hdds[HDD_BUS_XTA].setWriteActive(false);
|
||||
d->hdds[HDD_BUS_XTA].refresh();
|
||||
d->hdds[HDD_BUS_XTA].label->setToolTip(tr("Hard disk (%1)").arg("XTA"));
|
||||
auto tooltip = d->hdds[HDD_BUS_XTA].label->toolTip();
|
||||
@@ -686,6 +768,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
if (c_ide > 0) {
|
||||
d->hdds[HDD_BUS_IDE].label = std::make_unique<QLabel>();
|
||||
d->hdds[HDD_BUS_IDE].setActive(false);
|
||||
d->hdds[HDD_BUS_IDE].setWriteActive(false);
|
||||
d->hdds[HDD_BUS_IDE].refresh();
|
||||
d->hdds[HDD_BUS_IDE].label->setToolTip(tr("Hard disk (%1)").arg("IDE"));
|
||||
auto tooltip = d->hdds[HDD_BUS_IDE].label->toolTip();
|
||||
@@ -701,6 +784,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
if (c_atapi > 0) {
|
||||
d->hdds[HDD_BUS_ATAPI].label = std::make_unique<QLabel>();
|
||||
d->hdds[HDD_BUS_ATAPI].setActive(false);
|
||||
d->hdds[HDD_BUS_ATAPI].setWriteActive(false);
|
||||
d->hdds[HDD_BUS_ATAPI].refresh();
|
||||
d->hdds[HDD_BUS_ATAPI].label->setToolTip(tr("Hard disk (%1)").arg("ATAPI"));
|
||||
auto tooltip = d->hdds[HDD_BUS_ATAPI].label->toolTip();
|
||||
@@ -720,6 +804,7 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
(c_scsi > 0)) {
|
||||
d->hdds[HDD_BUS_SCSI].label = std::make_unique<QLabel>();
|
||||
d->hdds[HDD_BUS_SCSI].setActive(false);
|
||||
d->hdds[HDD_BUS_SCSI].setWriteActive(false);
|
||||
d->hdds[HDD_BUS_SCSI].refresh();
|
||||
d->hdds[HDD_BUS_SCSI].label->setToolTip(tr("Hard disk (%1)").arg("SCSI"));
|
||||
auto tooltip = d->hdds[HDD_BUS_SCSI].label->toolTip();
|
||||
|
||||
@@ -314,4 +314,41 @@ ui_sb_update_icon(int tag, int active)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ui_sb_update_icon_write(int tag, int write)
|
||||
{
|
||||
const auto temp = static_cast<unsigned int>(tag);
|
||||
const int category = static_cast<int>(temp & 0xfffffff0);
|
||||
const int item = tag & 0xf;
|
||||
|
||||
switch (category) {
|
||||
default:
|
||||
case SB_CASSETTE:
|
||||
case SB_CARTRIDGE:
|
||||
break;
|
||||
case SB_FLOPPY:
|
||||
machine_status.fdd[item].write_active = write > 0 ? true : false;
|
||||
break;
|
||||
case SB_CDROM:
|
||||
machine_status.cdrom[item].write_active = write > 0 ? true : false;
|
||||
break;
|
||||
case SB_ZIP:
|
||||
machine_status.zip[item].write_active = write > 0 ? true : false;
|
||||
break;
|
||||
case SB_MO:
|
||||
machine_status.mo[item].write_active = write > 0 ? true : false;
|
||||
break;
|
||||
case SB_HDD:
|
||||
machine_status.hdd[item].write_active = write > 0 ? true : false;
|
||||
break;
|
||||
case SB_NETWORK:
|
||||
machine_status.net[item].write_active = write > 0 ? true : false;
|
||||
break;
|
||||
case SB_SOUND:
|
||||
case SB_TEXT:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
<file>qt/icons/zip.ico</file>
|
||||
<file>qt/icons/zip_disabled.ico</file>
|
||||
<file>qt/icons/active.ico</file>
|
||||
<file>qt/icons/write_active.ico</file>
|
||||
<file>qt/icons/disabled.ico</file>
|
||||
<file>qt/icons/86Box-gray.ico</file>
|
||||
<file>qt/icons/86Box-green.ico</file>
|
||||
|
||||
@@ -614,6 +614,7 @@ scsi_disk_cmd_error(scsi_disk_t *dev)
|
||||
dev->callback = 50.0 * SCSI_TIME;
|
||||
scsi_disk_set_callback(dev);
|
||||
ui_sb_update_icon(SB_HDD | dev->drv->bus_type, 0);
|
||||
ui_sb_update_icon_write(SB_HDD | dev->drv->bus_type, 0);
|
||||
scsi_disk_log(dev->log, "ERROR: %02X/%02X/%02X\n", scsi_disk_sense_key,
|
||||
scsi_disk_asc, scsi_disk_ascq);
|
||||
}
|
||||
@@ -1208,7 +1209,7 @@ scsi_disk_command(scsi_common_t *sc, const uint8_t *cdb)
|
||||
|
||||
scsi_disk_data_command_finish(dev, dev->packet_len, 512, dev->packet_len, 1);
|
||||
|
||||
ui_sb_update_icon(SB_HDD | dev->drv->bus_type, dev->packet_status != PHASE_COMPLETE);
|
||||
ui_sb_update_icon_write(SB_HDD | dev->drv->bus_type, dev->packet_status != PHASE_COMPLETE);
|
||||
} else {
|
||||
scsi_disk_set_phase(dev, SCSI_PHASE_STATUS);
|
||||
scsi_disk_log(dev->log, "All done - callback set\n");
|
||||
@@ -1243,7 +1244,7 @@ scsi_disk_command(scsi_common_t *sc, const uint8_t *cdb)
|
||||
|
||||
scsi_disk_data_command_finish(dev, 512, 512, alloc_length, 1);
|
||||
|
||||
ui_sb_update_icon(SB_HDD | dev->drv->bus_type,
|
||||
ui_sb_update_icon_write(SB_HDD | dev->drv->bus_type,
|
||||
dev->packet_status != PHASE_COMPLETE);
|
||||
} else {
|
||||
scsi_disk_set_phase(dev, SCSI_PHASE_STATUS);
|
||||
|
||||
@@ -146,7 +146,7 @@ if(FLUIDSYNTH)
|
||||
pkg_check_modules(FLUIDSYNTH REQUIRED IMPORTED_TARGET fluidsynth)
|
||||
target_link_libraries(86Box PkgConfig::FLUIDSYNTH)
|
||||
if(STATIC_BUILD)
|
||||
target_link_libraries(86Box -static ${FLUIDSYNTH_STATIC_LIBRARIES} -fopenmp)
|
||||
target_link_libraries(86Box -static ${FLUIDSYNTH_STATIC_LIBRARIES} -fopenmp -lgomp)
|
||||
if(WIN32)
|
||||
add_compile_definitions(FLUIDSYNTH_NOT_A_DLL)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user