亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? vtswitch-lite.c

?? Minigui 的嵌入式圖形用戶接口的庫(kù)源碼
?? C
字號(hào):
/*** $Id: vtswitch-lite.c,v 1.9 2003/09/04 03:38:26 weiym Exp $**** vtswitch-lite.c: VT switching.**** Copyright (C) 2003 Feynman Software.** Copyright (C) 2001 ~ 2002 Song Lixin and Wei Yongming**** Created by Song Lixin, 2000/10/17** Clean code for MiniGUI 1.1.x by Wei Yongming, 20001/11/28*//*** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License as published by** the Free Software Foundation; either version 2 of the License, or** (at your option) any later version.**** This program is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the** GNU General Public License for more details.**** You should have received a copy of the GNU General Public License** along with this program; if not, write to the Free Software** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <signal.h>#include <sys/ioctl.h>#include <sys/time.h>#include <linux/vt.h>#include "common.h"#include "minigui.h"#ifdef _LITE_VERSION#include "gdi.h"#include "window.h"#include "cliprect.h"#include "gal.h"#include "internals.h"#include "ctrlclass.h"#include "dc.h"#include "ial.h"#include "native.h"static int vtswitch_initialised = 0;static struct vt_mode startup_vtmode;volatile static int console_active = 1;            /* are we active? */volatile static int console_should_be_active = 1;  /* should we be? */static int ttyfd = -1;static int current_vt;static void vt_switch_requested(int signo);static void poll_console_switch (void);static void come_back(void);static void go_away(void);int init_vtswitch (int kbd_fd) {    struct sigaction sa;    struct vt_mode vtm;    struct vt_stat stat;    if (vtswitch_initialised)        return 0;  /* shouldn't happen */    if (kbd_fd >= 0)        ttyfd = kbd_fd;    else {        ttyfd = open("/dev/tty0", O_RDONLY);        if (ttyfd == -1) {            fprintf (stderr, "Error can't open tty: %m.\n");            return -1;        }    }    ioctl (ttyfd, VT_GETSTATE, &stat);    current_vt = stat.v_active;    console_active = console_should_be_active = 1;    /* Hook the signals */    sigemptyset(&sa.sa_mask);    sigaddset(&sa.sa_mask, SIGIO); /* block async IO during the VT switch */    sa.sa_flags = 0;    sa.sa_handler = vt_switch_requested;    if ((sigaction(SIGRELVT, &sa, NULL) < 0) || (sigaction(SIGACQVT, &sa, NULL) < 0)) {        fprintf (stderr, "init_vtswitch: Unable to control VT switch.\n");        return -1;    }    /* Save old mode, take control, and arrange for the signals     * to be raised. */    ioctl(ttyfd, VT_GETMODE, &startup_vtmode);    vtm = startup_vtmode;    vtm.mode = VT_PROCESS;    vtm.relsig = SIGRELVT;    vtm.acqsig = SIGACQVT;    ioctl(ttyfd, VT_SETMODE, &vtm);    vtswitch_initialised = 1;    return 0;}/* vt_switch_requested: *  This is our signal handler; it gets called whenever a switch is *  requested, because either SIGRELVT or SIGACQVT is raised. */static void vt_switch_requested(int signo){    switch (signo) {        case SIGRELVT:            console_should_be_active = 0;            break;        case SIGACQVT:            console_should_be_active = 1;            break;        default:            return;    }    poll_console_switch();}/* poll_console_switch: *  Checks whether a switch is needed and not blocked; if so, *  makes the switch. */static void poll_console_switch (void){    if (console_active == console_should_be_active) return;    if (console_should_be_active)        come_back();    else        go_away();}/* come_back: *  Performs a switch back. */static void come_back (void){    int new_fd;    IAL_ResumeMouse();    if ((new_fd = IAL_ResumeKeyboard()) >= 0)        ttyfd = new_fd;    ioctl (ttyfd, VT_RELDISP, VT_ACKACQ);    console_active = 1;    __mg_switch_away = FALSE;    SendNotifyMessage (HWND_DESKTOP, MSG_PAINT, 0, 0);#ifndef _STAND_ALONE    ClientCanDrawNowEx (TRUE, NULL);#endif}/* go_away: *  Performs a switch away. */static void go_away (void){#ifndef _STAND_ALONE    OnlyMeCanDraw ();#endif    if (ioctl (ttyfd, VT_RELDISP, 1) == -1) {        fprintf (stderr, "Error can't switch away from VT: %m\n");        return;    }    console_active = 0;    __mg_switch_away = TRUE;    IAL_SuspendKeyboard();    IAL_SuspendMouse();}/*  done_vtswitch: *  Undoes the effect of `init_vtswitch'. */int done_vtswitch (int kbd_fd){    struct sigaction sa;    if (!vtswitch_initialised) return 0;  /* shouldn't really happen either */    /* !trout gfoot.  Must turn off the signals before unhooking them... */    ioctl (ttyfd, VT_SETMODE, &startup_vtmode);    sigemptyset (&sa.sa_mask);    sa.sa_handler = SIG_DFL;    sa.sa_flags = SA_RESTART;    sigaction (SIGRELVT, &sa, NULL);    sigaction (SIGACQVT, &sa, NULL);    vtswitch_initialised = 0;    if (ttyfd != kbd_fd)        close (ttyfd);    return 0;}int vtswitch_try(int vt) {    if (!vtswitch_initialised)        return 1;    if(vt == current_vt)         return 1;        ioctl(ttyfd, VT_ACTIVATE, vt);    return 0;}#endif /* _LITE_VERSION */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩99亚洲| 久久久亚洲国产美女国产盗摄| 国产一区欧美二区| 综合中文字幕亚洲| 精品少妇一区二区三区在线播放 | 亚洲综合男人的天堂| 久久综合色播五月| 777午夜精品免费视频| 91在线精品秘密一区二区| 精品在线免费观看| 亚洲国产精品影院| 自拍偷拍国产亚洲| 国产亚洲成av人在线观看导航| 7777精品久久久大香线蕉| 一本色道**综合亚洲精品蜜桃冫| 国内久久婷婷综合| 秋霞午夜av一区二区三区| 亚洲一区自拍偷拍| 亚洲色图20p| 国产精品二三区| 久久精品亚洲国产奇米99| 日韩欧美一级片| 91精品久久久久久久久99蜜臂| 91国产成人在线| 99re这里都是精品| 99视频一区二区三区| 粉嫩aⅴ一区二区三区四区| 国产一区二区三区电影在线观看| 日本欧美在线看| 首页综合国产亚洲丝袜| 亚洲高清视频中文字幕| 亚洲国产中文字幕| 亚洲国产成人精品视频| 亚洲国产乱码最新视频 | 麻豆91在线看| 日本不卡视频在线观看| 日韩成人dvd| 蜜臀久久久99精品久久久久久| 五月婷婷激情综合网| 亚洲18影院在线观看| 午夜精品久久久久久久久久久| 亚洲电影你懂得| 午夜欧美视频在线观看| 日韩国产欧美一区二区三区| 日韩一区精品字幕| 蜜桃视频一区二区| 国产精品一区2区| 成人做爰69片免费看网站| 丁香激情综合五月| 99精品国产一区二区三区不卡 | 欧美日韩精品一区二区三区蜜桃 | 久久蜜桃一区二区| 久久人人97超碰com| 国产日韩欧美高清在线| 国产精品对白交换视频| 亚洲欧美精品午睡沙发| 亚洲成人动漫av| 美女www一区二区| 国产不卡视频在线观看| www.亚洲人| 欧美日韩国产小视频在线观看| 制服丝袜中文字幕亚洲| 精品国产91久久久久久久妲己| 国产精品午夜春色av| 亚洲另类一区二区| 美女一区二区在线观看| 国产精品99久| 欧美在线|欧美| 精品久久久久香蕉网| 国产精品久久久久天堂| 五月天亚洲婷婷| 国产成人精品aa毛片| 色综合 综合色| 日韩视频国产视频| 国产精品美女久久久久久| 亚洲影视资源网| 国产一二精品视频| 在线观看中文字幕不卡| 精品国产露脸精彩对白| 亚洲欧美日韩一区| 久草中文综合在线| 91丨porny丨国产| 精品国产一区二区精华| 亚洲精品菠萝久久久久久久| 久久电影网站中文字幕| 色婷婷一区二区| 精品国产三级电影在线观看| 一区二区三区在线看| 美女诱惑一区二区| 91黄色免费看| 国产婷婷色一区二区三区四区| 亚洲综合视频网| 精品一区精品二区高清| 91电影在线观看| 中文字幕乱码日本亚洲一区二区| 午夜日韩在线电影| 99精品视频免费在线观看| 欧美成人精品1314www| 亚洲无人区一区| 99精品视频一区二区| 久久久三级国产网站| 午夜精品久久久久久久99水蜜桃| 欧美一区二区黄色| 最新久久zyz资源站| 精品无人区卡一卡二卡三乱码免费卡| 在线视频综合导航| 中文在线资源观看网站视频免费不卡| 日本欧美大码aⅴ在线播放| 91色在线porny| 国产日韩精品一区二区三区| 麻豆中文一区二区| 欧美美女直播网站| 亚洲视频资源在线| 国产成人精品aa毛片| 2021久久国产精品不只是精品| 日韩综合在线视频| 精品1区2区3区| 一个色妞综合视频在线观看| 成人av电影在线观看| 久久久久久麻豆| 久久精品国产免费看久久精品| 欧美高清视频www夜色资源网| 一区二区三区视频在线看| 99v久久综合狠狠综合久久| 国产免费观看久久| 国产一区二区精品久久91| 欧美精品一区男女天堂| 麻豆免费精品视频| 日韩精品一区二区三区在线播放 | 蜜桃视频一区二区| 日韩无一区二区| 免费看日韩精品| 9191久久久久久久久久久| 首页国产丝袜综合| 91精品国产综合久久精品麻豆| 亚洲国产wwwccc36天堂| 欧美理论在线播放| 日本不卡一二三区黄网| 日韩欧美一区二区免费| 精油按摩中文字幕久久| 久久综合色鬼综合色| 国产激情一区二区三区四区 | 亚洲综合免费观看高清完整版在线| av一二三不卡影片| 亚洲人妖av一区二区| 色婷婷久久久亚洲一区二区三区 | 老司机精品视频导航| 精品久久99ma| 国产精品资源网站| 亚洲欧洲日韩在线| 在线观看一区不卡| 午夜精品123| 精品国产乱码久久久久久图片| 国产精品伊人色| 亚洲天堂网中文字| 欧美裸体一区二区三区| 久久99久久久久| 中文字幕免费不卡| 在线观看亚洲精品视频| 麻豆精品国产91久久久久久| 精品国产乱码久久久久久夜甘婷婷 | 综合欧美一区二区三区| 欧美日韩一区在线| 久久精品国产99国产| 国产欧美一区二区精品性色| 99精品国产99久久久久久白柏| 一区二区在线观看视频| 欧美一区二区大片| 国产v日产∨综合v精品视频| 一区二区三区视频在线看| 日韩精品中文字幕在线不卡尤物| 国产成人av一区二区三区在线观看| 亚洲图片激情小说| 91精品在线免费| 国产成人免费9x9x人网站视频| 亚洲最大成人网4388xx| 精品国产精品网麻豆系列| 99久久综合国产精品| 人人狠狠综合久久亚洲| 国产欧美综合在线| 8v天堂国产在线一区二区| 成人av小说网| 日本成人中文字幕在线视频| 成人免费一区二区三区在线观看| 欧美浪妇xxxx高跟鞋交| 懂色av一区二区在线播放| 无码av免费一区二区三区试看 | 亚洲国产一二三| 日本一区二区三区在线不卡| 欧美日韩国产高清一区二区 | 国产婷婷色一区二区三区四区| 欧洲一区二区三区免费视频| 国产在线播放一区三区四| 夜夜嗨av一区二区三区| 国产精品水嫩水嫩| 日韩视频在线一区二区| 91美女视频网站| 国产精品99久久久久久宅男| 日韩av二区在线播放| 亚洲一区国产视频|