diff --git a/bochs/gui/bitmaps/usb.h b/bochs/gui/bitmaps/usb.h index 5fb6538e2..eee8460b2 100644 --- a/bochs/gui/bitmaps/usb.h +++ b/bochs/gui/bitmaps/usb.h @@ -5,7 +5,7 @@ #define BX_USB_BMAP_X 32 #define BX_USB_BMAP_Y 32 -static const unsigned char bx_usb_bmap[(BX_USB_BMAP_X * BX_USB_BMAP_Y)/8] = { +static const unsigned char bx_usbdbg_bmap[(BX_USB_BMAP_X * BX_USB_BMAP_Y)/8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0x07, 0xF0, 0x01, 0x80, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x01, 0x80, 0x0F, 0xF0, 0xFF, 0xFF, 0x0F, 0xF0, 0xFF, 0xFF, 0x0F, @@ -19,7 +19,7 @@ static const unsigned char bx_usb_bmap[(BX_USB_BMAP_X * BX_USB_BMAP_Y)/8] = { 0xC0, 0xFF, 0xFF, 0x03, 0x80, 0xFF, 0xFF, 0x01 }; -static const unsigned char bx_usb_eject_bmap[(BX_USB_BMAP_X * BX_USB_BMAP_Y)/8] = { +static const unsigned char bx_usbdbg_dis_bmap[(BX_USB_BMAP_X * BX_USB_BMAP_Y)/8] = { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0xC4, 0xFF, 0xFF, 0x23, 0xE8, 0xFF, 0xFF, 0x17, 0xE0, 0x01, 0x80, 0x07, 0xD0, 0x00, 0x00, 0x0B, 0xB0, 0x01, 0x80, 0x0D, 0x70, 0xFF, 0xFF, 0x0E, 0xF0, 0xFE, 0x7F, 0x0F, @@ -33,7 +33,7 @@ static const unsigned char bx_usb_eject_bmap[(BX_USB_BMAP_X * BX_USB_BMAP_Y)/8] 0xC2, 0xFF, 0xFF, 0x43, 0x80, 0xFF, 0xFF, 0x01 }; -static const unsigned char bx_usb_trigger_bmap[(BX_USB_BMAP_X * BX_USB_BMAP_Y)/8] = { +static const unsigned char bx_usbdbg_trigger_bmap[(BX_USB_BMAP_X * BX_USB_BMAP_Y)/8] = { 0x08, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x40, 0xC2, 0xFF, 0xFF, 0x23, 0xE4, 0xFF, 0xFF, 0x47, 0xF8, 0x01, 0x80, 0x8F, 0xF4, 0x00, 0x00, 0x4F, 0xF2, 0x01, 0x80, 0x2F, 0xF4, 0xFF, 0xFF, 0x4F, 0xF8, 0xFF, 0xFF, 0x8F, diff --git a/bochs/gui/bitmaps/usb.xpm b/bochs/gui/bitmaps/usb.xpm index 247c6ffb6..d1efb1b9e 100644 --- a/bochs/gui/bitmaps/usb.xpm +++ b/bochs/gui/bitmaps/usb.xpm @@ -1,5 +1,5 @@ /* XPM */ -static const char *usb_xpm[] = { +static const char *usbdbg_xpm[] = { /* width height num_colors chars_per_pixel */ " 32 32 2 1", /* colors */ diff --git a/bochs/gui/gui.cc b/bochs/gui/gui.cc index 7267663b7..21526842d 100644 --- a/bochs/gui/gui.cc +++ b/bochs/gui/gui.cc @@ -237,11 +237,11 @@ void bx_gui_c::init(int argc, char **argv, unsigned max_xres, unsigned max_yres, BX_SAVE_RESTORE_BMAP_X, BX_SAVE_RESTORE_BMAP_Y); #if BX_USE_WIN32USBDEBUG - BX_GUI_THIS usb_bmap_id = create_bitmap(bx_usb_bmap, + BX_GUI_THIS usbdbg_bmap_id = create_bitmap(bx_usbdbg_bmap, BX_USB_BMAP_X, BX_USB_BMAP_Y); - BX_GUI_THIS usb_eject_bmap_id = create_bitmap(bx_usb_eject_bmap, + BX_GUI_THIS usbdbg_dis_bmap_id = create_bitmap(bx_usbdbg_dis_bmap, BX_USB_BMAP_X, BX_USB_BMAP_Y); - BX_GUI_THIS usb_trigger_bmap_id = create_bitmap(bx_usb_trigger_bmap, + BX_GUI_THIS usbdbg_trigger_bmap_id = create_bitmap(bx_usbdbg_trigger_bmap, BX_USB_BMAP_X, BX_USB_BMAP_Y); #endif @@ -276,19 +276,9 @@ void bx_gui_c::init(int argc, char **argv, unsigned max_xres, unsigned max_yres, #if BX_USE_WIN32USBDEBUG // USB button if (BX_GUI_THIS dialog_caps & BX_GUI_DLG_USB) { - if ((SIM->get_param_enum(BXPN_USB_DEBUG_TYPE)->get() > 0) && ( - SIM->get_param_bool(BXPN_UHCI_ENABLED)->get() || - SIM->get_param_bool(BXPN_OHCI_ENABLED)->get() || - SIM->get_param_bool(BXPN_EHCI_ENABLED)->get() || - SIM->get_param_bool(BXPN_XHCI_ENABLED)->get())) { - BX_GUI_THIS usb_hbar_id = headerbar_bitmap(BX_GUI_THIS usb_bmap_id, - BX_GRAVITY_LEFT, usb_handler); - BX_GUI_THIS set_tooltip(BX_GUI_THIS usb_hbar_id, "Trigger the USB Debugger"); - } else { - BX_GUI_THIS usb_hbar_id = headerbar_bitmap(BX_GUI_THIS usb_eject_bmap_id, - BX_GRAVITY_LEFT, usb_handler); - BX_GUI_THIS set_tooltip(BX_GUI_THIS usb_hbar_id, "USB support not enabled"); - } + BX_GUI_THIS usbdbg_hbar_id = headerbar_bitmap(BX_GUI_THIS usbdbg_dis_bmap_id, + BX_GRAVITY_LEFT, usb_handler); + BX_GUI_THIS set_tooltip(BX_GUI_THIS usbdbg_hbar_id, "USB debugger support not enabled"); } #endif @@ -724,6 +714,12 @@ void bx_gui_c::usb_handler(void) SIM->usb_debug_interface(USB_DEBUG_FRAME, 0, 0); } } + +void bx_gui_c::set_usbdbg_bitmap(bool trigger) +{ + set_tooltip(BX_GUI_THIS usbdbg_hbar_id, "Trigger the USB debugger"); + replace_bitmap(usbdbg_hbar_id, trigger ? usbdbg_trigger_bmap_id : usbdbg_bmap_id); +} #endif void bx_gui_c::toggle_mouse_enable(void) diff --git a/bochs/gui/gui.h b/bochs/gui/gui.h index 1c3b9d34d..07595d73f 100644 --- a/bochs/gui/gui.h +++ b/bochs/gui/gui.h @@ -245,6 +245,9 @@ public: void set_fullscreen_mode(bool active) {fullscreen_mode = active;} // marklog handler without button, called in gui command mode static void marklog_handler(void); +#if BX_USE_WIN32USBDEBUG + void set_usbdbg_bitmap(bool trigger); +#endif protected: // And these are defined and used privately in gui.cc @@ -296,10 +299,7 @@ protected: unsigned user_bmap_id, user_hbar_id; unsigned save_restore_bmap_id, save_restore_hbar_id; #if BX_USE_WIN32USBDEBUG - // TODO: this is a lousy hack. we need to keep these protected.... -public: - unsigned usb_bmap_id, usb_eject_bmap_id, usb_trigger_bmap_id, usb_hbar_id; -protected: + unsigned usbdbg_bmap_id, usbdbg_dis_bmap_id, usbdbg_trigger_bmap_id, usbdbg_hbar_id; #endif // the "classic" Bochs headerbar unsigned bx_headerbar_entries; diff --git a/bochs/gui/siminterface.cc b/bochs/gui/siminterface.cc index 0381c0e5f..f43ea9d23 100644 --- a/bochs/gui/siminterface.cc +++ b/bochs/gui/siminterface.cc @@ -954,6 +954,7 @@ void bx_real_sim_c::register_usb_debug_type(int type) BX_PANIC(("USB debugger does not yet support type %d", type)); } else { usb_debug_type = type; + bx_gui->set_usbdbg_bitmap(0); } } } diff --git a/bochs/gui/win32usb.cc b/bochs/gui/win32usb.cc index de36aff02..3085f356d 100644 --- a/bochs/gui/win32usb.cc +++ b/bochs/gui/win32usb.cc @@ -75,9 +75,9 @@ int win32_usb_interface(int type, int wParam, int lParam) // if "start_frame" is 2, the HC triggered the debug if (SIM->get_param_num(BXPN_USB_DEBUG_START_FRAME)->get() == BX_USB_DEBUG_SOF_SET) { SIM->get_param_num(BXPN_USB_DEBUG_START_FRAME)->set(BX_USB_DEBUG_SOF_TRIGGER); - bx_gui->replace_bitmap(bx_gui->usb_hbar_id, bx_gui->usb_trigger_bmap_id); + bx_gui->set_usbdbg_bitmap(1); } else { - bx_gui->replace_bitmap(bx_gui->usb_hbar_id, bx_gui->usb_bmap_id); + bx_gui->set_usbdbg_bitmap(0); if (win32_usb_start(GetForegroundWindow(), type, wParam, lParam) < 0) { bx_user_quit = 1; #if !BX_DEBUGGER diff --git a/bochs/gui/wxmain.cc b/bochs/gui/wxmain.cc index 03beaaef4..168449384 100644 --- a/bochs/gui/wxmain.cc +++ b/bochs/gui/wxmain.cc @@ -450,7 +450,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, BX_ADD_TOOL(ID_Edit_Cdrom1, cdrom1_eject_xpm, wxT("Change first CDROM media")); BX_ADD_TOOL(ID_Toolbar_Mouse_en, mouse_dis_xpm, wxT("Enable mouse capture")); #if BX_USE_WIN32USBDEBUG - BX_ADD_TOOL(ID_Toolbar_USB_Debug, usb_xpm, wxT("Trigger the USB Debugger")); + BX_ADD_TOOL(ID_Toolbar_USB_Debug, usbdbg_xpm, wxT("Trigger the USB Debugger")); #endif bxToolBar->AddSeparator(); BX_ADD_TOOL(ID_Toolbar_User, userbutton_xpm, wxT("Send keyboard shortcut"));