diff --git a/src/disk/zip.c b/src/disk/zip.c index 6b2ac5d20..2f22aa82d 100644 --- a/src/disk/zip.c +++ b/src/disk/zip.c @@ -9,7 +9,7 @@ * Implementation of the Iomega ZIP drive with SCSI(-like) * commands, for both ATAPI and SCSI usage. * - * Version: @(#)zip.c 1.0.27 2018/10/17 + * Version: @(#)zip.c 1.0.28 2018/10/19 * * Author: Miran Grca, * @@ -2739,7 +2739,7 @@ zip_identify(void *p, int ide_has_dma) } -static zip_t * +static void zip_drive_reset(int c) { scsi_device_t *sd; @@ -2786,8 +2786,6 @@ zip_drive_reset(int c) ide_atapi_attach(id); } } - - return zip[c]; } @@ -2808,7 +2806,7 @@ zip_hard_reset(void) if ((zip_drives[c].bus_type == ZIP_BUS_ATAPI) && (zip_drives[c].ide_channel > 7)) continue; - zip[c] = zip_drive_reset(c); + zip_drive_reset(c); zip[c]->id = c; zip[c]->drv = &zip_drives[c]; diff --git a/src/network/net_pcap.c b/src/network/net_pcap.c index 33ad1fe6d..47012c4cd 100644 --- a/src/network/net_pcap.c +++ b/src/network/net_pcap.c @@ -8,7 +8,7 @@ * * Handle WinPcap library processing. * - * Version: @(#)net_pcap.c 1.0.7 2018/10/19 + * Version: @(#)net_pcap.c 1.0.8 2018/10/19 * * Author: Fred N. van Kempen, * @@ -55,7 +55,7 @@ #include "../device.h" #include "../plat.h" #include "../plat_dynld.h" -// #include "../ui.h" +#include "../ui.h" #include "network.h" @@ -187,7 +187,7 @@ poll_thread(void *arg) /* Wait for the next packet to arrive. */ data = (uint8_t *)f_pcap_next((void *)pcap, &h); if (data != NULL) { - // ui_sb_update_icon(SB_NETWORK, 1); + ui_sb_update_icon(SB_NETWORK, 1); /* Received MAC. */ mac_cmp32[0] = *(uint32_t *)(data+6); @@ -208,7 +208,7 @@ poll_thread(void *arg) /* If we did not get anything, wait a while. */ if (data == NULL) { - // ui_sb_update_icon(SB_NETWORK, 0); + ui_sb_update_icon(SB_NETWORK, 0); thread_wait_event(evt, 10); } @@ -324,7 +324,7 @@ net_pcap_close(void) { void *pc; - // ui_sb_update_icon(SB_NETWORK, 0); + ui_sb_update_icon(SB_NETWORK, 0); if (pcap == NULL) return; @@ -381,7 +381,7 @@ net_pcap_reset(const netcard_t *card, uint8_t *mac) char filter_exp[255]; struct bpf_program fp; - // ui_sb_update_icon(SB_NETWORK, 0); + ui_sb_update_icon(SB_NETWORK, 0); /* Open a PCAP live channel. */ if ((pcap = f_pcap_open_live(network_host, /* interface name */ @@ -431,7 +431,7 @@ net_pcap_in(uint8_t *bufp, int len) { if (pcap == NULL) return; - // ui_sb_update_icon(SB_NETWORK, 1); + ui_sb_update_icon(SB_NETWORK, 1); network_busy(1); @@ -439,5 +439,5 @@ net_pcap_in(uint8_t *bufp, int len) network_busy(0); - // ui_sb_update_icon(SB_NETWORK, 0); + ui_sb_update_icon(SB_NETWORK, 0); } diff --git a/src/network/net_slirp.c b/src/network/net_slirp.c index 2b275c782..ac8da5079 100644 --- a/src/network/net_slirp.c +++ b/src/network/net_slirp.c @@ -8,7 +8,7 @@ * * Handle SLiRP library processing. * - * Version: @(#)net_slirp.c 1.0.6 2018/10/19 + * Version: @(#)net_slirp.c 1.0.7 2018/10/19 * * Author: Fred N. van Kempen, * @@ -56,7 +56,7 @@ #include "../86box.h" #include "../device.h" #include "../plat.h" -// #include "../ui.h" +#include "../ui.h" #include "network.h" @@ -150,7 +150,7 @@ poll_thread(void *arg) if (QueuePeek(slirpq) != 0) { /* Grab a packet from the queue. */ - // ui_sb_update_icon(SB_NETWORK, 1); + ui_sb_update_icon(SB_NETWORK, 1); qp = QueueDelete(slirpq); slirp_log("SLiRP: inQ:%d got a %dbyte packet @%08lx\n", @@ -176,7 +176,7 @@ poll_thread(void *arg) /* If we did not get anything, wait a while. */ if (!data_valid) { - // ui_sb_update_icon(SB_NETWORK, 0); + ui_sb_update_icon(SB_NETWORK, 0); thread_wait_event(evt, 10); } @@ -218,7 +218,7 @@ net_slirp_init(void) int net_slirp_reset(const netcard_t *card, uint8_t *mac) { - // ui_sb_update_icon(SB_NETWORK, 0); + ui_sb_update_icon(SB_NETWORK, 0); /* Save the callback info. */ poll_card = card; @@ -237,7 +237,7 @@ net_slirp_close(void) { queueADT sl; - // ui_sb_update_icon(SB_NETWORK, 0); + ui_sb_update_icon(SB_NETWORK, 0); if (slirpq == NULL) return; @@ -273,7 +273,7 @@ net_slirp_in(uint8_t *pkt, int pkt_len) { if (slirpq == NULL) return; - // ui_sb_update_icon(SB_NETWORK, 1); + ui_sb_update_icon(SB_NETWORK, 1); network_busy(1); @@ -281,7 +281,7 @@ net_slirp_in(uint8_t *pkt, int pkt_len) network_busy(0); - // ui_sb_update_icon(SB_NETWORK, 0); + ui_sb_update_icon(SB_NETWORK, 0); } diff --git a/src/pc.c b/src/pc.c index e02552845..4145fb389 100644 --- a/src/pc.c +++ b/src/pc.c @@ -8,7 +8,7 @@ * * Main emulator module where most things are controlled. * - * Version: @(#)pc.c 1.0.85 2018/10/17 + * Version: @(#)pc.c 1.0.86 2018/10/19 * * Authors: Sarah Walker, * Miran Grca, @@ -712,6 +712,8 @@ pc_send_cae(void) void pc_reset_hard_close(void) { + ui_sb_set_not_ready(); + suppress_overscan = 0; nvr_save(); diff --git a/src/ui.h b/src/ui.h index 1e9077cdf..e7a18fea7 100644 --- a/src/ui.h +++ b/src/ui.h @@ -8,7 +8,7 @@ * * Define the various UI functions. * - * Version: @(#)ui.h 1.0.14 2018/04/24 + * Version: @(#)ui.h 1.0.15 2018/10/19 * * Authors: Miran Grca, * Fred N. van Kempen, @@ -53,6 +53,7 @@ extern void ui_check_menu_item(int id, int checked); extern wchar_t *ui_window_title(wchar_t *s); extern void ui_status_update(void); extern int ui_sb_find_part(int tag); +extern void ui_sb_set_not_ready(void); extern void ui_sb_update_panes(void); extern void ui_sb_update_tip(int meaning); extern void ui_sb_check_menu_item(int tag, int id, int chk); diff --git a/src/win/win_stbar.c b/src/win/win_stbar.c index dd3fb49b0..c015aeca8 100644 --- a/src/win/win_stbar.c +++ b/src/win/win_stbar.c @@ -8,7 +8,7 @@ * * Implement the application's Status Bar. * - * Version: @(#)win_stbar.c 1.0.21 2018/10/17 + * Version: @(#)win_stbar.c 1.0.22 2018/10/19 * * Authors: Miran Grca, * Fred N. van Kempen, @@ -197,10 +197,10 @@ ui_sb_update_icon(int tag, int active) { uint8_t found = 0xff; - if (!update_icons) + if (!update_icons || !sb_ready) return; - if (((tag & 0xf0) >= SB_TEXT) || !sb_ready) + if (((tag & 0xf0) >= SB_TEXT)) return; found = sb_map[tag]; @@ -220,7 +220,7 @@ ui_sb_update_icon_state(int tag, int state) { uint8_t found = 0xff; - if (((tag & 0xf0) >= SB_HDD) || !sb_ready) + if (!sb_ready || ((tag & 0xf0) >= SB_HDD)) return; found = sb_map[tag]; @@ -374,7 +374,8 @@ ui_sb_update_tip(int meaning) { uint8_t part = 0xff; - if (!sb_ready || (sb_parts == 0) || (sb_part_meanings == NULL)) return; + if (!sb_ready || (sb_parts == 0) || (sb_part_meanings == NULL)) + return; part = sb_map[meaning]; @@ -467,6 +468,14 @@ StatusBarCreatePopupMenu(int part) } +/* API: mark the status bar as not ready. */ +void +ui_sb_set_not_ready(void) +{ + sb_ready = 0; +} + + /* API: update the status bar panes. */ void ui_sb_update_panes(void) @@ -477,7 +486,8 @@ ui_sb_update_panes(void) int c_ide, c_scsi; int do_net; - sb_ready = 0; + if (sb_ready) + sb_ready = 0; hdint = (machines[machine].flags & MACHINE_HDC) ? 1 : 0; c_mfm = hdd_count(HDD_BUS_MFM); @@ -753,10 +763,12 @@ ui_sb_mount_floppy_img(uint8_t id, int part, uint8_t wp, wchar_t *file_name) fdd_close(id); ui_writeprot[id] = wp; fdd_load(id, file_name); - ui_sb_update_icon_state(SB_FLOPPY | id, wcslen(floppyfns[id]) ? 0 : 1); - EnableMenuItem(sb_menu_handles[part], IDM_FLOPPY_EJECT | id, MF_BYCOMMAND | (wcslen(floppyfns[id]) ? MF_ENABLED : MF_GRAYED)); - EnableMenuItem(sb_menu_handles[part], IDM_FLOPPY_EXPORT_TO_86F | id, MF_BYCOMMAND | (wcslen(floppyfns[id]) ? MF_ENABLED : MF_GRAYED)); - ui_sb_update_tip(SB_FLOPPY | id); + if (sb_ready) { + ui_sb_update_icon_state(SB_FLOPPY | id, wcslen(floppyfns[id]) ? 0 : 1); + EnableMenuItem(sb_menu_handles[part], IDM_FLOPPY_EJECT | id, MF_BYCOMMAND | (wcslen(floppyfns[id]) ? MF_ENABLED : MF_GRAYED)); + EnableMenuItem(sb_menu_handles[part], IDM_FLOPPY_EXPORT_TO_86F | id, MF_BYCOMMAND | (wcslen(floppyfns[id]) ? MF_ENABLED : MF_GRAYED)); + ui_sb_update_tip(SB_FLOPPY | id); + } config_save(); } @@ -768,10 +780,12 @@ ui_sb_mount_zip_img(uint8_t id, int part, uint8_t wp, wchar_t *file_name) zip_drives[id].ui_writeprot = wp; zip_load(zip[id], file_name); zip_insert(zip[id]); - ui_sb_update_icon_state(SB_ZIP | id, wcslen(zip_drives[id].image_path) ? 0 : 1); - EnableMenuItem(sb_menu_handles[part], IDM_ZIP_EJECT | id, MF_BYCOMMAND | (wcslen(zip_drives[id].image_path) ? MF_ENABLED : MF_GRAYED)); - EnableMenuItem(sb_menu_handles[part], IDM_ZIP_RELOAD | id, MF_BYCOMMAND | (wcslen(zip_drives[id].image_path) ? MF_GRAYED : MF_ENABLED)); - ui_sb_update_tip(SB_ZIP | id); + if (sb_ready) { + ui_sb_update_icon_state(SB_ZIP | id, wcslen(zip_drives[id].image_path) ? 0 : 1); + EnableMenuItem(sb_menu_handles[part], IDM_ZIP_EJECT | id, MF_BYCOMMAND | (wcslen(zip_drives[id].image_path) ? MF_ENABLED : MF_GRAYED)); + EnableMenuItem(sb_menu_handles[part], IDM_ZIP_RELOAD | id, MF_BYCOMMAND | (wcslen(zip_drives[id].image_path) ? MF_GRAYED : MF_ENABLED)); + ui_sb_update_tip(SB_ZIP | id); + } config_save(); } @@ -1063,6 +1077,9 @@ ui_sb_check_menu_item(int tag, int id, int chk) { uint8_t part; + if (!sb_ready) + return; + part = sb_map[tag]; if ((part == 0xff) || (sb_menu_handles == NULL)) return; @@ -1077,6 +1094,9 @@ ui_sb_enable_menu_item(int tag, int id, int flg) { uint8_t part; + if (!sb_ready) + return; + part = sb_map[tag]; if ((part == 0xff) || (sb_menu_handles == NULL)) return;