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

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

?? vtswitch-lite.c

?? minigui的開(kāi)發(fā)程序
?? 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一区二区三区免费野_久草精品视频
寂寞少妇一区二区三区| 国产一区二区三区综合| 久久久精品综合| 欧美亚洲一区二区在线观看| 国产露脸91国语对白| 亚洲精品日韩一| 久久久99久久| 91精品国产综合久久香蕉的特点| 不卡欧美aaaaa| 国产乱国产乱300精品| 水野朝阳av一区二区三区| 中文字幕中文字幕中文字幕亚洲无线| 日韩一区二区三区在线观看| 一本大道久久精品懂色aⅴ| 国产成a人亚洲精| 看电视剧不卡顿的网站| 亚洲成人自拍偷拍| 亚洲免费毛片网站| 国产欧美精品一区aⅴ影院| 欧美一区二区三区日韩视频| 欧美日韩国产电影| 91激情五月电影| 91在线云播放| av在线这里只有精品| 高清在线不卡av| 久久国产免费看| 久久电影网站中文字幕 | 视频一区免费在线观看| 一区二区三区**美女毛片| 国产精品九色蝌蚪自拍| 国产欧美精品一区二区色综合朱莉| 欧美电影免费提供在线观看| 宅男在线国产精品| 欧美一区二区三区在线电影| 91精品久久久久久久99蜜桃| 91麻豆精品91久久久久同性| 制服丝袜激情欧洲亚洲| 欧美裸体bbwbbwbbw| 制服丝袜亚洲色图| 日韩欧美国产小视频| 日韩欧美一级精品久久| 日韩视频一区二区| 日韩欧美你懂的| 精品国产一区二区亚洲人成毛片| 日韩欧美国产三级电影视频| 精品国产污网站| 久久精品欧美日韩精品| 中文字幕一区免费在线观看| 中文字幕一区二区三区四区| 亚洲免费在线视频一区 二区| 亚洲欧美日韩国产一区二区三区 | 亚洲国产成人91porn| 亚洲va中文字幕| 青青草国产精品亚洲专区无| 毛片一区二区三区| 国产经典欧美精品| 91在线视频官网| 欧美三级乱人伦电影| 91精品在线免费| 26uuu另类欧美| 国产精品―色哟哟| 一区二区三区四区在线| 爽好多水快深点欧美视频| 免费观看一级欧美片| 国产精品一品二品| 日本黄色一区二区| 欧美一区二区三区播放老司机| xvideos.蜜桃一区二区| 国产精品入口麻豆九色| 亚洲一区二区三区影院| 久久精品国产澳门| www.欧美日韩| 欧美一区二区人人喊爽| 久久久久久**毛片大全| 亚洲一区二区三区四区的| 精品一二三四区| 91老师片黄在线观看| 日韩视频永久免费| 国产精品沙发午睡系列990531| 水野朝阳av一区二区三区| 国产超碰在线一区| 777亚洲妇女| 亚洲欧洲一区二区在线播放| 奇米色一区二区三区四区| 成人免费看片app下载| 欧美肥妇free| 亚洲日本在线看| 美女www一区二区| 在线观看区一区二| 久久久久久久久久美女| 午夜日韩在线电影| aa级大片欧美| 久久无码av三级| 亚欧色一区w666天堂| va亚洲va日韩不卡在线观看| 日韩三级电影网址| 曰韩精品一区二区| 国产成人精品综合在线观看 | 午夜精品视频一区| 国产69精品一区二区亚洲孕妇| 欧美久久久久久久久久| 亚洲欧美另类久久久精品2019| 韩国毛片一区二区三区| 欧美日本乱大交xxxxx| 18欧美亚洲精品| 豆国产96在线|亚洲| 日韩欧美国产不卡| 天堂蜜桃91精品| 欧美亚洲愉拍一区二区| 亚洲色图欧美偷拍| 国产福利一区二区三区在线视频| 日韩亚洲欧美成人一区| 性久久久久久久| 91成人免费在线| 亚洲欧洲精品天堂一级| 国产精品99久久久久久久vr | 精品视频免费在线| 最近日韩中文字幕| 国产乱人伦精品一区二区在线观看 | 91精品国产综合久久精品app| 亚洲激情网站免费观看| av在线不卡电影| 中文字幕不卡三区| 国产在线精品不卡| 久久久无码精品亚洲日韩按摩| 免费在线看成人av| 欧美一区午夜精品| 蜜臀久久久久久久| 欧美一级国产精品| 美日韩一区二区三区| 日韩欧美专区在线| 久久99国产精品久久| 日韩手机在线导航| 国精产品一区一区三区mba视频 | 久久精品国产精品亚洲红杏| 欧美日韩1234| 蜜桃av一区二区三区电影| 91精品国产91久久久久久最新毛片| 天堂成人免费av电影一区| 欧美猛男gaygay网站| 亚洲电影激情视频网站| 91精品国产综合久久小美女| 男女视频一区二区| 久久美女高清视频| www.欧美日韩国产在线| 亚洲免费资源在线播放| 欧美人成免费网站| 美女免费视频一区| 亚洲精品一线二线三线无人区| 国产一区二区三区电影在线观看 | 日韩激情一区二区| 日韩欧美在线123| 国产精品亚洲第一区在线暖暖韩国 | 日韩av中文在线观看| 欧美一区二区免费视频| 国产成人啪免费观看软件| 一区视频在线播放| 欧美日韩国产高清一区| 精品一区二区免费在线观看| 国产精品每日更新| 欧美日韩国产片| 国产乱码精品一品二品| 亚洲视频一二区| 91精品视频网| 成人免费观看av| 天天综合网 天天综合色| 精品国产制服丝袜高跟| 色综合激情久久| 久草在线在线精品观看| 中文字幕欧美区| 欧美日韩国产色站一区二区三区| 国内精品伊人久久久久av一坑 | 久久久亚洲欧洲日产国码αv| 不卡影院免费观看| 日韩综合在线视频| 欧美韩国日本不卡| 欧美日韩高清一区| 顶级嫩模精品视频在线看| 亚洲综合色区另类av| 久久综合一区二区| 欧美亚洲国产一区二区三区va| 国产一区二区在线免费观看| 亚洲黄色小视频| 久久综合狠狠综合久久激情| 欧洲生活片亚洲生活在线观看| 久久99深爱久久99精品| 一区二区成人在线观看| 久久久久久免费毛片精品| 欧美三区在线观看| 岛国av在线一区| 日本强好片久久久久久aaa| 国产精品久久久久天堂| 欧美xxxx老人做受| 欧美日韩色综合| 91在线国产观看| 国产一区二区三区美女| 日本欧美一区二区| 亚洲自拍都市欧美小说| 中文字幕在线不卡| 久久蜜桃香蕉精品一区二区三区|