⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 solinit.c

📁 早期freebsd实现
💻 C
字号:
/* *  solInit.c --  * *	remade by A.Fujita, DEC-16-1992 */#include "sol.h"#include "solFb.h"#include "solKbd.h"SolFbInfo	sol_fb_info;	int	solScreenIndex;static	unsigned long solGeneration;static	Bool solScreenInit();static	Bool solGetFbInfo();static	void solSetConsoleMode();static SolFbProc sol_fb_proc = {	solBmCreate,  solBmInit,  solBmGiveUp};intInitOutput(pScreenInfo, argc, argv)ScreenInfo 	  *pScreenInfo;int     	  argc;char    	  **argv;{	static PixmapFormatRec  MonoFormats = {		1, 1, BITMAP_SCANLINE_PAD,  /* 1-bit deep */	};	static Bool solFbInfo 	= FALSE;	static Bool solDevsCreate = FALSE;#ifdef	DEBUG	fprintf(stderr, "InitOutput\t[solInit.c]\tStart\n");#endif	if (!solFbInfo) {		if (solGetFbInfo(&sol_fb_info) != TRUE) 			FatalError("Can't get framebuffer information.\n");		solFbInfo = TRUE;	}	pScreenInfo->imageByteOrder     = IMAGE_BYTE_ORDER;	pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;	pScreenInfo->bitmapScanlinePad  = BITMAP_SCANLINE_PAD;	pScreenInfo->bitmapBitOrder     = BITMAP_BIT_ORDER;	pScreenInfo->numPixmapFormats = 1;	pScreenInfo->formats[0]       = MonoFormats;	if (!solDevsCreate) {		if (!(* sol_fb_info.func->CreateProc)(&sol_fb_info)) {			FatalError("Can't create framebuffer.\n");		}		solSetConsoleMode();		solDevsCreate = TRUE;	}	if(AddScreen(solScreenInit, argc, argv) < 0) {		FatalError("Can't add screen\n");	}#ifdef	DEBUG	fprintf(stderr, "InitOutput\t[solInit.c]\tEnd\n");#endif}static BoolsolScreenInit(screenIndex, pScreen, argc, argv)int		screenIndex;ScreenPtr	pScreen;int		argc;char 		**argv;{#ifdef	DEBUG	fprintf(stderr, "solScreenInit\t[solInit.c]\tStart\n");#endif	if (solGeneration != serverGeneration) {		if((solScreenIndex = AllocateScreenPrivateIndex()) <0) {			ErrorF("AllocateScreenPrivateIndex error.\n");			return FALSE;		}		solGeneration = serverGeneration;	}	pScreen->devPrivates[solScreenIndex].ptr = (pointer) &sol_fb_info;#ifdef	DEBUG	fprintf(stderr, "solScreenInit\t[solInit.c]\tEnd\n");#endif	return((* sol_fb_info.func->InitProc)(screenIndex, pScreen, argc, argv));}intInitInput(argc, argv)    int    argc;    char   **argv;{	DevicePtr p, k;#ifdef	DEBUG	fprintf(stderr, "InitInput\t[solInit.c]\tStart\n");#endif	p = AddInputDevice(solMouseProc, TRUE);	k = AddInputDevice(solKbdProc, TRUE);		RegisterPointerDevice(p);	RegisterKeyboardDevice(k);		miRegisterPointerDevice(screenInfo.screens[0], p);		if (mieqInit (k, p) != TRUE) {		FatalError("Enqueue init error.\n");	}	solSetIoHandler(solEnqueueEvents);	if(RegisterBlockAndWakeupHandlers(NoopDDA, solWakeupProc, (pointer)0) != TRUE) {		FatalError("Can't register WakeupHandler\n");	}#ifdef	DEBUG	fprintf(stderr, "InitInput\t[solInit.c]\tEnd\n");#endif}static BoolsolGetFbInfo(sol_fb_info)SolFbInfoPtr sol_fb_info;{#ifdef	DEBUG	fprintf(stderr, "solGetFbInfo\t[solInit.c]\tStart\n");#endif	sol_fb_info->fb_type	= FB_BM;	sol_fb_info->func	= &sol_fb_proc;	sol_fb_info->scr_width	= SCREEN_WIDTH;  	sol_fb_info->scr_height	= SCREEN_HEIGHT;  	sol_fb_info->fb_width	= FB_WIDTH;  	sol_fb_info->fb_height	= FB_HEIGHT;  	sol_fb_info->fb_depth	= 1;#ifdef	DEBUG	fprintf(stderr, "solGetFbInfo\t[solInit.c]\tEnd\n");#endif	return(TRUE);}static voidsolSetConsoleMode(){#ifdef	DEBUG	fprintf(stderr, "solSetConsoleMode\t[solInit.c]\tStart\n");	fprintf(stderr, "solSetConsoleMode\t[solInit.c]\tEnd\n");#endif}static voidsolResetConsoleMode(){#ifdef	DEBUG	fprintf(stderr, "solResetConsoleMode\t[solInit.c]\tStart\n");	fprintf(stderr, "solResetConsoleMode\t[solInit.c]\tEnd\n");#endif}voidAbortDDX(){#ifdef	DEBUG	fprintf(stderr, "AbortDDX\t[solInit.c]\tStart\n");#endif	solResetConsoleMode();#ifdef	DEBUG	fprintf(stderr, "AbortDDX\t[solInit.c]\tEnd\n");#endif}voidddxGiveUp(){#ifdef	DEBUG	fprintf(stderr, "ddxGiveUp\t[solInit.c]\tStart\n");#endif	solKbdGiveUp();	solMouseGiveUp();	if (sol_fb_info.func->GiveUpProc != NULL)		(*sol_fb_info.func->GiveUpProc)(&sol_fb_info);	solResetConsoleMode();#ifdef	DEBUG	fprintf(stderr, "ddxGiveUp\t[solInit.c]\tEnd\n");#endif}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -