5887 char *type, *nm; |
5889 char *type, *nm; |
5888 int dummy; |
5890 int dummy; |
5889 int mask, shift, nBits; |
5891 int mask, shift, nBits; |
5890 |
5892 |
5891 if (ISCONNECTED) { |
5893 if (ISCONNECTED) { |
5892 __INST(altModifierMask) = __MKSMALLINT(Mod2Mask); |
5894 __INST(altModifierMask) = __MKSMALLINT(Mod2Mask); |
5893 __INST(metaModifierMask) = __MKSMALLINT(Mod1Mask); |
5895 __INST(metaModifierMask) = __MKSMALLINT(Mod1Mask); |
5894 |
5896 |
5895 BEGIN_INTERRUPTSBLOCKED |
5897 BEGIN_INTERRUPTSBLOCKED |
5896 |
5898 |
5897 __INST(screen) = __MKSMALLINT(scr = DefaultScreen(dpy)); |
5899 __INST(screen) = __MKSMALLINT(scr = DefaultScreen(dpy)); |
5898 __INST(depth) = __MKSMALLINT(DisplayPlanes(dpy, scr)); |
5900 __INST(depth) = __MKSMALLINT(DisplayPlanes(dpy, scr)); |
5899 __INST(ncells) = __MKSMALLINT(DisplayCells(dpy, scr)); |
5901 __INST(ncells) = __MKSMALLINT(DisplayCells(dpy, scr)); |
5900 __INST(width) = __MKSMALLINT(DisplayWidth(dpy, scr)); |
5902 __INST(width) = __MKSMALLINT(DisplayWidth(dpy, scr)); |
5901 __INST(height) = __MKSMALLINT(DisplayHeight(dpy, scr)); |
5903 __INST(height) = __MKSMALLINT(DisplayHeight(dpy, scr)); |
5902 __INST(widthMM) = __MKSMALLINT(DisplayWidthMM(dpy, scr)); |
5904 __INST(widthMM) = __MKSMALLINT(DisplayWidthMM(dpy, scr)); |
5903 __INST(heightMM) = __MKSMALLINT(DisplayHeightMM(dpy, scr)); |
5905 __INST(heightMM) = __MKSMALLINT(DisplayHeightMM(dpy, scr)); |
5904 __INST(blackpixel) = __MKSMALLINT(BlackPixel(dpy, scr)); |
5906 __INST(blackpixel) = __MKSMALLINT(BlackPixel(dpy, scr)); |
5905 __INST(whitepixel) = __MKSMALLINT(WhitePixel(dpy, scr)); |
5907 __INST(whitepixel) = __MKSMALLINT(WhitePixel(dpy, scr)); |
5906 |
5908 |
5907 #ifdef SHAPE |
5909 #ifdef SHAPE |
5908 if (XShapeQueryExtension(dpy, &shapeEventBase, &shapeErrorBase)) |
5910 if (XShapeQueryExtension(dpy, &shapeEventBase, &shapeErrorBase)) |
5909 __INST(hasShapeExtension) = true; |
5911 __INST(hasShapeExtension) = true; |
5910 else |
5912 else |
5911 #endif |
5913 #endif |
5912 __INST(hasShapeExtension) = false; |
5914 __INST(hasShapeExtension) = false; |
5913 |
5915 |
5914 #ifdef SHM |
5916 #ifdef SHM |
5915 if (XShmQueryExtension(dpy, &shmEventBase, &shmErrorBase)) |
5917 if (XShmQueryExtension(dpy, &shmEventBase, &shmErrorBase)) |
5916 __INST(hasShmExtension) = true; |
5918 __INST(hasShmExtension) = true; |
5917 else |
5919 else |
5918 #endif |
5920 #endif |
5919 __INST(hasShmExtension) = false; |
5921 __INST(hasShmExtension) = false; |
5920 |
5922 |
5921 #ifdef FAX |
5923 #ifdef FAX |
5922 if (XFAXImageQueryExtension(dpy, &faxEventBase, &faxErrorBase)) |
5924 if (XFAXImageQueryExtension(dpy, &faxEventBase, &faxErrorBase)) |
5923 __INST(hasFaxExtension) = true; |
5925 __INST(hasFaxExtension) = true; |
5924 else |
5926 else |
5925 #endif |
5927 #endif |
5926 __INST(hasFaxExtension) = false; |
5928 __INST(hasFaxExtension) = false; |
5927 |
5929 |
5928 #ifdef DPS |
5930 #ifdef DPS |
5929 if (XQueryExtension(dpy, "DPSExtension", &dummy, &dummy, &dummy)) |
5931 if (XQueryExtension(dpy, "DPSExtension", &dummy, &dummy, &dummy)) |
5930 __INST(hasDPSExtension) = true; |
5932 __INST(hasDPSExtension) = true; |
5931 else |
5933 else |
5932 #endif |
5934 #endif |
5933 __INST(hasDPSExtension) = false; |
5935 __INST(hasDPSExtension) = false; |
5934 |
5936 |
5935 #ifdef XVIDEO |
5937 #ifdef XVIDEO |
5936 if (XQueryExtension(dpy, "XVideo", &dummy, &dummy, &dummy)) |
5938 if (XQueryExtension(dpy, "XVideo", &dummy, &dummy, &dummy)) |
5937 __INST(hasXVideoExtension) = true; |
5939 __INST(hasXVideoExtension) = true; |
5938 else |
5940 else |
5939 #endif |
5941 #endif |
5940 __INST(hasXVideoExtension) = false; |
5942 __INST(hasXVideoExtension) = false; |
5941 |
5943 |
5942 #ifdef MBUF |
5944 #ifdef MBUF |
5943 if (XQueryExtension(dpy, "Multi-Buffering", &dummy, &dummy, &dummy)) |
5945 if (XQueryExtension(dpy, "Multi-Buffering", &dummy, &dummy, &dummy)) |
5944 __INST(hasMbufExtension) = true; |
5946 __INST(hasMbufExtension) = true; |
5945 else |
5947 else |
5946 #endif |
5948 #endif |
5947 __INST(hasMbufExtension) = false; |
5949 __INST(hasMbufExtension) = false; |
5948 |
5950 |
5949 #ifdef PEX5 |
5951 #ifdef PEX5 |
5950 if (XQueryExtension(dpy, PEX_NAME_STRING, &dummy, &dummy, &dummy)) |
5952 if (XQueryExtension(dpy, PEX_NAME_STRING, &dummy, &dummy, &dummy)) |
5951 __INST(hasPEXExtension) = true; |
5953 __INST(hasPEXExtension) = true; |
5952 else |
5954 else |
5953 #endif |
5955 #endif |
5954 __INST(hasPEXExtension) = false; |
5956 __INST(hasPEXExtension) = false; |
5955 |
5957 |
5956 #ifdef XIE |
5958 #ifdef XIE |
5957 if (XQueryExtension(dpy, xieExtName, &dummy, &dummy, &dummy)) |
5959 if (XQueryExtension(dpy, xieExtName, &dummy, &dummy, &dummy)) |
5958 __INST(hasImageExtension) = true; |
5960 __INST(hasImageExtension) = true; |
5959 else |
5961 else |
5960 #endif |
5962 #endif |
5961 __INST(hasImageExtension) = false; |
5963 __INST(hasImageExtension) = false; |
5962 |
5964 |
5963 #ifdef XI |
5965 #ifdef XI |
5964 if (XQueryExtension(dpy, "XInputExtension", &dummy, &dummy, &dummy)) |
5966 if (XQueryExtension(dpy, "XInputExtension", &dummy, &dummy, &dummy)) |
5965 __INST(hasInputExtension) = true; |
5967 __INST(hasInputExtension) = true; |
5966 else |
5968 else |
5967 #endif |
5969 #endif |
5968 __INST(hasInputExtension) = false; |
5970 __INST(hasInputExtension) = false; |
5969 |
5971 |
5970 /* |
5972 /* |
5971 * look for RGB visual |
5973 * look for RGB visual |
5972 */ |
5974 */ |
5973 nvi = 0; |
5975 nvi = 0; |
5974 viproto.screen = scr; |
5976 viproto.screen = scr; |
5975 vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi); |
5977 vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi); |
5976 maxRGBDepth = 0; |
5978 maxRGBDepth = 0; |
5977 for (i = 0; i < nvi; i++) { |
5979 for (i = 0; i < nvi; i++) { |
5978 switch (vip[i].class) { |
5980 switch (vip[i].class) { |
5979 case TrueColor: |
5981 case TrueColor: |
5980 if (vip[i].depth > maxRGBDepth) { |
5982 if (vip[i].depth > maxRGBDepth) { |
5981 maxRGBDepth = vip[i].depth; |
5983 maxRGBDepth = vip[i].depth; |
5982 rgbRedMask = vip[i].red_mask; |
5984 rgbRedMask = vip[i].red_mask; |
5983 rgbGreenMask = vip[i].green_mask; |
5985 rgbGreenMask = vip[i].green_mask; |
5984 rgbBlueMask = vip[i].blue_mask; |
5986 rgbBlueMask = vip[i].blue_mask; |
5985 rgbVisualID = vip[i].visualid; |
5987 rgbVisualID = vip[i].visualid; |
5986 } |
5988 } |
5987 break; |
5989 break; |
5988 } |
5990 } |
5989 } |
5991 } |
5990 if (vip) XFree ((char *) vip); |
5992 if (vip) XFree ((char *) vip); |
5991 |
5993 |
5992 if (maxRGBDepth) { |
5994 if (maxRGBDepth) { |
5993 __INST(rgbVisual) = __MKOBJ(rgbVisualID); __STORESELF(rgbVisual); |
5995 __INST(rgbVisual) = __MKOBJ(rgbVisualID); __STORESELF(rgbVisual); |
5994 } |
5996 } |
5995 |
5997 |
5996 visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy)); |
5998 visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy)); |
5997 __INST(monitorType) = @symbol(unknown); |
5999 __INST(monitorType) = @symbol(unknown); |
5998 __INST(hasColors) = true; |
6000 __INST(hasColors) = true; |
5999 __INST(hasGreyscales) = true; |
6001 __INST(hasGreyscales) = true; |
6000 switch (visual->class) { |
6002 switch (visual->class) { |
6001 case StaticGray: |
6003 case StaticGray: |
6002 __INST(visualType) = @symbol(StaticGray); |
6004 __INST(visualType) = @symbol(StaticGray); |
6003 __INST(hasColors) = false; |
6005 __INST(hasColors) = false; |
6004 __INST(monitorType) = @symbol(monochrome); |
6006 __INST(monitorType) = @symbol(monochrome); |
6005 break; |
6007 break; |
6006 case GrayScale: |
6008 case GrayScale: |
6007 __INST(visualType) = @symbol(GrayScale); |
6009 __INST(visualType) = @symbol(GrayScale); |
6008 __INST(hasColors) = false; |
6010 __INST(hasColors) = false; |
6009 __INST(monitorType) = @symbol(monochrome); |
6011 __INST(monitorType) = @symbol(monochrome); |
6010 break; |
6012 break; |
6011 case StaticColor: |
6013 case StaticColor: |
6012 __INST(visualType) = @symbol(StaticColor); |
6014 __INST(visualType) = @symbol(StaticColor); |
6013 break; |
6015 break; |
6014 case PseudoColor: |
6016 case PseudoColor: |
6015 __INST(visualType) = @symbol(PseudoColor); |
6017 __INST(visualType) = @symbol(PseudoColor); |
6016 break; |
6018 break; |
6017 case TrueColor: |
6019 case TrueColor: |
6018 __INST(visualType) = @symbol(TrueColor); |
6020 __INST(visualType) = @symbol(TrueColor); |
6019 break; |
6021 break; |
6020 case DirectColor: |
6022 case DirectColor: |
6021 __INST(visualType) = @symbol(DirectColor); |
6023 __INST(visualType) = @symbol(DirectColor); |
6022 break; |
6024 break; |
6023 } |
6025 } |
6024 if (DisplayCells(dpy, scr) == 2) { |
6026 if (DisplayCells(dpy, scr) == 2) { |
6025 __INST(hasColors) = false; |
6027 __INST(hasColors) = false; |
6026 __INST(hasGreyscales) = false; |
6028 __INST(hasGreyscales) = false; |
6027 __INST(monitorType) = @symbol(monochrome); |
6029 __INST(monitorType) = @symbol(monochrome); |
6028 } |
6030 } |
6029 __INST(bitsPerRGB) = __MKSMALLINT(visual->bits_per_rgb); |
6031 __INST(bitsPerRGB) = __MKSMALLINT(visual->bits_per_rgb); |
6030 __INST(redMask) = __MKSMALLINT(visual->red_mask); |
6032 __INST(redMask) = __MKSMALLINT(visual->red_mask); |
6031 __INST(greenMask) = __MKSMALLINT(visual->green_mask); |
6033 __INST(greenMask) = __MKSMALLINT(visual->green_mask); |
6032 __INST(blueMask) = __MKSMALLINT(visual->blue_mask); |
6034 __INST(blueMask) = __MKSMALLINT(visual->blue_mask); |
6033 switch (visual->class) { |
6035 switch (visual->class) { |
6034 case TrueColor: |
6036 case TrueColor: |
6035 /* extract number of bits and shift counts */ |
6037 /* extract number of bits and shift counts */ |
6036 mask = visual->red_mask; |
6038 mask = visual->red_mask; |
6037 shift = 0; |
6039 shift = 0; |
6038 while (mask && ((mask & 1) == 0)) { |
6040 while (mask && ((mask & 1) == 0)) { |
6039 mask >>= 1; |
6041 mask >>= 1; |
6040 shift++; |
6042 shift++; |
6041 } |
6043 } |
6042 __INST(redShift) = __MKSMALLINT(shift); |
6044 __INST(redShift) = __MKSMALLINT(shift); |
6043 nBits = 0; |
6045 nBits = 0; |
6044 while (mask) { |
6046 while (mask) { |
6045 mask >>= 1; |
6047 mask >>= 1; |
6046 nBits++; |
6048 nBits++; |
6047 } |
6049 } |
6048 __INST(bitsRed) = __MKSMALLINT(nBits); |
6050 __INST(bitsRed) = __MKSMALLINT(nBits); |
6049 |
6051 |
6050 mask = visual->green_mask; |
6052 mask = visual->green_mask; |
6051 shift = 0; |
6053 shift = 0; |
6052 while (mask && ((mask & 1) == 0)) { |
6054 while (mask && ((mask & 1) == 0)) { |
6053 mask >>= 1; |
6055 mask >>= 1; |
6054 shift++; |
6056 shift++; |
6055 } |
6057 } |
6056 __INST(greenShift) = __MKSMALLINT(shift); |
6058 __INST(greenShift) = __MKSMALLINT(shift); |
6057 nBits = 0; |
6059 nBits = 0; |
6058 while (mask) { |
6060 while (mask) { |
6059 mask >>= 1; |
6061 mask >>= 1; |
6060 nBits++; |
6062 nBits++; |
6061 } |
6063 } |
6062 __INST(bitsGreen) = __MKSMALLINT(nBits); |
6064 __INST(bitsGreen) = __MKSMALLINT(nBits); |
6063 |
6065 |
6064 mask = visual->blue_mask; |
6066 mask = visual->blue_mask; |
6065 shift = 0; |
6067 shift = 0; |
6066 while (mask && ((mask & 1) == 0)) { |
6068 while (mask && ((mask & 1) == 0)) { |
6067 mask >>= 1; |
6069 mask >>= 1; |
6068 shift++; |
6070 shift++; |
6069 } |
6071 } |
6070 __INST(blueShift) = __MKSMALLINT(shift); |
6072 __INST(blueShift) = __MKSMALLINT(shift); |
6071 nBits = 0; |
6073 nBits = 0; |
6072 while (mask) { |
6074 while (mask) { |
6073 mask >>= 1; |
6075 mask >>= 1; |
6074 nBits++; |
6076 nBits++; |
6075 } |
6077 } |
6076 __INST(bitsBlue) = __MKSMALLINT(nBits); |
6078 __INST(bitsBlue) = __MKSMALLINT(nBits); |
6077 break; |
6079 break; |
6078 } |
6080 } |
6079 |
6081 |
6080 #ifndef XA_PRIMARY |
6082 #ifndef XA_PRIMARY |
6081 __INST(primaryAtom) = __MKATOMOBJ( XInternAtom(dpy, "PRIMARY", True) ); |
6083 __INST(primaryAtom) = __MKATOMOBJ( XInternAtom(dpy, "PRIMARY", True) ); |
6082 #else |
6084 #else |
6083 __INST(primaryAtom) = __MKATOMOBJ( XA_PRIMARY ); |
6085 __INST(primaryAtom) = __MKATOMOBJ( XA_PRIMARY ); |
6084 #endif |
6086 #endif |
6085 #ifndef XA_SECONDARY |
6087 #ifndef XA_SECONDARY |
6086 __INST(secondaryAtom) = __MKATOMOBJ( XInternAtom(dpy, "SECONDARY", True) ); |
6088 __INST(secondaryAtom) = __MKATOMOBJ( XInternAtom(dpy, "SECONDARY", True) ); |
6087 #else |
6089 #else |
6088 __INST(secondaryAtom) = __MKATOMOBJ( XA_SECONDARY ); |
6090 __INST(secondaryAtom) = __MKATOMOBJ( XA_SECONDARY ); |
6089 #endif |
6091 #endif |
6090 #ifndef XA_CUT_BUFFER0 |
6092 #ifndef XA_CUT_BUFFER0 |
6091 __INST(cutBuffer0Atom) = __MKATOMOBJ( XInternAtom(dpy, "CUT_BUFFER0", True) ); |
6093 __INST(cutBuffer0Atom) = __MKATOMOBJ( XInternAtom(dpy, "CUT_BUFFER0", True) ); |
6092 #else |
6094 #else |
6093 __INST(cutBuffer0Atom) = __MKATOMOBJ( XA_CUT_BUFFER0 ); |
6095 __INST(cutBuffer0Atom) = __MKATOMOBJ( XA_CUT_BUFFER0 ); |
6094 #endif |
6096 #endif |
6095 #ifndef XA_STRING |
6097 #ifndef XA_STRING |
6096 __INST(stringAtom) = __MKATOMOBJ( XInternAtom(dpy, "STRING", True) ); |
6098 __INST(stringAtom) = __MKATOMOBJ( XInternAtom(dpy, "STRING", True) ); |
6097 #else |
6099 #else |
6098 __INST(stringAtom) = __MKATOMOBJ( XA_STRING ); |
6100 __INST(stringAtom) = __MKATOMOBJ( XA_STRING ); |
6099 #endif |
6101 #endif |
6100 #ifndef XA_LENGTH |
6102 #ifndef XA_LENGTH |
6101 __INST(lengthAtom) = __MKATOMOBJ( XInternAtom(dpy, "LENGTH", True) ); |
6103 __INST(lengthAtom) = __MKATOMOBJ( XInternAtom(dpy, "LENGTH", True) ); |
6102 #else |
6104 #else |
6103 __INST(lengthAtom) = __MKATOMOBJ( XA_LENGTH ); |
6105 __INST(lengthAtom) = __MKATOMOBJ( XA_LENGTH ); |
6104 #endif |
6106 #endif |
6105 |
6107 |
6106 END_INTERRUPTSBLOCKED |
6108 END_INTERRUPTSBLOCKED |
6107 } |
6109 } |
6108 %} |
6110 %}. |
6109 ! |
6111 ! |
6110 |
6112 |
6111 initializeSpecialFlags |
6113 initializeSpecialFlags |
6112 "perform additional special server implementation flags" |
6114 "perform additional special server implementation flags" |
6113 |
6115 |