📄 solinit.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 + -