Files
nethack/sys/amiga/winext.h
T
Ingo Paschke 4e63ba90ca Amiga: bound BufferQueueChar; move CloseWindow out of Forbid()
Make the BufferQueueChar macro bounds-check KbdBuffered against
KBDBUFFER internally so the RAWKEY and NEWSIZE 'R'-64 paths can
no longer push past the 10-byte queue; widen KbdBuffered to int
so the counter cannot wrap silently in the queue-scan loops.

In amii_cleanup move kill_nhwindows()/DeleteMsgPort() outside
the Forbid()/Permit() pair: CloseWindow can wait on layers.library
semaphores on OS 3.x and that is unsafe under Forbid.  Keep only
the IDCMP-flush loop inside.
2026-05-12 15:28:43 +02:00

130 lines
3.7 KiB
C

/* NetHack 3.6 winext.h $NHDT-Date: 1432512794 2015/05/25 00:13:14 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993. */
/* NetHack may be freely redistributed. See license for details. */
extern int reclip;
#ifdef CLIPPING
extern int clipping;
extern int clipx;
extern int clipy;
extern int clipxmax;
extern int clipymax;
extern int xclipbord, yclipbord;
#endif
extern int CO;
extern int LI;
extern int scrollmsg;
extern int alwaysinvent;
extern unsigned short amii_defpens[20];
extern struct amii_DisplayDesc
*amiIDisplay; /* the Amiga Intuition descriptor */
extern struct window_procs amii_procs;
extern struct window_procs amiv_procs;
/* Three similarly-named palette arrays. Note the position of the
* second underscore distinguishes them:
* amii_initmap = working/runtime palette (mutated by tile/tomb load
* and the in-game color editor).
* amii_init_map = AMII (text-mode) compile-time defaults, 8 entries.
* amiv_init_map = AMIV (tile-mode) compile-time defaults, 32 entries
* (mutated by ReadImageFile when a tile/tomb IFF
* carries its own CMAP).
* The naming is historical; sysflags.amii_curmap is yet another related
* array holding the user's saved color choices.
*/
extern unsigned short amii_initmap[AMII_MAXCOLORS];
extern unsigned short amiv_init_map[AMII_MAXCOLORS];
extern unsigned short amii_init_map[AMII_MAXCOLORS];
extern int bigscreen;
extern int amii_numcolors;
extern long amii_scrnmode;
extern winid amii_rawprwin;
extern struct Screen *HackScreen;
extern char Initialized;
extern int amii_msgAPen;
extern int amii_msgBPen;
extern int amii_statAPen;
extern int amii_statBPen;
extern int amii_menuAPen;
extern int amii_menuBPen;
extern int amii_textAPen;
extern int amii_textBPen;
extern int amii_otherAPen;
extern int amii_otherBPen;
/* All kinds of shared stuff */
extern struct TextAttr Hack160;
extern struct TextAttr Hack40;
extern struct TextAttr Hack80;
extern struct TextAttr TextsFont13;
extern struct Window *pr_WindowPtr;
extern struct Menu HackMenu[];
extern struct Menu *MenuStrip;
extern struct NewMenu GTHackMenu[];
extern APTR *VisualInfo;
extern int KbdBuffered;
extern struct TextFont *TextsFont;
extern struct TextFont *HackFont;
extern struct IOStdReq ConsoleIO;
extern struct MsgPort *HackPort;
extern int txwidth, txheight, txbaseline;
/* This gadget data is replicated for menu/text windows... */
extern struct PropInfo PropScroll;
extern struct Image Image1;
extern struct Gadget MenuScroll;
/* This gadget is for the message window... */
extern struct PropInfo MsgPropScroll;
extern struct Image MsgImage1;
extern struct Gadget MsgScroll;
extern struct TagItem tags[];
extern struct win_setup {
struct NewWindow newwin;
UWORD offx, offy, maxrow, rows, maxcol, cols; /* CHECK TYPES */
} new_wins[];
extern UWORD scrnpens[];
/* The last Window event is stored here for reference. */
extern WEVENT lastevent;
extern const char winpanicstr[];
extern struct TagItem scrntags[];
extern struct NewScreen NewHackScreen;
extern int topl_addspace;
extern char spaces[76];
extern int wincnt; /* # of nh windows opened */
extern struct Rectangle lastinvent, lastmsg;
typedef struct {
UWORD w, h;
WORD x, y;
UBYTE nPlanes;
UBYTE masking;
UBYTE compression;
UBYTE reserved1;
UWORD transparentColor;
UBYTE xAspect, yAspect;
WORD pageWidth, pageHeight;
} BitMapHeader;
typedef enum {
COL_MAZE_BRICK,
COL_MAZE_STONE,
COL_MAZE_HEAT,
COL_MAZE_WOOD
} MazeType;
extern struct PDAT pictdata;
extern struct Hook fillhook;
extern struct TagItem wintags[];
#ifdef __PPC__
struct EmulLibEntry LayerFillHook;
#else
void LayerFillHook(void);
#endif
extern int mxsize, mysize;