static int video_none_init(void) { vga_emu_setmode(video_mode, CO, LI); return 0; }
static int console_post_init(void) { int kdmode; set_vc_screen_page(); set_process_control(); k_printf("KBD: Taking mouse control\n"); /* Actually only in KD_GRAPHICS... */ /* Some escape sequences don't work in KD_GRAPHICS... */ kdmode = config.vga? KD_GRAPHICS: KD_TEXT; ioctl(console_fd, KDSETMODE, kdmode); /* Clear the Linux console screen. The console recognizes these codes: * \033[?25h = show cursor. * \033[0m = reset color. * \033[H = Move cursor to upper-left corner of screen. * \033[2J = Clear screen. */ if (!config.vga) { int co, li; gettermcap(0, &co, &li); fprintf(stdout,"\033[?25h\033[0m\033[H\033[2J"); vga_emu_setmode(config.cardtype == CARD_MDA ? 7 : 3, co, li); } scr_state.mapped = 0; allow_switch(); /* Switch to dosemu VT if config.forcevtswitch is set. The idea of this action is that in case of config.console_video dosemu need to work at active VT (at least at start) for accessing video memory. So to be able to run dosemu for instance through cron we need config option like forcevtswitch. The action seems sensible only if config.console_video. [email protected] */ if (config.force_vt_switch && !vc_active()) { if (ioctl(console_fd, VT_ACTIVATE, scr_state.console_no)<0) v_printf("VID: error VT switching %s\n", strerror(errno)); } /* XXX - get this working correctly! */ #define OLD_SET_CONSOLE 1 #ifdef OLD_SET_CONSOLE init_get_video_ram(WAIT); scr_state.mapped = 1; #endif if (vc_active()) { int other_no = (scr_state.console_no == 1 ? 2 : 1); v_printf("VID: we're active, waiting...\n"); #ifndef OLD_SET_CONSOLE init_get_video_ram(WAIT); scr_state.mapped = 1; #endif if (!config.vga) { ioctl(console_fd, VT_ACTIVATE, other_no); /* * Fake running signal_handler() engine to process release/acquire * vt's. */ while(vc_active()) coopth_wait(); ioctl(console_fd, VT_ACTIVATE, scr_state.console_no); while(!vc_active()) coopth_wait(); } } else v_printf("VID: not active, going on\n"); allow_switch(); return 0; }