⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xvnc.cc

📁 Informix Table extraction queries have been optimized
💻 CC
📖 第 1 页 / 共 3 页
字号:
    (vfbScreen).pixelFormatDefined = TRUE;              \    (vfbScreen).depth = bits1 + bits2 + bits3;          \    (vfbScreen).greenBits = bits2;                      \    if (strcasecmp(rgbbgr, "bgr") == 0) {               \        (vfbScreen).rgbNotBgr = FALSE;                  \        (vfbScreen).redBits = bits3;                    \        (vfbScreen).blueBits = bits1;                   \    } else if (strcasecmp(rgbbgr, "rgb") == 0) {        \        (vfbScreen).rgbNotBgr = TRUE;                   \        (vfbScreen).redBits = bits1;                    \        (vfbScreen).blueBits = bits3;                   \    } else {                                            \        ErrorF("Invalid pixel format %s\n", argv[i]);   \        UseMsg();                                       \    }    if (-1 == lastScreen)    {      int i;      for (i = 0; i < MAXSCREENS; i++)      {        SET_PIXEL_FORMAT(vfbScreens[i]);      }    }    else    {      SET_PIXEL_FORMAT(vfbScreens[lastScreen]);    }    return 2;  }  if (strcmp(argv[i], "-inetd") == 0)  {    dup2(0,3);    vncInetdSock = 3;    close(2);    if (!displaySpecified) {      int port = network::TcpSocket::getSockPort(vncInetdSock);      int displayNum = port - 5900;      if (displayNum < 0 || displayNum > 99 || !displayNumFree(displayNum)) {        for (displayNum = 1; displayNum < 100; displayNum++)          if (displayNumFree(displayNum)) break;        if (displayNum == 100)          FatalError("Xvnc error: no free display number for -inetd");      }      display = displayNumStr;      sprintf(displayNumStr, "%d", displayNum);    }    return 1;  }  if (rfb::Configuration::setParam(argv[i]))    return 1;  if (argv[i][0] == '-' && i+1 < argc) {    if (rfb::Configuration::setParam(&argv[i][1], argv[i+1]))      return 2;  }  return 0;}#ifdef DDXTIME /* from ServerOSDefines */CARD32 GetTimeInMillis(){  struct timeval  tp;  X_GETTIMEOFDAY(&tp);  return(tp.tv_sec * 1000) + (tp.tv_usec / 1000);}#endifstatic Bool vfbMultiDepthCreateGC(GCPtr   pGC){  switch (vfbBitsPerPixel(pGC->depth))  {  case 1:  return mfbCreateGC (pGC);  case 8:  return cfbCreateGC (pGC);  case 16: return cfb16CreateGC (pGC);  case 32: return cfb32CreateGC (pGC);  default: return FALSE;  }}static void vfbMultiDepthGetSpans(                                  DrawablePtr		pDrawable,	/* drawable from which to get bits */                                  int			wMax,		/* largest value of all *pwidths */                                  register DDXPointPtr ppt,		/* points to start copying from */                                  int			*pwidth,	/* list of number of bits to copy */                                  int			nspans,		/* number of scanlines to copy */                                  char		*pdstStart)	/* where to put the bits */{  switch (pDrawable->bitsPerPixel) {  case 1:    mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);    break;  case 8:    cfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);    break;  case 16:    cfb16GetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);    break;  case 32:    cfb32GetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);    break;  }  return;}static voidvfbMultiDepthGetImage(DrawablePtr pDrawable, int sx, int sy, int w, int h,                      unsigned int format, unsigned long planeMask,                      char *pdstLine){  switch (pDrawable->bitsPerPixel)  {  case 1:    mfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);    break;  case 8:    cfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);    break;  case 16:    cfb16GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);    break;  case 32:    cfb32GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);    break;  }}static ColormapPtr InstalledMaps[MAXSCREENS];static int vfbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps){  /* By the time we are processing requests, we can guarantee that there   * is always a colormap installed */  *pmaps = InstalledMaps[pScreen->myNum]->mid;  return (1);}static void vfbInstallColormap(ColormapPtr pmap){  int index = pmap->pScreen->myNum;  ColormapPtr oldpmap = InstalledMaps[index];  if (pmap != oldpmap)  {    int entries;    XWDFileHeader *pXWDHeader;    XWDColor *pXWDCmap;    VisualPtr pVisual;    Pixel *     ppix;    xrgb *      prgb;    xColorItem *defs;    int i;    if(oldpmap != (ColormapPtr)None)      WalkTree(pmap->pScreen, TellLostMap, (char *)&oldpmap->mid);    /* Install pmap */    InstalledMaps[index] = pmap;    WalkTree(pmap->pScreen, TellGainedMap, (char *)&pmap->mid);    entries = pmap->pVisual->ColormapEntries;    pXWDHeader = vfbScreens[pmap->pScreen->myNum].pXWDHeader;    pXWDCmap = vfbScreens[pmap->pScreen->myNum].pXWDCmap;    pVisual = pmap->pVisual;    swapcopy32(pXWDHeader->visual_class, pVisual->c_class);    swapcopy32(pXWDHeader->red_mask, pVisual->redMask);    swapcopy32(pXWDHeader->green_mask, pVisual->greenMask);    swapcopy32(pXWDHeader->blue_mask, pVisual->blueMask);    swapcopy32(pXWDHeader->bits_per_rgb, pVisual->bitsPerRGBValue);    swapcopy32(pXWDHeader->colormap_entries, pVisual->ColormapEntries);    ppix = (Pixel *)ALLOCATE_LOCAL(entries * sizeof(Pixel));    prgb = (xrgb *)ALLOCATE_LOCAL(entries * sizeof(xrgb));    defs = (xColorItem *)ALLOCATE_LOCAL(entries * sizeof(xColorItem));    for (i = 0; i < entries; i++)  ppix[i] = i;    /* XXX truecolor */    QueryColors(pmap, entries, ppix, prgb);    for (i = 0; i < entries; i++) { /* convert xrgbs to xColorItems */      defs[i].pixel = ppix[i] & 0xff; /* change pixel to index */      defs[i].red = prgb[i].red;      defs[i].green = prgb[i].green;      defs[i].blue = prgb[i].blue;      defs[i].flags =  DoRed|DoGreen|DoBlue;    }    (*pmap->pScreen->StoreColors)(pmap, entries, defs);    DEALLOCATE_LOCAL(ppix);    DEALLOCATE_LOCAL(prgb);    DEALLOCATE_LOCAL(defs);  }}static void vfbUninstallColormap(ColormapPtr pmap){  ColormapPtr curpmap = InstalledMaps[pmap->pScreen->myNum];  if(pmap == curpmap)  {    if (pmap->mid != pmap->pScreen->defColormap)    {      curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap,                                             RT_COLORMAP);      (*pmap->pScreen->InstallColormap)(curpmap);    }  }}static void vfbStoreColors(ColormapPtr pmap, int ndef, xColorItem *pdefs){  XWDColor *pXWDCmap;  int i;  if (pmap != InstalledMaps[pmap->pScreen->myNum]) return;  pXWDCmap = vfbScreens[pmap->pScreen->myNum].pXWDCmap;  if ((pmap->pVisual->c_class | DynamicClass) == DirectColor)    return;  for (i = 0; i < ndef; i++)  {    if (pdefs[i].flags & DoRed) {      swapcopy16(pXWDCmap[pdefs[i].pixel].red, pdefs[i].red);    }    if (pdefs[i].flags & DoGreen) {      swapcopy16(pXWDCmap[pdefs[i].pixel].green, pdefs[i].green);    }    if (pdefs[i].flags & DoBlue) {      swapcopy16(pXWDCmap[pdefs[i].pixel].blue, pdefs[i].blue);    }  }}static Bool vfbSaveScreen(ScreenPtr pScreen, int on){  return TRUE;}static char* vfbAllocateFramebufferMemory(vfbScreenInfoPtr pvfb){  if (pvfb->pfbMemory) return pvfb->pfbMemory; /* already done */  pvfb->sizeInBytes = pvfb->paddedWidthInBytes * pvfb->height;  /* Calculate how many entries in colormap.  This is rather bogus, because   * the visuals haven't even been set up yet, but we need to know because we   * have to allocate space in the file for the colormap.  The number 10   * below comes from the MAX_PSEUDO_DEPTH define in cfbcmap.c.   */  if (pvfb->depth <= 10)  { /* single index colormaps */    pvfb->ncolors = 1 << pvfb->depth;  }  else  { /* decomposed colormaps */    int nplanes_per_color_component = pvfb->depth / 3;    if (pvfb->depth % 3) nplanes_per_color_component++;    pvfb->ncolors = 1 << nplanes_per_color_component;  }  /* add extra bytes for XWDFileHeader, window name, and colormap */  pvfb->sizeInBytes += SIZEOF(XWDheader) + XWD_WINDOW_NAME_LEN +    pvfb->ncolors * SIZEOF(XWDColor);  pvfb->pXWDHeader = NULL;   pvfb->pXWDHeader = (XWDFileHeader *)Xalloc(pvfb->sizeInBytes);  if (pvfb->pXWDHeader)  {    pvfb->pXWDCmap = (XWDColor *)((char *)pvfb->pXWDHeader                                  + SIZEOF(XWDheader) + XWD_WINDOW_NAME_LEN);    pvfb->pfbMemory = (char *)(pvfb->pXWDCmap + pvfb->ncolors);    memset(pvfb->pfbMemory, 0, pvfb->paddedWidthInBytes * pvfb->height);    return pvfb->pfbMemory;  }  else    return NULL;}static void vfbWriteXWDFileHeader(ScreenPtr pScreen){  vfbScreenInfoPtr pvfb = &vfbScreens[pScreen->myNum];  XWDFileHeader *pXWDHeader = pvfb->pXWDHeader;  char hostname[XWD_WINDOW_NAME_LEN];  VisualPtr	pVisual;  unsigned long swaptest = 1;  int i;  needswap = *(char *) &swaptest;  pXWDHeader->header_size = (char *)pvfb->pXWDCmap - (char *)pvfb->pXWDHeader;  pXWDHeader->file_version = XWD_FILE_VERSION;  pXWDHeader->pixmap_format = ZPixmap;  pXWDHeader->pixmap_depth = pvfb->depth;  pXWDHeader->pixmap_height = pXWDHeader->window_height = pvfb->height;  pXWDHeader->xoffset = 0;  pXWDHeader->byte_order = IMAGE_BYTE_ORDER;  pXWDHeader->bitmap_bit_order = BITMAP_BIT_ORDER;#ifndef INTERNAL_VS_EXTERNAL_PADDING  pXWDHeader->pixmap_width = pXWDHeader->window_width = pvfb->width;  pXWDHeader->bitmap_unit = BITMAP_SCANLINE_UNIT;  pXWDHeader->bitmap_pad = BITMAP_SCANLINE_PAD;#else  pXWDHeader->pixmap_width = pXWDHeader->window_width = pvfb->paddedWidth;  pXWDHeader->bitmap_unit = BITMAP_SCANLINE_UNIT_PROTO;  pXWDHeader->bitmap_pad = BITMAP_SCANLINE_PAD_PROTO;#endif  pXWDHeader->bits_per_pixel = pvfb->bitsPerPixel;  pXWDHeader->bytes_per_line = pvfb->paddedWidthInBytes;  pXWDHeader->ncolors = pvfb->ncolors;  /* visual related fields are written when colormap is installed */  pXWDHeader->window_x = pXWDHeader->window_y = 0;  pXWDHeader->window_bdrwidth = 0;  /* write xwd "window" name: Xvfb hostname:server.screen */  hostname[0] = 0;  sprintf((char *)(pXWDHeader+1), "Xvfb %s:%s.%d", hostname, display,          pScreen->myNum);  /* write colormap pixel slot values */  for (i = 0; i < pvfb->ncolors; i++)  {    pvfb->pXWDCmap[i].pixel = i;  }  /* byte swap to most significant byte first */  if (needswap)  {    SwapLongs((CARD32 *)pXWDHeader, SIZEOF(XWDheader)/4);    for (i = 0; i < pvfb->ncolors; i++)    {      register char n;      swapl(&pvfb->pXWDCmap[i].pixel, n);    }  }}static Bool vfbCursorOffScreen(ScreenPtr *ppScreen, int *x, int *y) {  return FALSE;}static void vfbCrossScreen (ScreenPtr pScreen, Bool entering) {}static Bool vfbRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor) {  return TRUE;}static Bool vfbUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor) {  return TRUE;}static void vfbSetCursor(ScreenPtr pScreen, CursorPtr pCursor,                               int x, int y) {}static void vfbMoveCursor(ScreenPtr pScreen, int x, int y) {}static miPointerSpriteFuncRec vfbPointerSpriteFuncs = {  vfbRealizeCursor,  vfbUnrealizeCursor,  vfbSetCursor,  vfbMoveCursor};static miPointerScreenFuncRec vfbPointerScreenFuncs = {  vfbCursorOffScreen,  vfbCrossScreen,  miPointerWarpCursor};static Bool vfbScreenInit(int index, ScreenPtr pScreen, int argc, char** argv){  vfbScreenInfoPtr pvfb = &vfbScreens[index];  int dpi = 100;  int ret;  char *pbits;  if (monitorResolution) dpi = monitorResolution;  pvfb->paddedWidthInBytes = PixmapBytePad(pvfb->width, pvfb->depth);  pvfb->bitsPerPixel = vfbBitsPerPixel(pvfb->depth);  pvfb->paddedWidth = pvfb->paddedWidthInBytes * 8 / pvfb->bitsPerPixel;  pbits = vfbAllocateFramebufferMemory(pvfb);  if (!pbits) return FALSE;  vncFbptr[index] = pbits;  defaultColorVisualClass    = (pvfb->bitsPerPixel > 8) ? TrueColor : PseudoColor;  switch (pvfb->bitsPerPixel)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -