From ea50fa47456d9651f43b11d9182743b2e5d0433f Mon Sep 17 00:00:00 2001
From: Miro Kropacek <[EMAIL REDACTED]>
Date: Mon, 11 Dec 2023 21:12:22 +0100
Subject: [PATCH] atari:video:xbios: fix crash when calling
VsetScreen(CMD_GETINFO)
The struct has actually two more members. Not sure whether this had been added by the author of CTPCI TOS or it's present also in Milan TOS.
---
src/video/xbios/SDL_xbios_milan.h | 48 ++++++++++++++++++++-----------
1 file changed, 31 insertions(+), 17 deletions(-)
diff --git a/src/video/xbios/SDL_xbios_milan.h b/src/video/xbios/SDL_xbios_milan.h
index bed5dc762..c1a383825 100644
--- a/src/video/xbios/SDL_xbios_milan.h
+++ b/src/video/xbios/SDL_xbios_milan.h
@@ -155,30 +155,34 @@ typedef struct screeninfo {
unsigned long pagemem; /* needed memory for one page */
unsigned long max_x; /* max. possible width */
unsigned long max_y; /* max. possible heigth */
+
+ /* CTPCI only? */
+ unsigned long refresh; /* refresh in Hz */
+ unsigned long pixclock; /* pixel clock in pS */
} SCREENINFO;
typedef struct _scrfillblk {
- long size; /* size of structure */
- long blk_status;/* status bits of blk */
- long blk_op; /* mode operation */
- long blk_color; /* background fill color */
- long blk_x; /* x pos in total screen */
- long blk_y; /* y pos in total screen */
- long blk_w; /* width */
- long blk_h; /* height */
+ long size; /* size of structure */
+ long blk_status; /* status bits of blk */
+ long blk_op; /* mode operation */
+ long blk_color; /* background fill color */
+ long blk_x; /* x pos in total screen */
+ long blk_y; /* y pos in total screen */
+ long blk_w; /* width */
+ long blk_h; /* height */
long blk_unused;
} SCRFILLMEMBLK;
typedef struct _scrcopyblk {
- long size; /* size of structure */
- long blk_status;/* status bits of blk */
- long blk_src_x; /* x pos source in total screen */
- long blk_src_y; /* y pos source in total screen */
- long blk_dst_x; /* x pos dest in total screen */
- long blk_dst_y; /* y pos dest in total screen */
- long blk_w; /* width */
- long blk_h; /* height */
- long blk_op; /* block operation */
+ long size; /* size of structure */
+ long blk_status; /* status bits of blk */
+ long blk_src_x; /* x pos source in total screen */
+ long blk_src_y; /* y pos source in total screen */
+ long blk_dst_x; /* x pos dest in total screen */
+ long blk_dst_y; /* y pos dest in total screen */
+ long blk_w; /* width */
+ long blk_h; /* height */
+ long blk_op; /* block operation */
} SCRCOPYMEMBLK;
typedef struct _scrtextureblk {
@@ -209,4 +213,14 @@ typedef struct _scrlineblk {
long blk_pattern; /* pattern (-1: solid line) */
} SCRLINEMEMBLK;
+typedef struct _scrclipblk {
+ long size; /* size of structure */
+ long blk_status; /* status bits of blk */
+ long blk_clip_on; /* clipping flag 1:on, 0:off */
+ long blk_x; /* x pos in total screen */
+ long blk_y; /* y pos in in total screen */
+ long blk_w; /* width */
+ long blk_h; /* height */
+} SCRCLIPMEMBLK;
+
#endif /* _SDL_xbios_milan_h */