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

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

?? vtswitch-lite.c

?? mini gui 1.6.8 lib and source
?? 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一区二区三区免费野_久草精品视频
天天av天天翘天天综合网色鬼国产| 国产精品久久久久久久久免费丝袜 | 日本一区二区视频在线观看| 欧美一区二区三区白人| 欧美精品丝袜久久久中文字幕| 91啪九色porn原创视频在线观看| 99精品视频一区二区| 91在线免费视频观看| 91首页免费视频| 在线视频观看一区| 91丨porny丨在线| 91久久一区二区| 欧美日韩午夜精品| 日韩亚洲欧美在线| xfplay精品久久| 国产精品久久久久久福利一牛影视| 国产精品九色蝌蚪自拍| 依依成人综合视频| 三级不卡在线观看| 日韩精品91亚洲二区在线观看| 青娱乐精品视频在线| 久久97超碰国产精品超碰| 国产成人av一区二区三区在线观看| 成人av影院在线| 欧美日韩一区成人| 久久亚洲精品小早川怜子| 中文字幕日韩一区| 日韩av一级片| 国产成人在线视频免费播放| 色综合天天综合网天天狠天天| 欧美精品亚洲二区| 久久精品人人爽人人爽| 亚洲精品乱码久久久久久久久| 婷婷激情综合网| 高清国产一区二区三区| 欧美日韩一区中文字幕| 久久久久久久久久久久久久久99 | 91激情在线视频| 欧美一区二区三级| 亚洲欧洲一区二区三区| 日韩成人午夜精品| 91在线视频播放| 久久久久久久久久电影| 亚洲欧美日韩国产成人精品影院 | 久久亚洲捆绑美女| 亚洲国产精品一区二区www在线 | 亚洲一区二区综合| 国产美女视频一区| 91精品国产综合久久香蕉麻豆 | 奇米亚洲午夜久久精品| 99久久综合99久久综合网站| 91精品黄色片免费大全| 亚洲你懂的在线视频| 韩日av一区二区| 在线观看日韩高清av| 中文字幕+乱码+中文字幕一区| 美女性感视频久久| 欧美日本一区二区| 亚洲欧洲日韩在线| 国产激情精品久久久第一区二区 | 日韩精品亚洲一区| 91麻豆成人久久精品二区三区| 久久蜜臀精品av| 狠狠色综合播放一区二区| 欧美日韩你懂得| 亚洲精品国产成人久久av盗摄| 国产精品1区二区.| 久久综合精品国产一区二区三区 | 欧美视频一区二区三区在线观看| 中文字幕乱码久久午夜不卡| 国产一区二区导航在线播放| 欧美一级欧美一级在线播放| 丝袜美腿成人在线| 91极品美女在线| 亚洲自拍都市欧美小说| 日本丰满少妇一区二区三区| 亚洲激情校园春色| 色8久久精品久久久久久蜜| 亚洲欧美自拍偷拍| 91视频观看视频| 亚洲精品中文在线影院| 91福利视频在线| 亚洲一区二区三区不卡国产欧美| 在线观看视频91| 午夜精品福利在线| 日韩欧美色综合网站| 国产一区二区在线视频| 国产日韩一级二级三级| 成人高清视频在线观看| 亚洲激情图片一区| 91精品国产综合久久小美女| 极品少妇xxxx精品少妇| 久久久无码精品亚洲日韩按摩| 丁香桃色午夜亚洲一区二区三区| 中文字幕二三区不卡| 成人av高清在线| 一区二区三区四区在线播放| 777久久久精品| 麻豆精品视频在线观看视频| 国产日韩精品一区二区三区 | 5月丁香婷婷综合| 久久aⅴ国产欧美74aaa| 国产精品二三区| 欧美日本视频在线| 懂色av一区二区夜夜嗨| 午夜久久久久久电影| 久久久久国产精品麻豆| 在线观看成人免费视频| 精品一区二区三区久久| 最新高清无码专区| 精品欧美一区二区久久| 色哟哟亚洲精品| 激情偷乱视频一区二区三区| 国产精品国产三级国产有无不卡| 欧美猛男超大videosgay| 狠狠色丁香久久婷婷综| 亚洲一区二区黄色| 国产清纯在线一区二区www| 欧美日韩一区二区三区在线看| 国产成人亚洲综合色影视| 日日夜夜精品视频天天综合网| 精品国产凹凸成av人导航| 日本久久电影网| 国产成人综合亚洲网站| 丝袜亚洲精品中文字幕一区| 18成人在线观看| www日韩大片| 日韩一区二区高清| 欧美天堂亚洲电影院在线播放| 成人永久免费视频| 国内精品自线一区二区三区视频| 亚洲永久精品大片| 亚洲欧美一区二区在线观看| 26uuu色噜噜精品一区二区| 欧美日韩精品是欧美日韩精品| 99re成人精品视频| 成人激情免费视频| 国产一区二区三区香蕉| 九九视频精品免费| 人妖欧美一区二区| 婷婷中文字幕综合| 性欧美大战久久久久久久久| 亚洲欧美日韩国产综合在线| 中文字幕一区二区三区在线不卡 | 欧美一二三区在线| 欧美无人高清视频在线观看| 色婷婷综合久久久久中文一区二区| 国产裸体歌舞团一区二区| 麻豆视频观看网址久久| 日本不卡高清视频| 日本不卡一二三区黄网| 日韩主播视频在线| 免播放器亚洲一区| 久久成人av少妇免费| 麻豆91小视频| 精品一区二区在线免费观看| 老司机一区二区| 国产一区二区不卡在线| 丁香婷婷深情五月亚洲| 91小视频在线观看| 日本黄色一区二区| 欧美中文字幕亚洲一区二区va在线| 欧美性做爰猛烈叫床潮| 欧美日韩一区二区三区不卡| 欧美精品一二三| 久久亚洲综合色一区二区三区| 久久精品视频免费| 亚洲欧美一区二区三区国产精品| 亚洲乱码国产乱码精品精的特点| 亚洲尤物在线视频观看| 青青国产91久久久久久| 国产精品综合在线视频| 97国产精品videossex| 欧美日韩精品三区| 久久蜜桃av一区精品变态类天堂| 国产精品系列在线| 亚洲福利国产精品| 极品少妇xxxx精品少妇偷拍 | 日韩一区二区免费视频| 26uuu亚洲综合色欧美| ●精品国产综合乱码久久久久| 一区二区三区中文免费| 蜜桃视频在线一区| 国产盗摄一区二区| 色综合久久中文字幕综合网| 91精品国产免费| 国产精品蜜臀在线观看| 亚洲香肠在线观看| 国产成人精品三级| 欧美乱熟臀69xxxxxx| 国产偷国产偷精品高清尤物| 亚洲综合在线免费观看| 国产一二精品视频| 欧美丰满一区二区免费视频| 国产精品美女久久久久aⅴ| 视频一区二区三区中文字幕| 成人精品小蝌蚪| 欧美一级夜夜爽| 亚洲国产精品一区二区www在线 | 蓝色福利精品导航|