startup sequence and iflags values
early_init() calls decl_globals_init() which zeros out
a number structures:
ZERO(flags);
ZERO(iflags);
ZERO(a11y);
ZERO(disp);
ZERO(u);
ZERO(ubirthday);
ZERO(urealtime);
Setting values in any of those during startup prior to
the early_init() call was futile, and the values would
get overwritten.
Such was the case with the setting of iflags.colorcount
during Windows startup, so do it after early_init() has
been called.
This commit is contained in:
@@ -997,10 +997,6 @@ tty_startup(int *wid, int *hgt)
|
|||||||
*wid = console.width;
|
*wid = console.width;
|
||||||
*hgt = console.height;
|
*hgt = console.height;
|
||||||
set_option_mod_status("mouse_support", set_in_game);
|
set_option_mod_status("mouse_support", set_in_game);
|
||||||
if (iflags.colorcount == 0) {
|
|
||||||
iflags.colorcount = 16777216;
|
|
||||||
// iflags.colorcount = 256;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2406,11 +2402,6 @@ void nethack_enter_consoletty(void)
|
|||||||
#ifdef VIRTUAL_TERMINAL_SEQUENCES
|
#ifdef VIRTUAL_TERMINAL_SEQUENCES
|
||||||
char buf[BUFSZ], *bp, *localestr;
|
char buf[BUFSZ], *bp, *localestr;
|
||||||
BOOL success;
|
BOOL success;
|
||||||
|
|
||||||
if (iflags.colorcount == 0) {
|
|
||||||
iflags.colorcount = 16777216;
|
|
||||||
// iflags.colorcount = 256;
|
|
||||||
}
|
|
||||||
#endif /* VIRTUAL_TERMINAL_SEQUENCES */
|
#endif /* VIRTUAL_TERMINAL_SEQUENCES */
|
||||||
#if 0
|
#if 0
|
||||||
/* set up state needed by early_raw_print() */
|
/* set up state needed by early_raw_print() */
|
||||||
|
|||||||
@@ -499,6 +499,9 @@ MAIN(int argc, char *argv[])
|
|||||||
char fnamebuf[BUFSZ], encodedfnamebuf[BUFSZ];
|
char fnamebuf[BUFSZ], encodedfnamebuf[BUFSZ];
|
||||||
char failbuf[BUFSZ];
|
char failbuf[BUFSZ];
|
||||||
int getlock_result = 0;
|
int getlock_result = 0;
|
||||||
|
HWND hwnd;
|
||||||
|
HDC hdc;
|
||||||
|
int bpp;
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
|
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
|
||||||
@@ -513,6 +516,16 @@ MAIN(int argc, char *argv[])
|
|||||||
#endif /* WIN32CON */
|
#endif /* WIN32CON */
|
||||||
|
|
||||||
early_init(argc, argv);
|
early_init(argc, argv);
|
||||||
|
/* setting iflags.colorcount has to be after early_init()
|
||||||
|
* because it zeros out all of iflags */
|
||||||
|
hwnd = GetDesktopWindow();
|
||||||
|
hdc = GetDC(hwnd);
|
||||||
|
if (hdc) {
|
||||||
|
bpp = GetDeviceCaps(hdc, BITSPIXEL);
|
||||||
|
iflags.colorcount = (bpp >= 16) ? 16777216 : (bpp >= 8) ? 256 : 16;
|
||||||
|
ReleaseDC(hwnd, hdc);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
/* set these appropriately for VS debugging */
|
/* set these appropriately for VS debugging */
|
||||||
|
|||||||
Reference in New Issue
Block a user