1
0
mirror of https://github.com/simh/simh.git synced 2026-05-04 06:58:38 +00:00

VAX,MicroVAX,QVSS: Video improvements

VIDEO:
- Make mouse motion activity consistent with SDL relative direction.  Add error output when mouse events are discarded due to queue full.
  If a client application delivers motion information in a different relative sense, then that application needs to make the adjustments from the SDL standard direction.
- Added SHOW dev VIDEO capability to describe the underlying SDL video capabilities of the current SDL library and host execution environment.
- Force software based rendering under SDL2.  Enhanced debug info.
- Added host OS cursor integration support.
- Reorganize libSDL vs libSDL2 version implementation to leverage common logic without replication.

QVSS:
- Coalesced adjacent screen row updates to minimize vid_draw operations
- Report all relative mouse motion in the mouse position register AND mouse motion data.
- Added debugging information for cursor and scan line map updates
- Add option "SET QVSS CAPTURED" to force capture input mode.
This commit is contained in:
Mark Pizzolato
2015-02-02 16:01:49 -08:00
parent 729737fb11
commit 383ce78c91
4 changed files with 950 additions and 870 deletions

View File

@@ -158,8 +158,8 @@
#define SIM_KEY_UNKNOWN 200
struct mouse_event {
uint32 x_rel; /* X axis relative motion */
uint32 y_rel; /* Y axis relative motion */
int32 x_rel; /* X axis relative motion */
int32 y_rel; /* Y axis relative motion */
t_bool b1_state; /* state of button 1 */
t_bool b2_state; /* state of button 2 */
t_bool b3_state; /* state of button 3 */
@@ -173,15 +173,19 @@ struct key_event {
typedef struct mouse_event SIM_MOUSE_EVENT;
typedef struct key_event SIM_KEY_EVENT;
t_stat vid_open (DEVICE *dptr, uint32 width, uint32 height);
t_stat vid_open (DEVICE *dptr, uint32 width, uint32 height, int flags);
#define SIM_VID_INPUTCAPTURED 1 /* Mouse and Keyboard input captured (calling */
/* code responsible for cursor display in video) */
t_stat vid_close (void);
t_stat vid_poll_kb (SIM_KEY_EVENT *ev);
t_stat vid_poll_mouse (SIM_MOUSE_EVENT *ev);
void vid_draw (int32 x, int32 y, int32 w, int32 h, uint32 *buf);
void vid_refresh (void);
const char *vid_version (void);
t_stat vid_set_cursor (t_bool visible, uint32 width, uint32 height, uint8 *data, uint8 *mask);
t_stat vid_set_release_key (FILE* st, UNIT* uptr, int32 val, void* desc);
t_stat vid_show_release_key (FILE* st, UNIT* uptr, int32 val, void* desc);
t_stat vid_show_video (FILE* st, UNIT* uptr, int32 val, void* desc);
extern t_bool vid_active;
extern uint32 vid_mono_palette[2];
@@ -190,12 +194,12 @@ extern int32 vid_mouse_yrel; /* mouse cumulative y re
extern t_bool vid_mouse_b1; /* mouse button 1 state */
extern t_bool vid_mouse_b2; /* mouse button 2 state */
extern t_bool vid_mouse_b3; /* mouse button 3 state */
extern int32 vid_cursor_x; /* cursor x position (set by calling code) */
extern int32 vid_cursor_y; /* cursor y position (set by calling code) */
void vid_set_cursor_position (int32 x, int32 y); /* cursor position (set by calling code) */
#define SIM_VID_DBG_MOUSE 0x01000000
#define SIM_VID_DBG_KEY 0x02000000
#define SIM_VID_DBG_VIDEO 0x04000000
#define SIM_VID_DBG_CURSOR 0x02000000
#define SIM_VID_DBG_KEY 0x04000000
#define SIM_VID_DBG_VIDEO 0x08000000
#endif /* USE_SIM_VIDEO */