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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vtswitch-lite.c

?? 該源碼是miniGUI的全部代碼
?? C
字號:
/*** $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 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品免费| 91麻豆6部合集magnet| 亚洲日本一区二区| 日韩午夜电影在线观看| 99综合电影在线视频| 韩国中文字幕2020精品| 亚洲最大色网站| 国产精品久久久久国产精品日日 | 99久久国产综合精品女不卡| 美女脱光内衣内裤视频久久网站| 国产精品美女视频| 久久综合国产精品| 欧美一区二区成人| 欧美在线你懂得| 成人国产精品免费网站| 精品一区二区免费| 日本vs亚洲vs韩国一区三区二区| 一区二区理论电影在线观看| 国产欧美日韩在线看| 日韩一区二区三区视频在线观看| 91福利资源站| 91免费版pro下载短视频| 国产激情视频一区二区在线观看| 久久激情五月婷婷| 日韩国产在线一| 五月天国产精品| 亚洲成年人影院| 亚洲成人av福利| 亚洲一二三四久久| 亚洲一级片在线观看| 一区二区三区在线观看动漫| 亚洲人精品午夜| 亚洲激情自拍偷拍| 亚洲激情五月婷婷| 亚洲综合精品久久| 午夜天堂影视香蕉久久| 亚洲一二三专区| 午夜久久电影网| 日韩国产在线一| 男女男精品视频网| 国产一区二区三区不卡在线观看| 久久99精品网久久| 国产精品123| av在线一区二区三区| 99久久久国产精品| 欧美性大战久久久久久久| 欧美在线不卡视频| 51精品久久久久久久蜜臀| 9191久久久久久久久久久| 91精品在线观看入口| 精品伦理精品一区| 国产日韩欧美综合一区| 亚洲欧美在线aaa| 亚洲九九爱视频| 日韩中文字幕一区二区三区| 奇米亚洲午夜久久精品| 精彩视频一区二区| 成人性生交大片| 色狠狠桃花综合| 日韩一卡二卡三卡国产欧美| 久久免费视频色| 综合久久综合久久| 香蕉乱码成人久久天堂爱免费| 日本vs亚洲vs韩国一区三区二区 | 丁香激情综合五月| 91麻豆国产福利精品| 在线免费观看日韩欧美| 日韩色视频在线观看| 国产精品情趣视频| 香蕉成人啪国产精品视频综合网| 九九热在线视频观看这里只有精品| 豆国产96在线|亚洲| 欧美性生活影院| 精品久久久久久亚洲综合网| 国产精品麻豆欧美日韩ww| 亚洲一区二区四区蜜桃| 黑人巨大精品欧美一区| 91麻豆福利精品推荐| 欧美一区二区三区公司| 亚洲国产高清不卡| 亚洲第一在线综合网站| 国产精品影视天天线| 欧美午夜片在线看| 国产校园另类小说区| 亚洲国产日韩a在线播放性色| 九九国产精品视频| 色综合中文字幕国产 | 日本aⅴ精品一区二区三区 | 欧美做爰猛烈大尺度电影无法无天| 在线不卡a资源高清| 国产精品伦理一区二区| 热久久一区二区| 在线欧美一区二区| 欧美经典一区二区| 日韩av一区二| 色综合久久久久综合体| 久久久精品tv| 日韩精品欧美精品| 色偷偷成人一区二区三区91| 欧美mv日韩mv国产| 久久黄色级2电影| 色婷婷国产精品综合在线观看| 精品免费国产一区二区三区四区| 有坂深雪av一区二区精品| 国产精品一区二区久久精品爱涩| 欧美乱妇15p| 亚洲免费观看高清完整版在线| 国产精一品亚洲二区在线视频| 欧美日韩一区高清| 亚洲女人小视频在线观看| 国产精品一区二区91| 日韩一区二区三区电影| 亚洲国产另类精品专区| 色噜噜狠狠一区二区三区果冻| 日本一区二区动态图| 国产精品一二三| 精品国产91洋老外米糕| 日韩精品视频网| 欧美日本一区二区三区| 亚洲人成伊人成综合网小说| 成人小视频免费在线观看| 久久精品亚洲麻豆av一区二区| 国精品**一区二区三区在线蜜桃| 日韩一级免费一区| 男人的j进女人的j一区| 91精品国模一区二区三区| 五月婷婷激情综合| 欧美喷潮久久久xxxxx| 亚洲电影一级片| 欧美理论在线播放| 午夜一区二区三区视频| 欧美久久久久久久久| 亚洲大尺度视频在线观看| 欧美无乱码久久久免费午夜一区| 亚洲一区二区在线观看视频 | 精品国产成人系列| 蜜桃视频在线一区| 欧美成人精品1314www| 极品美女销魂一区二区三区| 久久影视一区二区| 国产黄色精品视频| 中文字幕在线不卡一区| 91玉足脚交白嫩脚丫在线播放| 亚洲私人影院在线观看| 91麻豆swag| 亚欧色一区w666天堂| 欧美精品在线一区二区三区| 奇米精品一区二区三区在线观看| 精品久久久久久久久久久久久久久| 国内精品国产成人| 国产精品沙发午睡系列990531| 成人av资源下载| 亚洲另类中文字| 欧美精品vⅰdeose4hd| 久久精品国产秦先生| 久久久av毛片精品| 99riav一区二区三区| 亚洲午夜精品久久久久久久久| 欧美久久一二三四区| 国模套图日韩精品一区二区| 中文字幕精品一区| 色偷偷久久一区二区三区| 丝袜亚洲另类欧美| 国产婷婷一区二区| 欧美日精品一区视频| 国内成+人亚洲+欧美+综合在线| 国产精品久久久久毛片软件| 欧美日韩视频在线第一区| 国产在线国偷精品产拍免费yy| 国产精品久久久久影视| 欧美美女激情18p| 国产精品白丝av| 亚洲二区在线观看| 久久精品亚洲麻豆av一区二区| 色噜噜夜夜夜综合网| 精品一区二区av| 亚洲最大色网站| 国产视频一区二区在线| 欧美亚洲高清一区| 国产在线精品视频| 亚洲一区二区欧美激情| 国产性天天综合网| 欧美精品久久久久久久久老牛影院| 国产91精品精华液一区二区三区| 五月天丁香久久| 国产精品国模大尺度视频| 日韩一区二区精品| 91美女精品福利| 国产成人三级在线观看| 五月综合激情婷婷六月色窝| 国产精品福利一区| 欧美va天堂va视频va在线| 欧美视频精品在线观看| 国产99精品视频| 久久精品二区亚洲w码| 亚洲激情中文1区| 国产精品国产三级国产普通话99| 日韩欧美高清一区| 91成人免费电影| av在线播放一区二区三区|