Volker Ruppert
45507705bf
Implemented new text update API in the X gui and some related fixes.
...
- The X gui behaviour should be unchanged.
- RFB / vncsrv: cursor shape fixes.
- Changed format of the font parameters to fix "double width" characters.
- Restore guest charmap after leaving gui console.
2020-11-16 15:39:35 +00:00
Volker Ruppert
b94fff0501
Implemented new text update API in the vncsrv gui and console cursor fix.
...
- Now the vncsrv gui supports the VGA features split screen and h/v pel panning.
- Fixed new API cursor blinking in the gui console.
2020-11-15 16:16:14 +00:00
Volker Ruppert
6202244991
Implemented a new text update API in the common gui code and enabled it for RFB.
...
- Now using text_update_common() for the new text update API in addition to the
graphical text snapshot feature.
- Drawing to snapshot buffer moved to new method draw_char_common().
- A gui using the new text update API only needs to implement the new method
draw_char(). The method set_font() is optional and it can be used to update
font bitmaps / pixmaps.
- Modified the RFB gui to use the new API. Now the VGA features split screen
and h/v pel panning are supported by the RFB gui. The legacy text_update()
method is now empty but it must be present for compatiblity.
- TODO: Implement new API in some other guis to reduce code duplication.
2020-11-15 09:55:38 +00:00
Volker Ruppert
1209ec7d5a
It's enough to set the refresh flag once in flush().
2020-11-13 08:27:51 +00:00
Volker Ruppert
e6f0e7f328
Fixed another issue reported by valgrind and some tab2space changes.
2020-11-11 08:14:02 +00:00
Volker Ruppert
f8024d3819
Added win32 gui feature "autoscale" for the fullscreen mode, too (including
...
some fullscreen fixes and cleanups).
2020-10-25 16:23:42 +00:00
Volker Ruppert
bed49deb86
Added win32 display library option "autoscale" to scale a small simulation
...
window by 2, 4 or 8 depending in desktop window size (window mode only).
Modified special stretching case for the CO40 text mode.
2020-10-23 13:14:34 +00:00
Volker Ruppert
f62baaa7fd
Small fixes and cleanups in the text_update() code.
2020-10-20 16:20:33 +00:00
Volker Ruppert
2045ead0ce
Improved error handling of the user shortcut feature.
...
- Shortcut parser sets a flag in case of error.
- String parameter handler resets to old value if the new one is invalid.
- User button handler shows a message box if the parser signals an error.
2020-10-19 15:01:40 +00:00
Volker Ruppert
d708382bc0
Added gui message box support and use it to display errors that can occur in
...
toolbar button handlers.
2020-10-18 19:57:05 +00:00
Volker Ruppert
3c1851aa40
Added support for vertical pel panning to graphical text snapshot feature.
2020-10-18 08:08:53 +00:00
Volker Ruppert
c6bb5cf5a6
Fixes in wx for the snapshot button feature.
...
- Fixed deadlock after pressing the snapshot button.
- Setting up font parameters is required for the graphical text mode snapshot.
2020-10-17 21:23:20 +00:00
Volker Ruppert
41af6f9f66
Setting up font parameters is required for the graphical text mode snapshot.
2020-10-17 19:29:22 +00:00
Volker Ruppert
d1028178d3
Improved text mode snapshot in BMP format and text_update() API changes.
...
- Added support for split screen mode and horizontal pel panning.
- Text mode cursor now correctly visible independent from blink state.
- Workarounds for the existing text_update() API.
2020-10-17 15:44:52 +00:00
Volker Ruppert
163622a59a
Modified text cursor handling and fixed text cursor bug in split screen mode
...
in some guis.
2020-10-16 21:41:02 +00:00
Volker Ruppert
dffaa9794b
Added support for saving text mode snapshot in BMP format if file extension is
...
set accordingly.
TODO #1 : Text mode features split screen and h/v pel panning missing for now.
TODO #2 : Show error messages related to dialogs in message boxes.
2020-10-16 17:25:50 +00:00
Volker Ruppert
1ad0303ace
Disable mouse capture while showing an SDL2 dialog box and some code cleanup.
2020-09-27 16:44:00 +00:00
Volker Ruppert
748b6a1279
Fixed gcc 9.3 warnings in case C++17 support is enabled.
2020-09-02 08:35:44 +00:00
Volker Ruppert
600228148d
Fixed some gcc 9.3 warnings.
2020-09-01 20:13:56 +00:00
Volker Ruppert
32e4eecd8e
Fixed compilation with win32 gui enabled.
2020-08-24 15:31:14 +00:00
Volker Ruppert
9cbe03f7f2
Pressing the "m" button in gui command mode writes a marker to log file.
...
Removed now obsolete patch.
2020-08-21 19:12:37 +00:00
Volker Ruppert
eaf4beb474
Moving include statements of Bochs internal headers makes gui dependencies
...
created on Linux work correctly work on Windows. Fixed a warning on MSVC.
2020-08-21 15:18:44 +00:00
Volker Ruppert
5de465b5b1
Fixed some gcc 9.3 warnings.
2020-08-06 20:21:14 +00:00
Volker Ruppert
f545071b4d
Added support for modifier keys in gui command mode (shift, control, alt, caps lock).
...
- Enter command mode with F7 key only, but no modifier pressed.
- Pressing / releasing modifier key only doesn't leave command mode.
- Changed some headerbar button access keys using modifiers (e.g. shift + c
calls config button handler). See user doc for all supported keys.
2020-07-30 20:04:31 +00:00
Volker Ruppert
c28a07b5f1
Some gui command mode changes.
...
- win32: fixed mode after fullscreen toggle
- call floppy button handlers using 'a' and 'b' keys
2020-07-18 13:36:21 +00:00
Volker Ruppert
548f87b4e5
Added "command mode" support to the win32 gui, including fullscreen toggle
...
support.
2020-07-17 16:12:21 +00:00
Volker Ruppert
87c4b701fc
Added "command mode" support to the legacy SDL gui, including fullscreen
...
toggle support. Updated related documentation sections.
2020-07-16 15:22:45 +00:00
Volker Ruppert
413388dfa3
Added support for calling headerbar button handlers or perform other actions
...
with keypress combination. This feature is currently supported by the x and
sdl2 guis only and it can be activated with the "cmdmode" (command mode)
display library option. If enabled, pressing the F7 key enters this mode (shown
in the leftmost statusbar item) and the next keypress (except F7) is not sent
to the emmulated keyboard. If the key is supported, the associated action is
performed. Both x and sdl2 support calling the handlers of 8 headerbar buttons.
The sdl2 gui additionaly supports toggling fullscreen / windowed mode.
Supported keys:
c - Press the Copy button
e - Press the Config button
f - Toggle fullscreen mode (sdl2 only)
n - Press the Snapshot button
o - Press the Power button
p - Press the Paste button
r - Press the Reset button
s - Press the Suspend button
u - Press the User button
F7 - Send F7 keypress to emulation
TODO: add support for other guis.
2020-07-15 16:26:46 +00:00
Volker Ruppert
a28257429f
Fixed random segfaults and deadlocks caused by the wx status bar handling.
...
Moved status bar update to the gui thread and added a new event type called
BX_ASYNC_EVT_STATUSBAR to invoke it. Changed size and style of the status bar
items.
2020-07-10 08:13:17 +00:00
Volker Ruppert
04330cb693
Fix for clients not supporting 'rfbEncodingNewFBSize'.
2020-06-30 18:36:57 +00:00
Volker Ruppert
a4bbb76005
Partial rewrite of the client screen update code (should fix SF bug #1383 ).
...
- moved code that sends the framebuffer update to the flush() method.
- method clear_screen() now sets up an update region to work as expected.
- fixed and improved function rfbAddUpdateRegion().
- added new function rfbSetUpdateRegion() to simplify code.
2020-06-28 11:26:52 +00:00
Volker Ruppert
94f973c7b1
Added support for the pixel format RGB332.
2020-06-27 19:15:13 +00:00
Volker Ruppert
df2dd670d8
Extended Italian keymap (patch by Michele Giacomone).
2020-05-06 11:47:41 +00:00
Volker Ruppert
a7325c3a40
Fixed SVN ID tag.
...
M keymaps/x11-pc-sg.map
2020-05-05 18:37:45 +00:00
Volker Ruppert
cdde4dae46
Added Swiss-German keymap (patch by Michele Giacomone).
2020-05-05 18:34:06 +00:00
Volker Ruppert
ed223c6499
DDC: changed the "off" case to Bochs default name "disabled" and updated docs.
2020-03-22 12:31:34 +00:00
Volker Ruppert
e23a930864
Added "ddc" parameter to the "vga" option to make it possible either to disable
...
the DDC feature or to read the monitor EDID from file. By the default the
builtin "Bochs Screen" EDID is used.
2020-03-21 18:00:02 +00:00
Volker Ruppert
a1b44c72b8
In the plugins case, don't use vncsrv link options for bochs.exe.
...
Removed unused GUI_LINK_OPTS from gui Makefile.
2020-02-07 23:32:27 +00:00
Volker Ruppert
9131b0dfb1
Fixed some more gcc warnings (strncpy() usage in wx gui).
2020-02-07 15:10:55 +00:00
Volker Ruppert
d9297100b1
Fixed some more gcc warnings (SDL and win32 gui debugger).
2020-02-06 21:42:08 +00:00
Volker Ruppert
d1822224a9
Fixed some gcc 9.2 warnings on Windows.
2020-02-06 17:13:01 +00:00
Stanislav Shwartsman
c4d0001229
Apply SF [patch:#549] Fix snapshot param overflowing 32-bit integers
...
This patch fixed an integer overflow issue when restoring a snapshot whose parameters that are larger than ULONG_MAX.
We run into this issue when restoring a Windows snapshot whose pc_system.ticksTotal exceeds ULONG_MAX, which caused the subsequent confusion in bx_virt_timer_c::timer_handler which relies on pc_system.ticksTotal to function correctly.
2020-01-13 05:23:24 +00:00
Volker Ruppert
c15d3a27ad
Reduce maximum screen height by the height of header bar and status bar.
2020-01-12 19:00:56 +00:00
Volker Ruppert
955a466df0
BX_KEY_* defines replaced by enum list.
2019-12-26 16:14:31 +00:00
Volker Ruppert
a01a0262be
Two small Bochs debugger changes.
...
- Fixed a warning in the enhanced debugger core.
- Update generated file parser.c.
2019-12-14 12:55:08 +00:00
Stanislav Shwartsman
44b3ebeca2
remove BX_TRUE/BX_FALSE macros, use stdc++ true/false instead
2019-12-09 16:44:36 +00:00
Stanislav Shwartsman
96e2c50bef
applying SF patch #545 Speling fixes
2019-12-09 16:29:23 +00:00
Stanislav Shwartsman
d7d80aa61c
apply SF patch #544 Use format specifiers in printf-based calls
2019-12-09 15:18:47 +00:00
Volker Ruppert
4aad922419
Now using wxFONTWEIGHT_XXX constant instead of deprecated one.
...
Removed some extra spaces.
2019-12-01 18:57:08 +00:00
Volker Ruppert
a201be5031
Since source and destination area overlap, we have to use memmove() here.
2019-11-24 18:13:12 +00:00
Stanislav Shwartsman
9a1c3a9313
fixed buffer overflow warning
2019-11-23 15:15:50 +00:00
Volker Ruppert
f206839636
Some work on the Bochs version number strings.
...
- Get rid of VER_STRING since it's the same as VERSION
- Add new defines VER_MAJOR, VER_MINOR, VER_PATCH and VER_SVN and use them for
the version number on Windows.
- TODO: Add the capability to detect installed version to the Windows installer.
2019-11-14 10:34:39 +00:00
Volker Ruppert
9a27303afa
Some work for GTK version 3 compatiblity
...
- if wxGTK uses GTK 3.x, also use it for the gui debugger to avoid trouble
- the name of the include file for GDK keysyms now depends on GDK version, so
the temporary translation table can be removed
- small fix to compile the gui debugger with GTK 3.x (warnings still exist)
2019-11-11 19:40:09 +00:00
Volker Ruppert
2cf71c5c1f
Some more work on the GTK debuggger gui: updated code to compile with symbol
...
GSEAL_ENABLE set.
2019-11-10 19:36:04 +00:00
Volker Ruppert
fb61d54b4b
Some work on the GTK debuggger gui: replace deprecated functions.
...
TODO: Updates to support GTK 3.0 for compatibility with wx GTK.
2019-11-08 17:43:14 +00:00
Volker Ruppert
9ab4b36ec1
Fixed compilation after upgrading Linux host to openSUSE Leap 15.1.
...
- configure script now supports wxGTK 3.1 (using GTK 3.0).
- added workaround for GDK keysym name change.
- define deprecated WXWIN symbol wxADJUST_MINSIZE for compatibility.
- compilation fix for Linux in the slirp code.
2019-11-02 19:30:39 +00:00
Volker Ruppert
dbf7da542f
Check if Xrandr extension is present.
2019-04-21 20:08:32 +00:00
Volker Ruppert
db95a54238
Prepared config interface for a hard disk sector size option.
...
This code is based on the initial patch by Ben Lunt with some modifications:
using enum parameter, extra parser handler and cdrom handling not necessary,
TODO: hdimage and bximage code, harddrv and USB disk emulation, BIOS.
2018-03-13 20:35:56 +00:00
Volker Ruppert
73bc76072e
Added support for assigning a device (banshee or voodoo3) on Bochs PCI slot #5
...
to AGP if chipset i440BX is selected. AGP-specific features are not implemented
yet.
2018-02-25 20:59:30 +00:00
Volker Ruppert
e7093e74d8
Started implementing the i440BX PCI/AGP chipset.
...
- Added new PCI chipset choice for the i440BX AGPset. Some basic work is done,
but AGP support is not present yet.
- Added new class for the "virtual" PCI-to-PCI bridge that should manage the
secondary bus (AGP). Since this device must appear with device number #1 at
the primary bus, it was required to change the PCI device numbers for the
i440BX case. Moved the PIIX4 module to device number #7 . The presence of the
PCI base address regions now depends on the header type as expected.
- Since the Bochs BIOS cannot handle the modified PCI device layout, all tests
continued with an external BIOS designed for this chipset (GA-6BA_F1.bin).
This BIOS requires additional changes in some devices.
- ACPI: Return value 0 for some status registers and the GPI registers.
- CMOS: Since the PIIX4 supports a 256 byte CMOS RAM, prepared support for it
and enable it in case a 256 byte CMOS image is used.
- PCI: The device numbers for 4 slots starting at #8 . The 5th slot could be
used for AGP when available.
2018-02-24 18:04:36 +00:00
Volker Ruppert
dbbeffd32e
Now also using parse_param() method for BXT_PARAM_BYTESTRING input to reduce
...
code duplication.
2018-02-05 21:08:43 +00:00
Volker Ruppert
967f7d3381
Added method parse_param() to bx_param_bytestring_c and use it to reduce code
...
duplication (TODO: similar changes in win32paramdlg.cc).
2018-02-04 22:20:46 +00:00
Stanislav Shwartsman
7310d9edae
write byte arrays from param_data in save/restore in JSON style format (using [] instead of {}). fixes in save/restore.
2018-01-26 20:02:28 +00:00
Stanislav Shwartsman
3dd83448eb
fixes for commit 13439 which accidentally broke save/restore disalog on windows
2018-01-26 19:28:52 +00:00
Stanislav Shwartsman
dc628676ad
rename bx_shadow_data_c::get_format as it overrides/collides with bx_param::get_format
2018-01-19 21:21:09 +00:00
Stanislav Shwartsman
e4c8b37b18
minor updates to param tree code
2018-01-19 20:39:48 +00:00
Stanislav Shwartsman
e8d0e718f1
continue param tree changes
...
take RAW_BYTES string out of bx_param_string_c into new param type bx_param_bytestring_c (better name, anybody?)
this is intermediate step, later it would be better to merge bx_param_string into generic template bx_param<type>
but bx_param_bytestring_cis not matching that concept (or probably will continue to inherit from bx_param<string>)
2018-01-19 20:27:04 +00:00
Stanislav Shwartsman
5f2bf81995
add new dump_param method to param object which dumps param into a string
...
use new method do dump param tree during save/restore, GUI and text debugger and other places
significantly reduce code duplication over multiple modules
2018-01-10 20:05:59 +00:00
Stanislav Shwartsman
e05e6f58b0
add new method to param object - dump_param
...
the method dumps param to the FILE
use new method do dump param tree during save/restore
also make more use of parse_param methods which initialize param from a string
2018-01-10 19:10:19 +00:00
Volker Ruppert
54650e8cd1
Fixed possible compilation error (thanks to Ben Lunt).
2017-12-03 08:09:47 +00:00
Volker Ruppert
b61b9d255a
Moved all Bochs multi-threading definitions from bochs.h and osdep.h to a new
...
file called "bxthread.h".
2017-09-10 15:55:13 +00:00
Stanislav Shwartsman
f490b00beb
added support for conditional breakpoints in Bochs debugger
2017-08-22 18:47:18 +00:00
Volker Ruppert
bd39f8c103
Fixed GCC 6.3 warnings (indentation only).
2017-08-07 18:18:18 +00:00
Volker Ruppert
8006ec9fa3
Fixes and updates for wxWidgets 3.0
...
- wxMSW unicode: define UNICODE before including windows.h via bochs.h.
- Fixed compilation error (wxNode usage).
- Fixed deprecation warnings at toolbar creation.
2017-06-04 09:32:58 +00:00
Volker Ruppert
f38a0d8a97
Updated code for the invisible cursor on wxGTK (fixes compilation on wxMSW 3.0).
2017-06-03 14:32:56 +00:00
Volker Ruppert
c160fd4830
Bochs thread handling improvements:
...
- Modified win32 thread macros to use the handle instead of the id.
- Added new macro BX_THREAD_KILL to terminate threads.
Voodoo thread changes:
- Let the cmdfifo_thread sleep while the CMDFIFO is disabled.
- Kill the cmdfifo_thread in destructor and removed old thread control code.
2017-05-18 18:34:00 +00:00
Volker Ruppert
9912c99fd2
Continued work on Voodoo2 support (some demos now working).
...
- Added capability to save/restore float type values in paramtree / siminterface.
- Added Voodoo2 triangle generator data to save/restore list.
- Implemented bitBLT function "SGRAM fill".
- Minor other changes and cleanups.
- TODO: remaining bitBLT functions, thread handling improvements.
2017-05-16 20:37:01 +00:00
Volker Ruppert
6273f0cdc9
Added new win32 gui option "traphotkeys" to disable system hotkeys for the
...
host when the mouse is captured and in fullscreen mode. This is useful if the
guest is also a Windows version. These changes are based on the rejected SF
patch "disablesystemhotkeys". But instead of disabling the hotkeys completely,
the events are sent to the Bochs keyboard.
2017-05-05 21:44:30 +00:00
Stanislav Shwartsman
68b9d10b76
reverting latest commit, merged by mistake
2017-04-20 18:31:52 +00:00
Stanislav Shwartsman
e3fdf42225
use std::string in param_tree and gain more robust code with automatic garbage collection
2017-04-20 18:26:45 +00:00
Volker Ruppert
fbb94de3a3
SDL/SDL2 guis: Always use SDL specific byteorder macros here. This shouldn't
...
make a difference, but who knows?
2017-04-04 17:57:44 +00:00
Volker Ruppert
100b097c29
Added symbol BX_GUI_CONFIRM_QUIT to enable showing the dialog after pressing
...
the power button (disabled by default).
2017-04-02 16:16:53 +00:00
Volker Ruppert
994fdbae82
Some cleanups in in the user documentation and the code (obsolete stuff).
2017-03-23 19:09:37 +00:00
Stanislav Shwartsman
de7aa70c23
fixed more warning from msvc
2017-03-18 19:28:02 +00:00
Volker Ruppert
e9495af59a
Set up VGA palette entries for gui console to make sure the text is visible.
2017-03-03 12:43:20 +00:00
Volker Ruppert
ff43979e08
Fixed compilation when using a config with the win32 gui only.
2017-02-20 18:18:44 +00:00
Volker Ruppert
f33093549b
Modified plugin system to support the new PLUGTYPE_GUI.
...
- Changed the name of the entry point of the gui plugin code to
lib{gui_name}_gui_plugin_init(). It is used when loading plugin with the new
type. Added gui init code for the non-plugin version in plugin.cc.
- Some related changes for the "wx" case.
- The function load_and_init_display_lib() now only returns 1 on success.
- Minor other changes.
2017-02-18 16:28:04 +00:00
Volker Ruppert
4502478b50
Changed a lot of malloc() / free() calls to C++ style new / delete.
2017-02-18 11:13:56 +00:00
Volker Ruppert
a53b99f5e1
Implemented Bochs BIOS option "fastboot" for skipping the boot menu delay.
...
Prepared "biosdetect" option in the harddrv code.
TODO #1 : Add support for a comma-separated list of BIOS options.
TODO #2 : Implement support for at least "biosdetect=none" in the Bochs BIOS.
2017-02-16 21:43:52 +00:00
Volker Ruppert
458f747b48
Removed unused argc and argv parameters from plugin init functions.
2017-01-28 09:52:09 +00:00
Volker Ruppert
65dc62883c
Added symbol to fix the compilation of MSVC plugins.
2017-01-28 00:22:28 +00:00
Volker Ruppert
f59eaa2602
Simplified immediate shutdown code by using BX_FATAL.
2017-01-24 21:52:19 +00:00
Volker Ruppert
628d9db140
X11 gui code cleanup
...
- Changed the order of functions and methods and added some useful comments.
- TODO: Do the same with the code of other guis if necessary.
2017-01-15 12:57:06 +00:00
Volker Ruppert
1546c8803b
Bochs gui code cleanup
...
- Only keep the comments for the specific gui methods in nogui.cc and add
references to this file in all other gui sources.
- Changed the order of methods and added some useful comments in gui.cc / gui.h.
- Minor other cleanups
2017-01-15 11:44:43 +00:00
Volker Ruppert
ffd7c4c492
Using names different from "classic" Bochs headerbar fixes compilation and
...
win32 specific toolbar handling.
2017-01-14 15:11:14 +00:00
Volker Ruppert
787307790f
Moved event processing of the "classic" Bochs headerbar to the common gui code
...
and modified the gui code of rfb, sdl, sdl2, vncsrv and x to use it.
2017-01-14 13:10:20 +00:00
Volker Ruppert
5cd321dd02
Enabled gui console support for sdl2 using SDL_TEXTINPUT event.
2017-01-13 21:37:06 +00:00
Volker Ruppert
f18bb743be
Added new symbol BX_USE_GUI_CONSOLE and set it to 1 for all guis with support
...
for the VGA to be used for textconfig at runtime.
2017-01-13 15:57:36 +00:00
Volker Ruppert
d7fd586451
In the save/restore handler change the display mode to "config". This fixes the
...
keyboard usage in the legacy sdl gui after saving state. Now the rfb and vncsrv
guis can also use this feature (dialog capabilities set to default).
2017-01-12 18:11:38 +00:00
Volker Ruppert
28d43a91a6
On Windows only use the runtime config dialog box if the gui console is not
...
enabled. The rfb and vncsrv guis show the textconfig console instead.
2017-01-10 21:40:05 +00:00
Volker Ruppert
111158750d
Added gui console support to the legacy SDL gui.
...
TODO: Implement this feature in SDL2 (needs special keyboard handling).
2017-01-07 10:11:57 +00:00
Volker Ruppert
ff776d7c3a
Some work on the gui console support for the text runtime configuration.
...
- Added gui console support to the rfb and vncsrv guis.
- Started preparing the legacy SDL gui for console support.
- TODO: The sdl and sdl2 guis need a special keyboard handling for shifted keys.
2017-01-05 18:20:47 +00:00
Volker Ruppert
48ae057bc9
Some work on the SDL2 gui
...
- Added support for get/set clipboard text.
- Continued preparing SDL2 gui for console support (TODO: keyboard input).
2017-01-04 22:24:33 +00:00
Volker Ruppert
8e2803f98a
Bochs gui code cleanup
...
- Moved helper function reverse_bitorder to the common gui code.
- In console_refresh() call flush() after text_update().
- Started preparing rfb, sdl, sdl2 and vncsrv gui for using the console.
- Some other small cleanups.
2017-01-03 20:59:59 +00:00
Volker Ruppert
c0f6caa03b
Some work on the gui console support for the text runtime configuration.
...
- vncserv.cc: Fixed sdl font issue.
- Don't check for mouse toggle event if console is active.
- Added support for blinking cursor.
- Added stubs in the gui code to reduce BX_USE_TEXTCONIG usage in x.cc.
2017-01-02 19:11:23 +00:00
Volker Ruppert
5f5f40e3d6
Changing data type sdl fonts to "static const Bit8u" fixes conflict and
...
simplifies code. The gui code only needs the sdl font for the VGA console.
2017-01-01 19:37:26 +00:00
Volker Ruppert
eff3664fec
Implemented VGA console support in the common gui code and the X11 specific
...
code. Now the runtime configuration runs in the Bochs window instead of
console / xterm. The simulation screen is restored when the
simulation continues. This feature can be implemented for all guis
without gui dialog box support (e.g. sdl2/sdl2 on non-win32 platforms, rfb).
2017-01-01 17:45:06 +00:00
Volker Ruppert
90597c2e61
X11 message box dialog rewritten to use it for both the ask dialog and the
...
yes/no dialog. The ask dialog function now also handles the "warn" and "quit"
cases.
2016-12-29 23:36:15 +00:00
Volker Ruppert
b9b9082e86
Rewrite of the "ask" and "warn" dialog framework.
...
- Added new symbol BX_SYNC_EVT_LOG_DLG and method log_dlg() in siminterface to
handle the cases "ask", "warn" and "quit".
- Added support to change action from "warn" to "report in the "warn" dialog
(sdl2, win32 and wx).
- TODO: Add quit message box for the log action "fatal" and add BX_FATAL()
macro for all cases where continuing after BX_PANIC would be dangerous.
2016-12-29 09:47:07 +00:00
Volker Ruppert
85fcabbd8f
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/bochs.h ./bochs.h
...
--- /home/volker/bochs/bochs/bochs.h 2016-08-12 19:06:18.803209189 +0200
+++ ./bochs.h 2016-12-28 00:41:20.000627252 +0100
@@ -2,7 +2,7 @@
// $Id: bochs.h 12935 2016-08-12 17:06:14Z vruppert $
/////////////////////////////////////////////////////////////////////////
//
-// Copyright (C) 2001-2015 The Bochs Project
+// Copyright (C) 2001-2016 The Bochs Project
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -276,8 +276,9 @@
void error(const char *fmt, ...) BX_CPP_AttrPrintf(2, 3);
void panic(const char *fmt, ...) BX_CPP_AttrPrintf(2, 3);
void ldebug(const char *fmt, ...) BX_CPP_AttrPrintf(2, 3);
- void fatal (const char *prefix, const char *fmt, va_list ap, int exit_status);
- void ask (int level, const char *prefix, const char *fmt, va_list ap);
+ void fatal(const char *prefix, const char *fmt, va_list ap, int exit_status);
+ void warn(int level, const char *prefix, const char *fmt, va_list ap);
+ void ask(int level, const char *prefix, const char *fmt, va_list ap);
void put(const char *p);
void put(const char *n, const char *p);
void setio(class iofunctions *);
@@ -334,7 +335,8 @@
void set_log_action(int loglevel, int action);
const char *getlevel(int i) const;
const char *getaction(int i) const;
-
+ int isaction(const char *val) const;
+
protected:
int n_logfn;
#define MAX_LOGFNS 512
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/CHANGES ./CHANGES
--- /home/volker/bochs/bochs/CHANGES 2016-12-26 10:45:44.000000000 +0100
+++ ./CHANGES 2016-12-28 15:54:25.127088081 +0100
@@ -1,5 +1,8 @@
Changes after 2.6.8 release:
+- General
+ - Added new log action "warn", designed to show a message box on error events.
+
- Configure and compile
- Added Android host platform support.
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/config.cc ./config.cc
--- /home/volker/bochs/bochs/config.cc 2016-05-03 21:15:09.158016000 +0200
+++ ./config.cc 2016-12-27 19:53:10.461420368 +0100
@@ -2062,15 +2062,8 @@
actstr = strtok(NULL, "");
if (actstr != NULL) {
def_action = !strcmp(module, "action");
- if (!strcmp(actstr, "fatal"))
- action = ACT_FATAL;
- else if (!strcmp (actstr, "report"))
- action = ACT_REPORT;
- else if (!strcmp (actstr, "ignore"))
- action = ACT_IGNORE;
- else if (!strcmp (actstr, "ask"))
- action = ACT_ASK;
- else {
+ action = SIM->is_action_name(actstr);
+ if (action < ACT_IGNORE) {
PARSE_ERR(("%s: %s directive malformed.", context, params[0]));
free(param);
return -1;
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/gui/sdl2.cc ./gui/sdl2.cc
--- /home/volker/bochs/bochs/gui/sdl2.cc 2016-08-12 19:06:18.811209142 +0200
+++ ./gui/sdl2.cc 2016-12-28 12:33:39.534288819 +0100
@@ -2,7 +2,7 @@
// $Id: sdl2.cc 12935 2016-08-12 17:06:14Z vruppert $
/////////////////////////////////////////////////////////////////////////
//
-// Copyright (C) 2014-2015 The Bochs Project
+// Copyright (C) 2014-2016 The Bochs Project
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -1478,20 +1478,16 @@
SDL_MessageBoxData msgboxdata;
SDL_MessageBoxButtonData buttondata[4];
int level, retcode;
-#if BX_DEBUGGER || BX_GDBSTUB
- int defbtn = 3;
-#else
- int defbtn = 2;
-#endif
char message[512];
level = event->u.logmsg.level;
- sprintf(message, "%s %s", event->u.logmsg.prefix, event->u.logmsg.msg);
+ sprintf(message, "Device: %s\nMessage: %s", event->u.logmsg.prefix,
+ event->u.logmsg.msg);
msgboxdata.flags = SDL_MESSAGEBOX_ERROR;
msgboxdata.window = window;
msgboxdata.title = SIM->get_log_level_name(level);
msgboxdata.message = message;
- msgboxdata.numbuttons = defbtn + 1;
+ msgboxdata.numbuttons = 2;
msgboxdata.buttons = buttondata;
msgboxdata.colorScheme = NULL;
buttondata[0].flags = 0;
@@ -1500,14 +1496,18 @@
buttondata[1].flags = 0;
buttondata[1].buttonid = BX_LOG_ASK_CHOICE_CONTINUE_ALWAYS;
buttondata[1].text = "Alwayscont";
+ if (event->u.logmsg.flag == BX_LOG_ASK_ASKDLG) {
+ msgboxdata.numbuttons = 3;
+ buttondata[2].flags = SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT;
+ buttondata[2].buttonid = BX_LOG_ASK_CHOICE_DIE;
+ buttondata[2].text = "Quit";
#if BX_DEBUGGER || BX_GDBSTUB
- buttondata[2].flags = 0;
- buttondata[2].buttonid = BX_LOG_ASK_CHOICE_ENTER_DEBUG;
- buttondata[2].text = "Debugger";
-#endif
- buttondata[defbtn].flags = SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT;
- buttondata[defbtn].buttonid = BX_LOG_ASK_CHOICE_DIE;
- buttondata[defbtn].text = "Quit";
+ msgboxdata.numbuttons = 4;
+ buttondata[3].flags = 0;
+ buttondata[3].buttonid = BX_LOG_ASK_CHOICE_ENTER_DEBUG;
+ buttondata[3].text = "Debugger";
+#endif
+ }
if (SDL_ShowMessageBox(&msgboxdata, &retcode) < 0) {
return -1;
} else {
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/gui/siminterface.cc ./gui/siminterface.cc
--- /home/volker/bochs/bochs/gui/siminterface.cc 2016-12-05 19:56:56.729685000 +0100
+++ ./gui/siminterface.cc 2016-12-28 11:14:02.004075717 +0100
@@ -2,7 +2,7 @@
// $Id: siminterface.cc 12981 2016-12-05 18:56:56Z sshwarts $
/////////////////////////////////////////////////////////////////////////
//
-// Copyright (C) 2002-2015 The Bochs Project
+// Copyright (C) 2002-2016 The Bochs Project
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -100,6 +100,7 @@
virtual int get_log_action(int mod, int level);
virtual void set_log_action(int mod, int level, int action);
virtual const char *get_action_name(int action);
+ virtual int is_action_name(const char *val);
virtual int get_default_log_action(int level) {
return logfunctions::get_default_action(level);
}
@@ -123,6 +124,7 @@
virtual void set_notify_callback(bxevent_handler func, void *arg);
virtual void get_notify_callback(bxevent_handler *func, void **arg);
virtual BxEvent* sim_to_ci_event(BxEvent *event);
+ virtual int log_warn(const char *prefix, int level, const char *msg);
virtual int log_ask(const char *prefix, int level, const char *msg);
virtual void log_msg(const char *prefix, int level, const char *msg);
virtual void set_log_viewer(bx_bool val) { bx_log_viewer = val; }
@@ -420,6 +422,11 @@
return io->getaction(action);
}
+int bx_real_sim_c::is_action_name(const char *val)
+{
+ return io->isaction(val);
+}
+
const char *bx_real_sim_c::get_log_level_name(int level)
{
return io->getlevel(level);
@@ -575,6 +582,21 @@
}
}
+int bx_real_sim_c::log_warn(const char *prefix, int level, const char *msg)
+{
+ BxEvent be;
+ be.type = BX_SYNC_EVT_LOG_ASK;
+ be.u.logmsg.prefix = prefix;
+ be.u.logmsg.level = level;
+ be.u.logmsg.msg = msg;
+ be.u.logmsg.flag = BX_LOG_ASK_MSGBOX_WARN;
+ // default return value in case something goes wrong.
+ be.retcode = BX_LOG_NOTIFY_FAILED;
+ // calling notify
+ sim_to_ci_event(&be);
+ return be.retcode;
+}
+
// returns 0 for continue, 1 for alwayscontinue, 2 for die.
int bx_real_sim_c::log_ask(const char *prefix, int level, const char *msg)
{
@@ -583,6 +605,7 @@
be.u.logmsg.prefix = prefix;
be.u.logmsg.level = level;
be.u.logmsg.msg = msg;
+ be.u.logmsg.flag = BX_LOG_ASK_ASKDLG;
// default return value in case something goes wrong.
be.retcode = BX_LOG_NOTIFY_FAILED;
// calling notify
@@ -1157,16 +1180,10 @@
} else if (!strncmp(string, "PANIC=", 6)) {
type = LOGLEV_PANIC;
}
- if (!strcmp(string+j, "ignore")) {
- action = ACT_IGNORE;
- } else if (!strcmp(string+j, "report")) {
- action = ACT_REPORT;
- } else if (!strcmp(string+j, "ask")) {
- action = ACT_ASK;
- } else if (!strcmp(string+j, "fatal")) {
- action = ACT_FATAL;
+ action = is_action_name(string+j);
+ if (action >= ACT_IGNORE) {
+ set_log_action(dev, type, action);
}
- set_log_action(dev, type, action);
} else {
if (i == 1) {
BX_ERROR(("restore_logopts(): log module '%s' not found", devname));
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/gui/siminterface.h ./gui/siminterface.h
--- /home/volker/bochs/bochs/gui/siminterface.h 2016-03-31 19:24:37.451025427 +0200
+++ ./gui/siminterface.h 2016-12-28 11:11:21.036683362 +0100
@@ -168,6 +168,7 @@
typedef enum {
ACT_IGNORE = 0,
ACT_REPORT,
+ ACT_WARN,
ACT_ASK,
ACT_FATAL,
N_ACT
@@ -178,11 +179,11 @@
// normally all action choices are available for all event types. The exclude
// expression allows some choices to be eliminated if they don't make any
// sense. For example, it would be stupid to ignore a panic.
-#define BX_LOG_OPTS_EXCLUDE(type, choice) ( \
- /* can't die or ask, on debug or info events */ \
- (type <= LOGLEV_INFO && (choice == ACT_ASK || choice == ACT_FATAL)) \
- /* can't ignore panics */ \
- || (type == LOGLEV_PANIC && choice == ACT_IGNORE) \
+#define BX_LOG_OPTS_EXCLUDE(type, choice) ( \
+ /* can't die, ask or warn, on debug or info events */ \
+ (type <= LOGLEV_INFO && (choice >= ACT_WARN)) \
+ /* can't ignore panics */ \
+ || (type == LOGLEV_PANIC && choice == ACT_IGNORE) \
)
// floppy / cdrom media status
@@ -392,6 +393,7 @@
// synchronizing threads, etc. for each.
typedef struct {
Bit8u level;
+ Bit8u flag;
const char *prefix;
const char *msg;
} BxLogMsgEvent;
@@ -419,6 +421,12 @@
BX_LOG_NOTIFY_FAILED
};
+enum {
+ BX_LOG_ASK_ASKDLG,
+ BX_LOG_ASK_MSGBOX_WARN,
+ BX_LOG_ASK_MSGBOX_QUIT
+};
+
// Event type: BX_SYNC_EVT_GET_DBG_COMMAND
//
// This is a synchronous event sent from the simulator to the debugger
@@ -675,6 +683,7 @@
virtual int get_default_log_action(int level) {return -1;}
virtual void set_default_log_action(int level, int action) {}
virtual const char *get_action_name(int action) {return NULL;}
+ virtual int is_action_name(const char *val) {return -1;}
virtual const char *get_log_level_name(int level) {return NULL;}
virtual int get_max_log_level() {return -1;}
@@ -715,6 +724,9 @@
// send an event from the simulator to the CI.
virtual BxEvent* sim_to_ci_event(BxEvent *event) {return NULL;}
+ // called from simulator when it hits errors, to warn the user
+ // before continuing simulation
+ virtual int log_warn(const char *prefix, int level, const char *msg) {return -1;}
// called from simulator when it hits serious errors, to ask if the user
// wants to continue or not
virtual int log_ask(const char *prefix, int level, const char *msg) {return -1;}
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/gui/textconfig.cc ./gui/textconfig.cc
--- /home/volker/bochs/bochs/gui/textconfig.cc 2016-12-05 20:15:59.112637000 +0100
+++ ./gui/textconfig.cc 2016-12-28 12:44:43.079411258 +0100
@@ -2,7 +2,7 @@
// $Id: textconfig.cc 12983 2016-12-05 19:15:59Z sshwarts $
/////////////////////////////////////////////////////////////////////////
//
-// Copyright (C) 2002-2013 The Bochs Project
+// Copyright (C) 2002-2016 The Bochs Project
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -552,8 +552,8 @@
}
static const char *log_options_prompt1 = "Enter the ID of the device to edit, or -1 to return: [-1] ";
-static const char *log_level_choices[] = { "ignore", "report", "ask", "fatal", "no change" };
-static int log_level_n_choices_normal = 4;
+static const char *log_level_choices[N_ACT+1] = { "ignore", "report", "warn", "ask", "fatal", "no change" };
+static int log_level_n_choices_normal = N_ACT;
void bx_log_options(int individual)
{
@@ -589,7 +589,7 @@
bx_print_log_action_table();
for (int level=0; level<SIM->get_max_log_level(); level++) {
char prompt[1024];
- int action, default_action = 4; // default to no change
+ int action, default_action = N_ACT; // default to no change
sprintf(prompt, "Enter action for %s event on all devices: [no change] ", SIM->get_log_level_name(level));
// do show the no change choice (choices=4)
if (ask_menu(prompt, "", log_level_n_choices_normal+1, log_level_choices, default_action, &action)<0)
@@ -718,47 +718,50 @@
event->retcode = event->u.param.param->text_ask(stdin, stderr);
return event;
case BX_SYNC_EVT_LOG_ASK:
- {
- int level = event->u.logmsg.level;
- fprintf(stderr, "========================================================================\n");
- fprintf(stderr, "Event type: %s\n", SIM->get_log_level_name (level));
- fprintf(stderr, "Device: %s\n", event->u.logmsg.prefix);
- fprintf(stderr, "Message: %s\n\n", event->u.logmsg.msg);
- fprintf(stderr, "A %s has occurred. Do you want to:\n", SIM->get_log_level_name (level));
- fprintf(stderr, " cont - continue execution\n");
- fprintf(stderr, " alwayscont - continue execution, and don't ask again.\n");
- fprintf(stderr, " This affects only %s events from device %s\n", SIM->get_log_level_name (level), event->u.logmsg.prefix);
- fprintf(stderr, " die - stop execution now\n");
- fprintf(stderr, " abort - dump core %s\n",
- BX_HAVE_ABORT ? "" : "(Disabled)");
+ if (event->u.logmsg.flag == BX_LOG_ASK_ASKDLG) {
+ int level = event->u.logmsg.level;
+ fprintf(stderr, "========================================================================\n");
+ fprintf(stderr, "Event type: %s\n", SIM->get_log_level_name (level));
+ fprintf(stderr, "Device: %s\n", event->u.logmsg.prefix);
+ fprintf(stderr, "Message: %s\n\n", event->u.logmsg.msg);
+ fprintf(stderr, "A %s has occurred. Do you want to:\n", SIM->get_log_level_name (level));
+ fprintf(stderr, " cont - continue execution\n");
+ fprintf(stderr, " alwayscont - continue execution, and don't ask again.\n");
+ fprintf(stderr, " This affects only %s events from device %s\n", SIM->get_log_level_name (level), event->u.logmsg.prefix);
+ fprintf(stderr, " die - stop execution now\n");
+ fprintf(stderr, " abort - dump core %s\n",
+ BX_HAVE_ABORT ? "" : "(Disabled)");
#if BX_DEBUGGER
- fprintf(stderr, " debug - continue and return to bochs debugger\n");
+ fprintf(stderr, " debug - continue and return to bochs debugger\n");
#endif
#if BX_GDBSTUB
- fprintf(stderr, " debug - hand control to gdb\n");
+ fprintf(stderr, " debug - hand control to gdb\n");
#endif
- int choice;
+ int choice;
ask:
- if (ask_menu("Choose one of the actions above: [%s] ", "",
- log_action_n_choices, log_action_ask_choices, 2, &choice) < 0)
- event->retcode = -1;
- // return 0 for continue, 1 for alwayscontinue, 2 for die, 3 for debug.
- if (!BX_HAVE_ABORT && choice==BX_LOG_ASK_CHOICE_DUMP_CORE) goto ask;
- fflush(stdout);
- fflush(stderr);
- event->retcode = choice;
- }
- return event;
- case BX_ASYNC_EVT_REFRESH:
- case BX_ASYNC_EVT_DBG_MSG:
- case BX_ASYNC_EVT_LOG_MSG:
- // The text mode interface does not use these events, so just ignore
- // them.
- return event;
- default:
- fprintf(stderr, "textconfig: notify callback called with event type %04x\n", event->type);
- return event;
+ if (ask_menu("Choose one of the actions above: [%s] ", "",
+ log_action_n_choices, log_action_ask_choices, 2, &choice) < 0)
+ event->retcode = -1;
+ // return 0 for continue, 1 for alwayscontinue, 2 for die, 3 for debug.
+ if (!BX_HAVE_ABORT && choice==BX_LOG_ASK_CHOICE_DUMP_CORE) goto ask;
+ fflush(stdout);
+ fflush(stderr);
+ event->retcode = choice;
+ } else {
+ // warning prompt not implemented
+ event->retcode = 0;
+ }
+ return event;
+ case BX_ASYNC_EVT_REFRESH:
+ case BX_ASYNC_EVT_DBG_MSG:
+ case BX_ASYNC_EVT_LOG_MSG:
+ // The text mode interface does not use these events, so just ignore
+ // them.
+ return event;
+ default:
+ fprintf(stderr, "textconfig: notify callback called with event type %04x\n", event->type);
+ return event;
}
assert(0); // switch statement should return
}
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/gui/win32dialog.cc ./gui/win32dialog.cc
--- /home/volker/bochs/bochs/gui/win32dialog.cc 2014-06-20 11:32:02.034026376 +0200
+++ ./gui/win32dialog.cc 2016-12-28 12:50:14.148888740 +0100
@@ -2,7 +2,7 @@
// $Id: win32dialog.cc 12381 2014-06-20 09:31:56Z vruppert $
/////////////////////////////////////////////////////////////////////////
//
-// Copyright (C) 2003-2014 The Bochs Project
+// Copyright (C) 2003-2016 The Bochs Project
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -27,7 +27,7 @@
#include "win32res.h"
#include "win32paramdlg.h"
-const char log_choices[5][16] = {"ignore", "log", "ask user", "end simulation", "no change"};
+const char log_choices[N_ACT+1][16] = {"ignore", "log", "warn user", "ask user", "end simulation", "no change"};
HWND GetBochsWindow()
{
@@ -97,12 +97,16 @@
SetWindowText(GetDlgItem(hDlg, IDASKMSG), event->u.logmsg.msg);
SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_ADDSTRING, 0, (LPARAM)"Continue");
SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_ADDSTRING, 0, (LPARAM)"Continue and don't ask again");
- SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_ADDSTRING, 0, (LPARAM)"Kill simulation");
- SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_ADDSTRING, 0, (LPARAM)"Abort (dump core)");
+ if (event->u.logmsg.flag == BX_LOG_ASK_ASKDLG) {
+ SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_ADDSTRING, 0, (LPARAM)"Kill simulation");
+ SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_ADDSTRING, 0, (LPARAM)"Abort (dump core)");
#if BX_DEBUGGER
- SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_ADDSTRING, 0, (LPARAM)"Continue and return to debugger");
+ SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_ADDSTRING, 0, (LPARAM)"Continue and return to debugger");
#endif
- SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_SETCURSEL, 2, 0);
+ SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_SETCURSEL, 2, 0);
+ } else {
+ SendMessage(GetDlgItem(hDlg, IDASKLIST), LB_SETCURSEL, 0, 0);
+ }
SetFocus(GetDlgItem(hDlg, IDASKLIST));
return FALSE;
case WM_CLOSE:
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/gui/wxdialog.cc ./gui/wxdialog.cc
--- /home/volker/bochs/bochs/gui/wxdialog.cc 2015-01-07 17:17:40.447882000 +0100
+++ ./gui/wxdialog.cc 2016-12-27 20:30:44.997609007 +0100
@@ -2,7 +2,7 @@
// $Id: wxdialog.cc 12594 2015-01-07 16:17:40Z sshwarts $
/////////////////////////////////////////////////////////////////
//
-// Copyright (C) 2002-2014 The Bochs Project
+// Copyright (C) 2002-2016 The Bochs Project
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -208,7 +208,6 @@
: wxDialog(parent, id, wxT(""), wxDefaultPosition, wxDefaultSize,
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
{
- //static int integers[LOG_OPTS_N_CHOICES_NORMAL] = {0, 1, 2, 3};
static wxString names[] = ADVLOG_OPTS_TYPE_NAMES;
SetTitle(ADVLOG_OPTS_TITLE);
vertSizer = new wxBoxSizer(wxVERTICAL);
@@ -1563,7 +1562,7 @@
bool includeNoChange)
{
static wxString choices[] = LOG_OPTS_CHOICES;
- static int integers[LOG_OPTS_N_CHOICES] = {0, 1, 2, 3, 4};
+ static int integers[LOG_OPTS_N_CHOICES] = {0, 1, 2, 3, 4, 5};
wxChoice *control = new wxChoice(parent, id, wxDefaultPosition, wxDefaultSize);
int lastChoice = 0; // remember index of last choice
int nchoice = includeNoChange? LOG_OPTS_N_CHOICES : LOG_OPTS_N_CHOICES_NORMAL;
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/gui/wxdialog.h ./gui/wxdialog.h
--- /home/volker/bochs/bochs/gui/wxdialog.h 2014-12-23 20:30:12.896090221 +0100
+++ ./gui/wxdialog.h 2016-12-27 20:34:28.518389938 +0100
@@ -2,7 +2,7 @@
// $Id: wxdialog.h 12576 2014-12-23 19:30:03Z vruppert $
////////////////////////////////////////////////////////////////////
//
-// Copyright (C) 2002-2014 The Bochs Project
+// Copyright (C) 2002-2016 The Bochs Project
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -354,10 +354,10 @@
#define LOG_OPTS_PROMPT wxT("How should Bochs respond to each type of event?")
#define LOG_OPTS_TYPE_NAMES { wxT("Debug events"), wxT("Info events"), wxT("Error events"), wxT("Panic events") }
#define LOG_OPTS_N_TYPES 4
-#define LOG_OPTS_CHOICES { wxT("ignore"), wxT("log"), wxT("ask user"), wxT("end simulation"), wxT("no change") }
-#define LOG_OPTS_N_CHOICES_NORMAL 4
-#define LOG_OPTS_N_CHOICES 5 // number of choices, including "no change"
-#define LOG_OPTS_NO_CHANGE 4 // index of "no change"
+#define LOG_OPTS_CHOICES { wxT("ignore"), wxT("log"), wxT("warn user"), wxT("ask user"), wxT("end simulation"), wxT("no change") }
+#define LOG_OPTS_N_CHOICES_NORMAL 5
+#define LOG_OPTS_N_CHOICES 6 // number of choices, including "no change"
+#define LOG_OPTS_NO_CHANGE 5 // index of "no change"
#define LOG_OPTS_ADV wxT("For additional control over how each device responds to events, use the menu option \"Log ... By Device\".")
wxFlexGridSizer *gridSizer;
wxChoice *action[LOG_OPTS_N_TYPES];
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/gui/wxmain.cc ./gui/wxmain.cc
--- /home/volker/bochs/bochs/gui/wxmain.cc 2016-12-26 17:12:57.470174541 +0100
+++ ./gui/wxmain.cc 2016-12-28 12:15:26.035961463 +0100
@@ -2,7 +2,7 @@
// $Id: wxmain.cc 13006 2016-12-26 16:12:54Z vruppert $
/////////////////////////////////////////////////////////////////
//
-// Copyright (C) 2002-2014 The Bochs Project
+// Copyright (C) 2002-2016 The Bochs Project
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -1158,6 +1158,10 @@
#if !BX_DEBUGGER && !BX_GDBSTUB
dlg.EnableButton(dlg.DEBUG, FALSE);
#endif
+ if (be->u.logmsg.flag != BX_LOG_ASK_ASKDLG) {
+ dlg.EnableButton(dlg.DIE, FALSE);
+ dlg.EnableButton(dlg.DUMP, FALSE);
+ }
dlg.SetContext(wxString(be->u.logmsg.prefix, wxConvUTF8));
dlg.SetMessage(wxString(be->u.logmsg.msg, wxConvUTF8));
int n = dlg.ShowModal();
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/gui/x.cc ./gui/x.cc
--- /home/volker/bochs/bochs/gui/x.cc 2016-12-27 17:26:59.622665119 +0100
+++ ./gui/x.cc 2016-12-28 12:03:10.963351647 +0100
@@ -2687,11 +2687,7 @@
} else {
size_x = 30 + maxlen * 6;
}
- if (lines < 3) {
- size_y = 90;
- } else {
- size_y = 60 + lines * 15;
- }
+ size_y = 70 + lines * 15;
x11_dialog_c *xdlg = new x11_dialog_c(name, size_x, size_y,
(mode == XDLG_SIMPLE) ? 1 : 2);
ypos = 34;
@@ -2729,11 +2725,21 @@
bx_param_string_c *sparam;
bx_param_enum_c *eparam;
bx_list_c *list;
+ char message[256];
switch (event->type)
{
case BX_SYNC_EVT_LOG_ASK:
- event->retcode = x11_ask_dialog(event);
+ if (event->u.logmsg.flag == BX_LOG_ASK_ASKDLG) {
+ event->retcode = x11_ask_dialog(event);
+ } else if (event->u.logmsg.flag == BX_LOG_ASK_MSGBOX_WARN) {
+ const char *title = SIM->get_log_level_name(event->u.logmsg.level);
+ sprintf(message, "Device: %s\n\nMessage: %s", event->u.logmsg.prefix,
+ event->u.logmsg.msg);
+ bx_param_bool_c bparam(NULL, "warn", title, message, 1);
+ x11_message_box(&bparam, XDLG_SIMPLE);
+ event->retcode = 0;
+ }
return event;
case BX_SYNC_EVT_ASK_PARAM:
param = event->u.param.param;
diff -urNX /home/volker/exclude-bochs /home/volker/bochs/bochs/logio.cc ./logio.cc
--- /home/volker/bochs/bochs/logio.cc 2015-05-10 08:55:18.678940963 +0200
+++ ./logio.cc 2016-12-28 00:40:40.395736643 +0100
@@ -2,7 +2,7 @@
// $Id: logio.cc 12759 2015-05-10 06:55:16Z vruppert $
/////////////////////////////////////////////////////////////////////////
//
-// Copyright (C) 2001-2014 The Bochs Project
+// Copyright (C) 2001-2016 The Bochs Project
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
@@ -50,11 +50,25 @@
else return "?";
}
+static const char *act_name[N_ACT] = { "ignore", "report", "warn", "ask", "fatal" };
+
const char* iofunctions::getaction(int i) const
{
- static const char *name[] = { "ignore", "report", "ask", "fatal" };
assert (i>=ACT_IGNORE && i<N_ACT);
- return name[i];
+ return act_name[i];
+}
+
+int iofunctions::isaction(const char *val) const
+{
+ int action = -1;
+
+ for (int i = 0; i < N_ACT; i++) {
+ if (!strcmp(val, act_name[i])) {
+ action = ACT_IGNORE + i;
+ break;
+ }
+ }
+ return action;
}
void iofunctions::flush(void)
@@ -414,6 +428,11 @@
logio->out(LOGLEV_ERROR, prefix, fmt, ap);
va_end(ap);
+ if (onoff[LOGLEV_ERROR] == ACT_WARN) {
+ va_start(ap, fmt);
+ warn(LOGLEV_ERROR, prefix, fmt, ap);
+ va_end(ap);
+ }
if (onoff[LOGLEV_ERROR] == ACT_ASK) {
va_start(ap, fmt);
ask(LOGLEV_ERROR, prefix, fmt, ap);
@@ -438,6 +457,11 @@
logio->out(LOGLEV_PANIC, prefix, fmt, ap);
va_end(ap);
+ if (onoff[LOGLEV_PANIC] == ACT_WARN) {
+ va_start(ap, fmt);
+ warn(LOGLEV_PANIC, prefix, fmt, ap);
+ va_end(ap);
+ }
if (onoff[LOGLEV_PANIC] == ACT_ASK) {
va_start(ap, fmt);
ask(LOGLEV_PANIC, prefix, fmt, ap);
@@ -465,6 +489,36 @@
// the actions ask() and fatal() are not supported here
}
+void logfunctions::warn(int level, const char *prefix, const char *fmt, va_list ap)
+{
+ // Guard against reentry on warn() function. The danger is that some
+ // function that's called within warn() could trigger another
+ // BX_ERROR that could call warn() again, leading to infinite
+ // recursion and infinite asks.
+ static char in_warn_already = 0;
+ char buf1[1024];
+ if (in_warn_already) {
+ fprintf(stderr, "logfunctions::warn() should not reenter!!\n");
+ return;
+ }
+ in_warn_already = 1;
+ vsnprintf(buf1, sizeof(buf1), fmt, ap);
+ // FIXME: facility set to 0 because it's unknown.
+
+ // update vga screen. This is useful because sometimes useful messages
+ // are printed on the screen just before a panic. It's also potentially
+ // dangerous if this function calls ask again... That's why I added
+ // the reentry check above.
+ SIM->refresh_vga();
+
+ // ensure the text screen is showing
+ SIM->set_display_mode(DISP_MODE_CONFIG);
+ SIM->log_warn(prefix, level, buf1);
+ // return to simulation mode
+ SIM->set_display_mode(DISP_MODE_SIM);
+ in_warn_already = 0;
+}
+
void logfunctions::ask(int level, const char *prefix, const char *fmt, va_list ap)
{
// Guard against reentry on ask() function. The danger is that some
2016-12-28 15:06:34 +00:00
Volker Ruppert
b5b0ec503c
Some work on the X11 dialogs
...
- Rewrite of the existing yes/no dialog to support more button options. Now it
can be used with OK/Cancel buttons or as a simple message box with OK or
Cancel. This message box that can be used to show error messages with a
new action "warn" or for critical panics when continuing would be dangerous
("BX_FATAL"). These features are not implemented yet.
- Partial rewrite of the button handling code (e.g. new method add_button()).
- some malloc/free to new/delete changes.
2016-12-27 16:26:57 +00:00
Volker Ruppert
97a4909b73
When reading configuration from the wx gui, an error no longer closes the whole
...
app. Now only the bochsrc parsing terminates with an error. Improved message box
shown at this point.
2016-12-26 16:12:54 +00:00
Volker Ruppert
974c8d5124
Fixed compilation errors that occur with debugger enabled.
2016-12-06 18:07:05 +00:00
Stanislav Shwartsman
7ccc859b00
static code analysis: remove redundant include
2016-12-05 19:15:59 +00:00
Stanislav Shwartsman
98c69ce6ae
c++ better to use new/delete and not malloc
2016-12-05 19:05:31 +00:00
Stanislav Shwartsman
0059d33102
c++ better to use new/delete and not malloc
2016-12-05 18:56:56 +00:00
Stanislav Shwartsman
20efa2ddec
c++ better to use new/delete and not malloc
2016-12-05 18:49:22 +00:00
Stanislav Shwartsman
40609d3ab2
c++ better to use delete and not malloc
2016-12-05 18:41:35 +00:00
Stanislav Shwartsman
1283292613
static code analysis fixes - what if file didn't open?
2016-12-05 18:17:22 +00:00
Volker Ruppert
f303bd4912
Applied some more changes for Android.
...
- fixed mouse in fullscreen mode (sdl)
- fixed / updated build script for current SVN
2016-08-16 16:15:12 +00:00
Volker Ruppert
f906963c45
Another fix for Bochs on Android.
2016-08-14 16:55:05 +00:00
Volker Ruppert
cd68194269
Added Android host platform support to Bochs based on SF patch #534 .
...
- added Android case to the configure script.
- renamed file memory.h to memory-bochs.h to fix conflict with NDK.
- fixed Android issues in some files.
2016-08-12 17:06:14 +00:00
Stanislav Shwartsman
dff5e9587b
fixed SMP mode compilation err
2016-05-05 14:15:17 +00:00
Stanislav Shwartsman
3ffe5d3d87
parse params from string using bx_param method - avoid unnecessary switch walking over param types
2016-05-03 19:15:09 +00:00
Stanislav Shwartsman
b5d1b30f3d
rename variable to avoid conflict with std::string class
2016-04-30 20:44:10 +00:00
Volker Ruppert
45232b1860
Added standard bus mouse support and inproved existing InPort mouse support
...
(Ben Lunt). Added new mouse type choice 'inport' for the existing one and changed
'bus' type to the new standard bus mouse,
2016-03-31 17:24:34 +00:00
Volker Ruppert
7c0d93884e
Fixed array size (rfb) and added comment (win32).
2015-10-25 09:22:43 +00:00
Volker Ruppert
cbd147fca3
Fixed and improved text mode CO40.
...
- vgacore: double font and screen width at half dot clock.
- X gui: improved font bitmap generation to support width > 9.
- win32 gui: adjust values to use existing stretching feature.
- guis rfb, sdl, sdl2, vncsrv and wx: double pixels if font width > 9.
2015-10-24 22:03:51 +00:00
Volker Ruppert
1a3bf9419c
SDL/SDL2: increase status item width to show max. 6 characters
2015-10-23 18:39:38 +00:00
Volker Ruppert
9bc8651328
Extended functionality of class bx_shadow_data_c to simplify saving small byte
...
arrays. Changed register_state() code in a few devices to use this feature.
TODO: Use this feature in all devices with small byte arrays.
2015-10-05 18:09:58 +00:00
Volker Ruppert
2dbfae1b1c
Fixes and improvements for the USB cdrom runtime options.
...
- Add a special list to the MSD state and add pointers to the runtime-only
options for the cdrom. The restore handler of this list calls runtime_config()
to make sure the media path and status are correctly updated.
- Registering a runtime config handler for the USB cdrom is not necessary since
runtime_config() is always called from the hub it is connected to.
- Restore a string parameter value only if it's different from the initial one.
2015-08-29 14:02:13 +00:00
Volker Ruppert
7da8cfa4b0
Fixed save/restore support of the USB subsystem when using an external hub
...
with devices conected at runtime.
- Added restore handler support for the bx_list_c class. If a handler is
registered, it will be called after restoring all of the list's members.
- USB hub: add special lists to the port state and add pointers to the
runtime-only options for each port. The restore handler of this list calls
init_device() to make sure all connected devices can be restored.
- Call restore_logopts() after restoring hardware to make sure all saved
modules have been created.
- TODO: the USB cdrom also needs a fix for it's runtime-only options.
2015-08-28 17:37:38 +00:00
Volker Ruppert
38fbdaa7e8
Added runtime config handler for the USB cdrom and modified parameter handling
...
similar to the ATAPI implementation (including locked tray case).
Fixed status indicator activity and minor other changes.
2015-08-23 16:09:24 +00:00
Volker Ruppert
1df014a8ae
Implemented unregister mechanism for runtime config handlers.
...
TODO: use it for removable devices with removable media (USB floppy / cdrom).
2015-08-23 07:04:56 +00:00
Volker Ruppert
639f361d02
Fix the fix: force a status bar update after registering an item, too.
2015-08-11 17:48:18 +00:00
Volker Ruppert
16fb8317bd
Fixed parameter handler issues found with runtime changes while cdrom tray locked.
...
- bx_param_num_c: set the value returned from the handler.
- bx_param_string_c: set the new value after processing the handler.
- harddrv param handler: check lock state of cdrom and modify value if true.
2015-08-10 18:44:16 +00:00
Volker Ruppert
46d2c0adad
Started implementing save/restore support for the USB floppy.
...
Fixed status indicator handling in case of connect failure.
2015-07-28 18:44:08 +00:00
Volker Ruppert
87d40fe673
Some work on the status LED support for removable devices.
...
- Force a status bar update after unregistering an item.
- Added status indicators for USB disk and cdrom.
- Handle USB device disconnect in the runtime config handler, too.
2015-07-13 21:57:09 +00:00
Volker Ruppert
3986a0b703
Extended status bar LED feature to support dynamic indicators for removable
...
devices like USB disk, cdrom or floppy. Using this feature for the new USB
floppy. Removed static indicators for port activity from the USB HC code.
TODO: Implement status LEDs for USB disk and cdrom.
2015-07-13 16:56:06 +00:00
Volker Ruppert
f838b04dd1
Attempt to fix the compilation failure on OpenBSD with debugger enabled
...
(stdin and stdout cannot be modified on this platform).
2015-05-09 17:01:24 +00:00
Volker Ruppert
8db4261869
The win32ParamDialog now can handle bx_param_num_c values with full Bit64s size.
2015-04-23 18:44:51 +00:00
Volker Ruppert
727fbd23af
Fixed possible deadlock when pressing user shortcut or save/restore button.
...
The button handlers must be placed outside of the critical section.
2015-04-11 10:21:03 +00:00
Volker Ruppert
3e54ff2e36
Added Oracle(tm) VM VirtualBox image support (VDI version 1.1). Patch written
...
by Ben Lunt plus some additions (bximage fixes, big endian support).
TODO: update MSVC workspace files.
2015-03-29 14:27:32 +00:00
Volker Ruppert
924201f694
Added capability to handle floating point values with save/restore.
...
Improved OPL3 save/restore support.
2015-03-13 21:28:40 +00:00
Volker Ruppert
cbfbaaacb7
Added BX_HAVE_SOUND_* definitions to simplify code.
2015-02-23 21:32:34 +00:00
Volker Ruppert
3135e6a4eb
Changed sound driver parameter type to bx_param_enum_c.
...
TODO: Add sound driver selection per service (waveout, wavein, midiout).
2015-02-22 20:29:58 +00:00
Stanislav Shwartsman
b5a603c8c7
fixed %d->%u format found by cppcheck (patch by Maxim Derbasov)
2015-01-25 21:24:13 +00:00
Volker Ruppert
55f7c7542b
Implemented yes/no dialog for SDL2 (e.g. for VVFAT commit).
2015-01-19 20:32:20 +00:00
Volker Ruppert
3dca0bd8cf
Some work in the soundmod beep code and multithreading improvements.
...
- Beep thread now only started one per simulation.
- Added some more multithreading macros and use them in rfb, vncsrv and soundmod.
- TODO: implement mixer thread and remove beep thread.
2015-01-17 19:53:03 +00:00
Stanislav Shwartsman
055da948a0
fixed problems found by cppcheck tool (patch by Maxim Derbasov) - second round
2015-01-07 16:17:40 +00:00
Volker Ruppert
0c205fce26
Some work in the lowlevel sound code.
...
- Added framework for polling wave data and use it for beep output in sdl.
- Some work in the beep thread code (to be continued).
- Moved macros required for multithreading to bochs.h.
2015-01-04 21:12:41 +00:00
Volker Ruppert
2357175d79
Show mouse messages only if capture status changes.
2015-01-03 17:13:54 +00:00
Volker Ruppert
33a633cbd2
Partial rewrite of the win32 mouse motion handling.
...
- If the mouse is captured, use ClipCursor() to keep the cursor in the window.
- After handling mouse motion event in relative mode, move the cursor back to
the window center (similar to other guis).
2014-12-30 16:31:17 +00:00
Volker Ruppert
2f893a76ff
Small code cleanup
2014-12-29 18:50:03 +00:00
Volker Ruppert
ee5a416228
Now build rules for all gui and device plugins supported by MSVC nmake depend
...
on the related configure options.
2014-12-28 19:13:02 +00:00
Volker Ruppert
e50a0c517a
Key auto-release feature changed: now release the pressed keys when the Bochs
...
window is losing the keyboard focus. This feature is now also supported by the
win32 gui.
2014-12-27 15:57:30 +00:00
Volker Ruppert
65d2bb11eb
Release all pressed keys when the Bochs window gets back the keyboard focus.
...
- feature implemented in the wxWidgets gui
- feature not required for legacy SDL (releases keys on focus change)
- removed duplicate code in keyboard.cc
- TODO: implement feature in the win32 gui if required
2014-12-27 09:43:05 +00:00
Volker Ruppert
227da0c6de
Release all pressed keys when the simulation window gets back the keyboard
...
focus. This change will fix some keyboard-related bug reports (DONE for the
x and sdl2 guis / TODO for all others).
2014-12-26 20:25:27 +00:00
Volker Ruppert
b18ed8e2b1
Applied Debian patch for wxWidgets 3.0 compatibility.
2014-12-23 19:30:03 +00:00
Volker Ruppert
f2c9a503d1
Added debugger support for the term gui using a pseudo-terminal. The command-line
...
debugger appears on main terminal and Bochs screen on pseudo-terminal connected
to minicom (based on SF patch #522 ).
2014-12-18 20:29:37 +00:00
Volker Ruppert
19b3d52934
Fixed possible crash when the GTK+ debugger is enabled (based on SF patch by
...
Dawn Teschendorf).
2014-12-16 19:48:50 +00:00
Volker Ruppert
a1851e7f38
Enclose string literal in wxT() macros to fix unicode version.
2014-12-06 23:10:11 +00:00
Volker Ruppert
c8ef526143
Fixed some warnings.
2014-12-01 17:06:00 +00:00
Volker Ruppert
bea4a02b18
Save and restore GTK font setting using INI file.
2014-11-09 19:09:11 +00:00
Volker Ruppert
a2886318d8
Save/restore GTK debugger window size and position using INI file.
...
TODO: handle GTK font selection.
2014-11-07 18:59:59 +00:00
Volker Ruppert
e6be902c56
Maximize debugger window if upper-left edge is outside of desktop.
...
Fixed font selection: disable "italic" flag before calling dialog.
2014-11-06 19:02:34 +00:00
Volker Ruppert
10a016194c
Save proportions of the Reg, Asm and Dump windows to INI file.
...
TODO: handle font selection and main window size/position in the GTK version.
2014-11-06 17:13:27 +00:00
Volker Ruppert
d70ee1e99b
Fixed font setup after reading from INI file.
2014-11-04 21:09:18 +00:00
Volker Ruppert
aad31f7767
Added support for save/restore of the debugger main window size and position
...
using the INI file.
TODO: handle child windows, implement font/window handling in the GTK version.
2014-10-31 19:35:57 +00:00
Volker Ruppert
56a1f53de7
Rewrite of the font selection code to support save/restore of font settings
...
using the INI file.
2014-10-28 18:54:48 +00:00
Volker Ruppert
59f5a03af6
Rewrite of the virtual timer code to support both modes at the same timer.
...
The timers now have a new member 'realtime' and they are driven by the
selected engine. The VGA update timer and the status LED timer now always use
the realtime mode, but the PIT and CMOS RTC depend on the clock options.
2014-10-19 08:54:16 +00:00
Stanislav Shwartsman
8d1e3b2ac1
Added statistics collection infrastructure in Bochs and
...
implemented important CPU statistics which were used for Bochs CPU model performance analysis.
old statistics code from paging.cc and cpu.cc is replaced with new infrastructure.
In order to enale statitics collection in Bochs CPU:
- Enable statistics @ compilation time in cpu/cpustats.h
- Dump statistics periodically by adding -dumpstats N into Bochs command line
2014-10-14 15:59:10 +00:00
Volker Ruppert
91937748fa
Added "DockOrder" setting to gui debugger INI file.
...
Prepared handling of platform-specific settings (e.g. fonts, window sizes).
2014-09-14 19:36:13 +00:00
Volker Ruppert
d12858ab31
Add one more common setting to gui debugger INI file.
...
TODO: add platform-specific settings (font, window size/position)
Disable log viewer on debugger exit.
textconfig: minor fixes found while testing gui debugger.
2014-09-01 16:47:26 +00:00
Volker Ruppert
34d4983cba
Compile enhanced gui debugger core only if enabled.
2014-08-31 17:08:58 +00:00
Volker Ruppert
d30d9bc667
Handle some more settings in gui debugger INI file.
2014-08-31 08:18:43 +00:00
Volker Ruppert
9b3b792c73
Gui debugger: handle some more settings in INI file
...
Slirp: fixed copy-and-paste error
2014-08-30 07:14:19 +00:00
Volker Ruppert
7ba82cab9f
Write enhanced debugger gui settings to config file on exit and read them in
...
the init code. Started with the SeeReg[] array values. Some other setting could
be added later. The parser code is based on the slirp config parser.
Slirp: fixed possible segfault if the value for a parameter is missing.
2014-08-24 14:28:42 +00:00
Volker Ruppert
36aa1ae6d2
Close enhanced gui debugger in gui exit() method if necessary.
...
TODO: read / write enhanced gui debugger settings in init / close functions
2014-08-17 12:48:05 +00:00
Volker Ruppert
ad27a15023
Enclose 2 string literals in wxT() macros to fix unicode version (SF bug #1351 )
2014-07-27 14:47:55 +00:00
Volker Ruppert
494ed30e95
Some fixes for plugin support with VS2013Ex
...
- creating extra manifest for bochs.exe no longer needed
- cleaning up temporary manifest files no longer necessary
2014-07-26 06:54:34 +00:00
Volker Ruppert
afb771f08e
Optimize drawing in some functions.
...
Mention SDL2 bug in fullscreen mode: surface dimensions not updated after
resolution change.
2014-07-14 07:58:42 +00:00
Volker Ruppert
e1fe9ee332
Determine display dimensions similar to other guis
2014-07-11 07:20:36 +00:00
Volker Ruppert
cf58d7ac2d
Determine maximum host resolution (similar to sdl2 and win32 guis)
2014-07-10 10:31:51 +00:00
Stanislav Shwartsman
e2e549c675
fixed MSVCPP warning
2014-07-09 15:39:47 +00:00
Volker Ruppert
0e14966b06
Determine desktop dimensions in constructor (fixes maximum resolution of Bochs
...
VBE support).
2014-07-08 16:51:38 +00:00
Volker Ruppert
a565b67293
Moved SDL2 init to constructor to make sure 'sdl_maxres' is initialized before
...
calling get_capabilities() (fixes Bochs VBE support).
2014-07-08 15:46:46 +00:00
Volker Ruppert
894e66574a
Rewrite of the userbutton shortcut handling: now parsing shortcut string in
...
gui init and string paramter handler. The shortcut keys are now stored in an
array of BX_KEY* values in the gui object.
siminterface.h: Fixed some default return values.
2014-07-08 14:30:27 +00:00
Volker Ruppert
cb8d81defd
Added new user shortcut "scrlck" (SDL/SDL2 using "Scroll Lock" for fullscreen toggle).
...
Cleanups and improvements in the userbutton shortcut code.
Documentation update (mention SDL2, updated userbutton list)
2014-07-07 07:29:08 +00:00
Volker Ruppert
20cc91a7d8
Fixed SVN Id line
2014-07-06 18:30:24 +00:00
Volker Ruppert
df9cd2fdbb
Added SVN Id and revision to keymap files
2014-07-06 18:29:06 +00:00
Volker Ruppert
0ddb6600c7
Added new keymaps for SDL2 (U.S. and German keyboard layout)
2014-07-06 18:17:05 +00:00
Volker Ruppert
04ae9e60aa
Updated makefile dependencies after adding SDL2 gui
2014-07-06 17:13:53 +00:00
Volker Ruppert
edb3a8b936
SB_Edges array must be of type Bit32s (fixes status bar in Cygwin64)
2014-07-06 14:17:18 +00:00
Volker Ruppert
a1f7fe26ed
SDL/SDL2 fullscreen mouse fixes
...
- SDL/SDL2: fixed mouse movement in absolute x/y mode
- SDL2: always capture mouse in fullscreen mode (like legacy SDL gui)
- SDL: don't handle headerbar click in fullscreen mode
- SDL/SDL2 code sync
2014-07-05 08:00:01 +00:00
Volker Ruppert
2bfd78fa45
SDL2: added experimental fullscreen mode support
2014-07-03 20:17:19 +00:00
Volker Ruppert
c7ae0310ac
SDL2: fixed link failure caused by the SDL font usage in the 'rfb and 'vncsrv'' guis
2014-07-02 21:08:54 +00:00
Volker Ruppert
d9b3c3b91b
Added simple 'ask' dialog box for the SDL2 gui on non-Windows platforms
2014-06-29 07:37:58 +00:00
Volker Ruppert
3e2acd21ac
Fixes for the SDL2 gui on Windows
2014-06-28 23:49:10 +00:00
Volker Ruppert
a2ee3b4931
Some more work on the new SDL2 gui
...
- added keyboard mapping support (TODO: update keymap files)
- added simple application icon
- minor mouse handling fix
2014-06-28 13:25:52 +00:00