Moved initialization until later. Also moved around code a bit to be
consistant.
This commit is contained in:
parent
27a0ced6e1
commit
ebc0e5e0a4
|
@ -1,4 +1,5 @@
|
|||
/* generic.c */
|
||||
/* Copyright 1999 - Joseph Pranevich */
|
||||
|
||||
/* This is a driver to implement, when possible, "high-level"
|
||||
routines using only low level calls. This is to make it possible
|
||||
|
|
|
@ -16,17 +16,9 @@
|
|||
|
||||
static int pop_driver(char **, char **, int *);
|
||||
|
||||
void CONSOLE_Write(char out, int fg_color, int bg_color, int attribute)
|
||||
{
|
||||
if (driver.write)
|
||||
{
|
||||
driver.write(out, fg_color, bg_color, attribute);
|
||||
if (!driver.norefresh)
|
||||
CONSOLE_Refresh();
|
||||
}
|
||||
}
|
||||
static int console_initialized = FALSE;
|
||||
|
||||
void CONSOLE_Init(char *drivers)
|
||||
int CONSOLE_Init(char *drivers)
|
||||
{
|
||||
/* When this function is called drivers should be a string
|
||||
that consists of driver names followed by plus (+) signs
|
||||
|
@ -62,6 +54,22 @@ void CONSOLE_Init(char *drivers)
|
|||
|
||||
if (driver.init)
|
||||
driver.init();
|
||||
|
||||
/* For now, always return TRUE */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void CONSOLE_Write(char out, int fg_color, int bg_color, int attribute)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.write)
|
||||
{
|
||||
driver.write(out, fg_color, bg_color, attribute);
|
||||
if (!driver.norefresh)
|
||||
CONSOLE_Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void CONSOLE_Close()
|
||||
|
@ -72,6 +80,9 @@ void CONSOLE_Close()
|
|||
|
||||
void CONSOLE_MoveCursor(char row, char col)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.moveCursor)
|
||||
{
|
||||
driver.moveCursor(row, col);
|
||||
|
@ -83,6 +94,9 @@ void CONSOLE_MoveCursor(char row, char col)
|
|||
void CONSOLE_ClearWindow(char row1, char col1, char row2, char col2,
|
||||
int bg_color, int attribute)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.clearWindow)
|
||||
{
|
||||
driver.clearWindow(row1, col1, row2, col2, bg_color, attribute);
|
||||
|
@ -94,6 +108,9 @@ void CONSOLE_ClearWindow(char row1, char col1, char row2, char col2,
|
|||
void CONSOLE_ScrollUpWindow(char row1, char col1, char row2, char col2,
|
||||
char lines, int bg_color, int attribute)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.scrollUpWindow)
|
||||
{
|
||||
driver.scrollUpWindow(row1, col1, row2, col2, lines, bg_color,
|
||||
|
@ -106,6 +123,9 @@ void CONSOLE_ScrollUpWindow(char row1, char col1, char row2, char col2,
|
|||
void CONSOLE_ScrollDownWindow(char row1, char col1, char row2, char col2,
|
||||
char lines, int bg_color, int attribute)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.scrollDownWindow)
|
||||
{
|
||||
driver.scrollDownWindow(row1, col1, row2, col2, lines, bg_color,
|
||||
|
@ -120,6 +140,9 @@ int CONSOLE_CheckForKeystroke(char *scan, char *ascii)
|
|||
should *not* be determined by the driver, rather they should have
|
||||
a conv_* function in int16.c. Yuck. */
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.checkForKeystroke)
|
||||
return driver.checkForKeystroke(scan, ascii);
|
||||
else
|
||||
|
@ -128,36 +151,119 @@ int CONSOLE_CheckForKeystroke(char *scan, char *ascii)
|
|||
|
||||
void CONSOLE_GetKeystroke(char *scan, char *ascii)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.getKeystroke)
|
||||
driver.getKeystroke(scan, ascii);
|
||||
}
|
||||
|
||||
void CONSOLE_GetCursorPosition(char *row, char *col)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.getCursorPosition)
|
||||
driver.getCursorPosition(row, col);
|
||||
}
|
||||
|
||||
void CONSOLE_GetCharacterAtCursor(char *ch, int *fg, int *bg, int *a)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.getCharacterAtCursor)
|
||||
driver.getCharacterAtCursor(ch, fg, bg, a);
|
||||
}
|
||||
|
||||
void CONSOLE_Refresh()
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.refresh)
|
||||
driver.refresh();
|
||||
}
|
||||
|
||||
int CONSOLE_AllocColor(int color)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.allocColor)
|
||||
return driver.allocColor(color);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CONSOLE_ClearScreen()
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.clearScreen)
|
||||
{
|
||||
driver.clearScreen();
|
||||
if (!driver.norefresh)
|
||||
CONSOLE_Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
char CONSOLE_GetCharacter()
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
/* I'm not sure if we need this really. This is a function that can be
|
||||
accelerated that returns the next *non extended* keystroke */
|
||||
if (driver.getCharacter)
|
||||
return driver.getCharacter();
|
||||
else
|
||||
return (char) 0; /* Sure, this will probably break programs... */
|
||||
}
|
||||
|
||||
void CONSOLE_ResizeScreen(int x, int y)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.resizeScreen)
|
||||
driver.resizeScreen(x, y);
|
||||
}
|
||||
|
||||
void CONSOLE_NotifyResizeScreen(int x, int y)
|
||||
{
|
||||
if (driver.notifyResizeScreen)
|
||||
driver.notifyResizeScreen(x, y);
|
||||
}
|
||||
|
||||
void CONSOLE_SetBackgroundColor(int fg, int bg)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
if (driver.setBackgroundColor)
|
||||
driver.setBackgroundColor(fg, bg);
|
||||
}
|
||||
|
||||
void CONSOLE_WriteRawString(char *str)
|
||||
{
|
||||
if (!console_initialized)
|
||||
console_initialized = CONSOLE_Init(driver.driver_list);
|
||||
|
||||
/* This is a special function that is only for internal use and
|
||||
does not actually call any of the console drivers. It's
|
||||
primary purpose is to provide a way for higher-level drivers
|
||||
to write directly to the underlying terminal without worry that
|
||||
there will be any retranslation done by the assorted drivers. Care
|
||||
should be taken to ensure that this only gets called when the thing
|
||||
written does not actually produce any output or a CONSOLE_Redraw()
|
||||
is called immediately afterwards.
|
||||
CONSOLE_Redraw() is not yet implemented.
|
||||
*/
|
||||
fprintf(driver.console_out, "%s", str);
|
||||
}
|
||||
|
||||
/* This function is only at the CONSOLE level. */
|
||||
/* Admittably, calling the variable norefresh might be a bit dumb...*/
|
||||
void CONSOLE_SetRefresh(int setting)
|
||||
|
@ -177,58 +283,6 @@ int CONSOLE_GetRefresh()
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void CONSOLE_ClearScreen()
|
||||
{
|
||||
if (driver.clearScreen)
|
||||
{
|
||||
driver.clearScreen();
|
||||
if (!driver.norefresh)
|
||||
CONSOLE_Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
char CONSOLE_GetCharacter()
|
||||
{
|
||||
/* I'm not sure if we need this really. This is a function that can be
|
||||
accelerated that returns the next *non extended* keystroke */
|
||||
if (driver.getCharacter)
|
||||
return driver.getCharacter();
|
||||
else
|
||||
return (char) 0; /* Sure, this will probably break programs... */
|
||||
}
|
||||
|
||||
void CONSOLE_ResizeScreen(int x, int y)
|
||||
{
|
||||
if (driver.resizeScreen)
|
||||
driver.resizeScreen(x, y);
|
||||
}
|
||||
|
||||
void CONSOLE_NotifyResizeScreen(int x, int y)
|
||||
{
|
||||
if (driver.notifyResizeScreen)
|
||||
driver.notifyResizeScreen(x, y);
|
||||
}
|
||||
|
||||
void CONSOLE_SetBackgroundColor(int fg, int bg)
|
||||
{
|
||||
if (driver.setBackgroundColor)
|
||||
driver.setBackgroundColor(fg, bg);
|
||||
}
|
||||
|
||||
void CONSOLE_WriteRawString(char *str)
|
||||
{
|
||||
/* This is a special function that is only for internal use and
|
||||
does not actually call any of the console drivers. It's
|
||||
primary purpose is to provide a way for higher-level drivers
|
||||
to write directly to the underlying terminal without worry that
|
||||
there will be any retranslation done by the assorted drivers. Care
|
||||
should be taken to ensure that this only gets called when the thing
|
||||
written does not actually produce any output or a CONSOLE_Redraw()
|
||||
is called immediately afterwards.
|
||||
CONSOLE_Redraw() is not yet implemented.
|
||||
*/
|
||||
fprintf(driver.console_out, "%s", str);
|
||||
}
|
||||
|
||||
/* Utility functions... */
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* ncurses.c */
|
||||
/* Copyright 1999 - Joseph Pranevich */
|
||||
|
||||
#include "config.h"
|
||||
#include "console.h"
|
||||
|
@ -146,11 +147,16 @@ void NCURSES_GetCursorPosition(char *row, char *col)
|
|||
void NCURSES_GetCharacterAtCursor(char *ch, int *fg_color, int
|
||||
*bg_color, int *attribute)
|
||||
{
|
||||
/* If any of the pointers are NULL, ignore them */
|
||||
/* We will eventually have to convert the color data */
|
||||
*ch = (char) winch(stdscr);
|
||||
*fg_color = 0;
|
||||
*bg_color = 0;
|
||||
*attribute = 0;
|
||||
if (ch)
|
||||
*ch = (char) winch(stdscr);
|
||||
if (fg_color)
|
||||
*fg_color = WINE_WHITE;
|
||||
if (bg_color)
|
||||
*bg_color = WINE_BLACK;
|
||||
if (attribute)
|
||||
*attribute = 0;
|
||||
};
|
||||
|
||||
void NCURSES_Refresh()
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* tty.c */
|
||||
/* Copyright 1999 - Joseph Pranevich */
|
||||
|
||||
/* This is the console driver for TTY-based consoles, i.e. consoles
|
||||
without cursor placement, etc. It's also a pretty decent starting
|
||||
|
|
|
@ -60,6 +60,7 @@ typedef struct CONSOLE_DRIVER
|
|||
|
||||
/* Other data */
|
||||
int norefresh;
|
||||
char *driver_list;
|
||||
FILE *console_out;
|
||||
FILE *console_in;
|
||||
|
||||
|
@ -68,7 +69,7 @@ typedef struct CONSOLE_DRIVER
|
|||
CONSOLE_device driver; /* Global driver struct */
|
||||
|
||||
/* Generic defines */
|
||||
void CONSOLE_Init(char *drivers);
|
||||
int CONSOLE_Init(char *drivers);
|
||||
void CONSOLE_Close();
|
||||
void CONSOLE_Write(char out, int fg_color, int bg_color, int attribute);
|
||||
void CONSOLE_MoveCursor(char row, char col);
|
||||
|
|
|
@ -73,7 +73,6 @@ struct options
|
|||
int perfectGraphics; /* Favor correctness over speed for graphics */
|
||||
int noDGA; /* Disable XFree86 DGA extensions */
|
||||
char * configFileName; /* Command line config file */
|
||||
char * consoleDrivers; /* Console driver list */
|
||||
int screenDepth;
|
||||
};
|
||||
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
#include "debug.h"
|
||||
#include "psdrv.h"
|
||||
#include "server.h"
|
||||
#include "console.h"
|
||||
|
||||
int __winelib = 1; /* Winelib run-time flag */
|
||||
|
||||
|
@ -86,9 +85,6 @@ BOOL32 MAIN_MainInit(void)
|
|||
/* registry initialisation */
|
||||
SHELL_LoadRegistry();
|
||||
|
||||
/* Set up text-mode stuff */
|
||||
CONSOLE_ResizeScreen(80, 25);
|
||||
|
||||
/* Read DOS config.sys */
|
||||
if (!DOSCONF_ReadConfig()) return FALSE;
|
||||
|
||||
|
|
|
@ -93,7 +93,6 @@ struct options Options =
|
|||
FALSE, /* Perfect graphics */
|
||||
FALSE, /* No DGA */
|
||||
NULL, /* Alternate config file name */
|
||||
NULL, /* Console driver list */
|
||||
0 /* screenDepth */
|
||||
};
|
||||
|
||||
|
@ -742,8 +741,6 @@ static void MAIN_ParseOptions( int *argc, char *argv[] )
|
|||
#else /* X_DISPLAY_MISSING */
|
||||
TTYDRV_MAIN_ParseOptions(argc,argv);
|
||||
#endif /* X_DISPLAY_MISSING */
|
||||
|
||||
CONSOLE_Init(Options.consoleDrivers);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
|
|
@ -245,9 +245,9 @@ void X11DRV_MAIN_ParseOptions(int *argc, char *argv[])
|
|||
if (X11DRV_MAIN_GetResource( db, ".nodga", &value))
|
||||
Options.noDGA = TRUE;
|
||||
if (X11DRV_MAIN_GetResource( db, ".console", &value))
|
||||
Options.consoleDrivers = xstrdup((char *)value.addr);
|
||||
driver.driver_list = xstrdup((char *)value.addr);
|
||||
else
|
||||
Options.consoleDrivers = CONSOLE_DEFAULT_DRIVER;
|
||||
driver.driver_list = CONSOLE_DEFAULT_DRIVER;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
|
|
Loading…
Reference in New Issue