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

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

?? xserverdesktop.cc

?? Informix Table extraction queries have been optimized
?? CC
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved. *  * This 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 software 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 software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, * USA. *///// XserverDesktop.cxx//#include <stdio.h>#include <strings.h>#include <unistd.h>#include <pwd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/utsname.h>#include <network/TcpSocket.h>#include <rfb/Exception.h>#include <rfb/VNCServerST.h>#include <rfb/HTTPServer.h>#include <rfb/LogWriter.h>#include <rfb/Configuration.h>#include "XserverDesktop.h"#include "vncExtInit.h"extern "C" {#define public c_public#define class c_class  // windowTable is in globals.h in XFree 4, but not in XFree 3 unfortunatelyextern WindowPtr *WindowTable;extern char *display;#include "inputstr.h"#include "servermd.h"#include "colormapst.h"#include "resource.h"#include "cursorstr.h"#include "windowstr.h"#define XK_CYRILLIC#include "keysym.h"#undef public#undef class}using namespace rfb;using namespace network;static LogWriter vlog("XserverDesktop");rfb::IntParameter deferUpdateTime("DeferUpdate",                                  "Time in milliseconds to defer updates",40);rfb::BoolParameter alwaysSetDeferUpdateTimer("AlwaysSetDeferUpdateTimer",                  "Always reset the defer update timer on every change",false);IntParameter queryConnectTimeout("QueryConnectTimeout",                                 "Number of seconds to show the Accept Connection dialog before "                                 "rejecting the connection",                                 10);static KeyCode KeysymToKeycode(KeySymsPtr keymap, KeySym ks, int* col);static rdr::U8 reverseBits[] = {  0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10, 0x90, 0x50, 0xd0,  0x30, 0xb0, 0x70, 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,  0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04, 0x84, 0x44, 0xc4,  0x24, 0xa4, 0x64, 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,  0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c, 0x9c, 0x5c, 0xdc,  0x3c, 0xbc, 0x7c, 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,  0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a, 0x8a, 0x4a, 0xca,  0x2a, 0xaa, 0x6a, 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,  0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16, 0x96, 0x56, 0xd6,  0x36, 0xb6, 0x76, 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,  0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 0x01, 0x81, 0x41, 0xc1,  0x21, 0xa1, 0x61, 0xe1, 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,  0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 0x19, 0x99, 0x59, 0xd9,  0x39, 0xb9, 0x79, 0xf9, 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,  0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 0x0d, 0x8d, 0x4d, 0xcd,  0x2d, 0xad, 0x6d, 0xed, 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,  0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 0x13, 0x93, 0x53, 0xd3,  0x33, 0xb3, 0x73, 0xf3, 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,  0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 0x07, 0x87, 0x47, 0xc7,  0x27, 0xa7, 0x67, 0xe7, 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,  0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 0x1f, 0x9f, 0x5f, 0xdf,  0x3f, 0xbf, 0x7f, 0xff};class FileHTTPServer : public rfb::HTTPServer {public:  FileHTTPServer(XserverDesktop* d) : desktop(d) {}  virtual ~FileHTTPServer() {}  virtual rdr::InStream* getFile(const char* name, const char** contentType,                                 int* contentLength, time_t* lastModified)  {    if (name[0] != '/' || strstr(name, "..") != 0) {      vlog.info("http request was for invalid file name");      return 0;    }    if (strcmp(name, "/") == 0) name = "/index.vnc";    CharArray httpDirStr(httpDir.getData());    CharArray fname(strlen(httpDirStr.buf)+strlen(name)+1);    sprintf(fname.buf, "%s%s", httpDirStr.buf, name);    int fd = open(fname.buf, O_RDONLY);    if (fd < 0) return 0;    rdr::InStream* is = new rdr::FdInStream(fd, -1, 0, true);    *contentType = guessContentType(name, *contentType);    if (strlen(name) > 4 && strcasecmp(&name[strlen(name)-4], ".vnc") == 0) {      is = new rdr::SubstitutingInStream(is, desktop, 20);      *contentType = "text/html";    } else {      struct stat st;      if (fstat(fd, &st) == 0) {        *contentLength = st.st_size;        *lastModified = st.st_mtime;      }    }    return is;  }  XserverDesktop* desktop;};XserverDesktop::XserverDesktop(ScreenPtr pScreen_,                               network::TcpListener* listener_,                               network::TcpListener* httpListener_,                               const char* name, void* fbptr)  : pScreen(pScreen_), deferredUpdateTimer(0), dummyTimer(0),    server(0), httpServer(0),    listener(listener_), httpListener(httpListener_),    cmap(0), deferredUpdateTimerSet(false),    grabbing(false), ignoreHooks_(false), directFbptr(fbptr != 0),    oldButtonMask(0),    queryConnectId(0){  int i;  format.depth = pScreen->rootDepth;  for (i = 0; i < screenInfo.numPixmapFormats; i++) {    if (screenInfo.formats[i].depth == format.depth) {      format.bpp = screenInfo.formats[i].bitsPerPixel;      break;    }  }  if (i == screenInfo.numPixmapFormats) {    fprintf(stderr,"no pixmap format for root depth???\n");    abort();  }  format.bigEndian = (screenInfo.imageByteOrder == MSBFirst);  VisualPtr vis;  for (i = 0; i < pScreen->numVisuals; i++) {    if (pScreen->visuals[i].vid == pScreen->rootVisual) {      vis = &pScreen->visuals[i];      break;    }  }  if (i == pScreen->numVisuals) {    fprintf(stderr,"no visual rec for root visual???\n");    abort();  }  format.trueColour = (vis->c_class == TrueColor);  if (!format.trueColour && format.bpp != 8)    throw rfb::Exception("X server uses unsupported visual");  format.redShift   = ffs(vis->redMask) - 1;  format.greenShift = ffs(vis->greenMask) - 1;  format.blueShift  = ffs(vis->blueMask) - 1;  format.redMax     = vis->redMask   >> format.redShift;  format.greenMax   = vis->greenMask >> format.greenShift;  format.blueMax    = vis->blueMask  >> format.blueShift;  width_ = pScreen->width;  height_ = pScreen->height;  if (fbptr)    data = (rdr::U8*)fbptr;  else    data = new rdr::U8[pScreen->width * pScreen->height * (format.bpp/8)];  colourmap = this;  serverReset(pScreen);  server = new VNCServerST(name, this);  server->setPixelBuffer(this);  server->setQueryConnectionHandler(this);  if (httpListener)    httpServer = new FileHTTPServer(this);}XserverDesktop::~XserverDesktop(){  if (!directFbptr)    delete [] data;  TimerFree(deferredUpdateTimer);  TimerFree(dummyTimer);  delete httpServer;  delete server;}void XserverDesktop::serverReset(ScreenPtr pScreen_){  pScreen = pScreen_;  XID* ids = new XID[pScreen->maxInstalledCmaps];  int nmaps = (*pScreen->ListInstalledColormaps)(pScreen, ids);  cmap = (ColormapPtr)LookupIDByType(ids[0], RT_COLORMAP);  delete [] ids;}char* XserverDesktop::substitute(const char* varName){  if (strcmp(varName, "$$") == 0) {    return rfb::strDup("$");  }  if (strcmp(varName, "$PORT") == 0) {    char* str = new char[10];    sprintf(str, "%d", listener ? listener->getMyPort() : 0);    return str;  }  if (strcmp(varName, "$WIDTH") == 0) {    char* str = new char[10];    sprintf(str, "%d", width());    return str;  }  if (strcmp(varName, "$HEIGHT") == 0) {    char* str = new char[10];    sprintf(str, "%d", height());    return str;  }  if (strcmp(varName, "$APPLETWIDTH") == 0) {    char* str = new char[10];    sprintf(str, "%d", width());    return str;  }  if (strcmp(varName, "$APPLETHEIGHT") == 0) {    char* str = new char[10];    sprintf(str, "%d", height() + 32);    return str;  }  if (strcmp(varName, "$DESKTOP") == 0) {    return rfb::strDup(server->getName());  }  if (strcmp(varName, "$DISPLAY") == 0) {    struct utsname uts;    uname(&uts);    char* str = new char[256];    strncat(str, uts.nodename, 240);    strcat(str, ":");    strncat(str, display, 10);    return str;  }  if (strcmp(varName, "$USER") == 0) {    struct passwd* user = getpwuid(getuid());    return rfb::strDup(user ? user->pw_name : "?");  }  return 0;}rfb::VNCServerST::queryResultXserverDesktop::queryConnection(network::Socket* sock,                                const char* userName,                                char** reason) {  if (queryConnectId) {    *reason = strDup("Another connection is currently being queried.");    return rfb::VNCServerST::REJECT;  }  queryConnectAddress.replaceBuf(sock->getPeerAddress());  if (!userName)    userName = "(anonymous)";  queryConnectUsername.replaceBuf(strDup(userName));  queryConnectId = sock;  vncQueryConnect(this, sock);  return rfb::VNCServerST::PENDING;}void XserverDesktop::setColormap(ColormapPtr cmap_){  if (cmap != cmap_) {    cmap = cmap_;    setColourMapEntries(0, 0);  }}void XserverDesktop::setColourMapEntries(ColormapPtr pColormap, int ndef,                                         xColorItem* pdef){  if (cmap != pColormap || ndef <= 0) return;  int first = pdef[0].pixel;  int n = 1;  for (int i = 1; i < ndef; i++) {    if (first + n == pdef[i].pixel) {      n++;    } else {      setColourMapEntries(first, n);      first = pdef[i].pixel;      n = 1;    }  }  setColourMapEntries(first, n);}void XserverDesktop::setColourMapEntries(int firstColour, int nColours){  try {    server->setColourMapEntries(firstColour, nColours);  } catch (rdr::Exception& e) {    vlog.error("XserverDesktop::setColourMapEntries: %s",e.str());  }}void XserverDesktop::bell(){  server->bell();}void XserverDesktop::serverCutText(const char* str, int len){  try {    server->serverCutText(str, len);  } catch (rdr::Exception& e) {    vlog.error("XserverDesktop::serverCutText: %s",e.str());  }}void XserverDesktop::setCursor(CursorPtr cursor){  try {    int w = cursor->bits->width;    int h = cursor->bits->height;    rdr::U8* cursorData = new rdr::U8[w * h * (getPF().bpp / 8)];    xColorItem fg, bg;    fg.red   = cursor->foreRed;    fg.green = cursor->foreGreen;    fg.blue  = cursor->foreBlue;    FakeAllocColor(cmap, &fg);    bg.red   = cursor->backRed;    bg.green = cursor->backGreen;    bg.blue  = cursor->backBlue;    FakeAllocColor(cmap, &bg);    FakeFreeColor(cmap, fg.pixel);    FakeFreeColor(cmap, bg.pixel);    int xMaskBytesPerRow = BitmapBytePad(w);    for (int y = 0; y < h; y++) {      for (int x = 0; x < w; x++) {        int byte = y * xMaskBytesPerRow + x / 8;#if (BITMAP_BIT_ORDER == MSBFirst)        int bit = 7 - x % 8;#else        int bit = x % 8;#endif        switch (getPF().bpp) {        case 8:          ((rdr::U8*)cursorData)[y * w + x]            = (cursor->bits->source[byte] & (1 << bit)) ? fg.pixel : bg.pixel;          break;        case 16:          ((rdr::U16*)cursorData)[y * w + x]            = (cursor->bits->source[byte] & (1 << bit)) ? fg.pixel : bg.pixel;          break;        case 32:          ((rdr::U32*)cursorData)[y * w + x]            = (cursor->bits->source[byte] & (1 << bit)) ? fg.pixel : bg.pixel;          break;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品进线69影院| 精品国精品国产| 亚洲日本欧美天堂| 99国产精品国产精品久久| 最新热久久免费视频| 色婷婷综合久久久| 有坂深雪av一区二区精品| 91官网在线观看| 日韩激情视频在线观看| 精品国产伦一区二区三区观看方式| 韩日欧美一区二区三区| 亚洲国产高清不卡| 91浏览器打开| 免费在线一区观看| 国产欧美一区二区精品性色超碰| 波多野洁衣一区| 亚洲国产aⅴ天堂久久| 91精品国产免费| 丁香激情综合国产| 亚洲一区二区三区四区不卡| 日韩欧美另类在线| 91在线视频在线| 男女激情视频一区| 国产精品成人免费在线| 91国偷自产一区二区三区观看| 日日夜夜免费精品| 久久久精品tv| 色八戒一区二区三区| 日本美女视频一区二区| 国产欧美日韩视频一区二区| 在线一区二区三区| 国产一区二区成人久久免费影院| 亚洲激情图片qvod| 2021国产精品久久精品| 色国产综合视频| 国产成人免费视频网站 | 天堂va蜜桃一区二区三区漫画版 | 91无套直看片红桃| 久久精品国产色蜜蜜麻豆| 欧美国产精品一区二区三区| 欧美日韩国产不卡| 91亚洲精华国产精华精华液| 久久99国产乱子伦精品免费| 亚洲一区二区中文在线| 国产女同互慰高潮91漫画| 欧美一个色资源| 日本韩国欧美一区二区三区| 丁香六月综合激情| 精品一区二区国语对白| 亚洲午夜影视影院在线观看| 国产精品国产三级国产aⅴ入口| 日韩一区二区不卡| 欧美日韩一级二级三级| 色综合天天综合色综合av | 欧美电影免费观看高清完整版在| 欧美影院一区二区| caoporm超碰国产精品| 国产一区二区三区| 蜜臀av一区二区在线观看| 一区二区三区小说| 椎名由奈av一区二区三区| 国产午夜一区二区三区| 久久久久一区二区三区四区| 日韩欧美国产三级| 91精品免费在线| 欧美精品在线观看播放| 欧美日韩精品免费| 欧美午夜精品免费| 欧美少妇bbb| 色婷婷综合在线| 日本福利一区二区| 欧美性大战xxxxx久久久| 色婷婷综合视频在线观看| 91视频com| 色伊人久久综合中文字幕| 色婷婷综合久久久中文字幕| 色婷婷精品久久二区二区蜜臂av| 91美女在线看| 色悠久久久久综合欧美99| 色婷婷亚洲综合| 欧美日韩综合在线| 精品视频1区2区3区| 7777精品伊人久久久大香线蕉完整版| 欧美色网站导航| 在线播放中文字幕一区| 91精品国产一区二区三区香蕉| 欧美一区二区在线播放| 精品精品欲导航| 国产亚洲精品中文字幕| 中文字幕日韩一区二区| 亚洲午夜三级在线| 日韩电影网1区2区| 国产乱人伦偷精品视频不卡 | www.一区二区| 91黄色免费网站| 欧美一级黄色录像| 久久久久国色av免费看影院| 国产精品网站在线观看| 欧美在线视频不卡| 亚洲国产另类av| 日韩国产在线一| 亚洲日本中文字幕区| 亚洲一区二区三区三| 国产一区二区免费看| 欧美日韩1区2区| 一区二区三区毛片| 春色校园综合激情亚洲| 欧美电视剧免费全集观看| 亚洲精品美腿丝袜| 成人18视频在线播放| 久久久久久亚洲综合| 秋霞电影网一区二区| 欧美一a一片一级一片| 国产精品免费人成网站| 国产一区二区在线影院| 欧美大片在线观看一区| 午夜精品久久久久久久99樱桃| 91亚洲精品久久久蜜桃| 日本一区二区视频在线| 国产在线一区二区| 激情五月婷婷综合| 91麻豆精品国产无毒不卡在线观看 | 欧美精品一区二| 午夜精品久久久久久久99水蜜桃| 91天堂素人约啪| 国产精品国模大尺度视频| 国产成人免费视频| 精品国产人成亚洲区| 男女男精品视频| 日韩美女主播在线视频一区二区三区| 日本视频免费一区| 欧美浪妇xxxx高跟鞋交| 婷婷成人综合网| 欧美色区777第一页| 亚洲二区在线视频| 欧美日韩综合不卡| 日韩在线一区二区三区| 欧美日韩不卡视频| 日韩不卡一区二区三区| 在线不卡一区二区| 美女视频黄 久久| 欧美xxxxxxxxx| 国产麻豆日韩欧美久久| 久久综合色天天久久综合图片| 久草在线在线精品观看| 久久伊人蜜桃av一区二区| 国产一二三精品| 国产精品日韩成人| 91免费看`日韩一区二区| 亚洲三级在线播放| 在线这里只有精品| 日韩精品成人一区二区三区| 日韩一区二区三免费高清| 狠狠色丁香久久婷婷综合丁香| 久久久精品2019中文字幕之3| www.亚洲在线| 亚洲国产一区二区视频| 欧美日韩在线直播| 久久97超碰国产精品超碰| 久久久久久久久久久久久久久99| 处破女av一区二区| 亚洲精品成a人| 制服.丝袜.亚洲.另类.中文| 久88久久88久久久| 国产精品久久久久久久久久免费看| 99re6这里只有精品视频在线观看| 亚洲在线视频免费观看| 欧美一区二区精美| 国产夫妻精品视频| 亚洲影视在线观看| 欧美成人官网二区| av一区二区久久| 婷婷中文字幕一区三区| 精品国产伦一区二区三区观看方式 | 天堂va蜜桃一区二区三区| 精品久久人人做人人爽| 成人app软件下载大全免费| 五月天久久比比资源色| 久久久天堂av| 色婷婷精品久久二区二区蜜臂av | 日韩一区和二区| 国产传媒久久文化传媒| 亚洲一区二区视频在线观看| 欧美成人精品福利| 色婷婷国产精品| 久久www免费人成看片高清| 亚洲丝袜另类动漫二区| 日韩一区二区三区四区五区六区| 成人黄色777网| 美国欧美日韩国产在线播放| 亚洲人亚洲人成电影网站色| 日韩精品专区在线影院观看| 91猫先生在线| 国产一区二区精品在线观看| 香蕉影视欧美成人| 国产精品无码永久免费888| 91精品在线免费| 色欧美片视频在线观看在线视频| 精品一区二区免费| 天天操天天综合网|