6839999: Cumulative fix for 6762511 and 6838003
Adds support for ARGB and ABGR X11 surfaces. Reviewed-by: art, yan
This commit is contained in:
parent
013285996b
commit
c403935e34
@ -186,6 +186,15 @@ XEvent.xerror 0
|
|||||||
XEvent.xkeymap 0
|
XEvent.xkeymap 0
|
||||||
XEvent.pad 0
|
XEvent.pad 0
|
||||||
XEvent 192
|
XEvent 192
|
||||||
|
XRenderDirectFormat.red 0
|
||||||
|
XRenderDirectFormat.redMask 2
|
||||||
|
XRenderDirectFormat.green 4
|
||||||
|
XRenderDirectFormat.greenMask 6
|
||||||
|
XRenderDirectFormat.blue 8
|
||||||
|
XRenderDirectFormat.blueMask 10
|
||||||
|
XRenderDirectFormat.alpha 12
|
||||||
|
XRenderDirectFormat.alphaMask 14
|
||||||
|
XRenderDirectFormat 16
|
||||||
ColorData.awt_Colors 0
|
ColorData.awt_Colors 0
|
||||||
ColorData.awt_numICMcolors 8
|
ColorData.awt_numICMcolors 8
|
||||||
ColorData.awt_icmLUT 16
|
ColorData.awt_icmLUT 16
|
||||||
@ -440,6 +449,12 @@ XSetWindowAttributes.override_redirect 88
|
|||||||
XSetWindowAttributes.colormap 96
|
XSetWindowAttributes.colormap 96
|
||||||
XSetWindowAttributes.cursor 104
|
XSetWindowAttributes.cursor 104
|
||||||
XSetWindowAttributes 112
|
XSetWindowAttributes 112
|
||||||
|
XRenderPictFormat.id 0
|
||||||
|
XRenderPictFormat.type 8
|
||||||
|
XRenderPictFormat.depth 12
|
||||||
|
XRenderPictFormat.direct 16
|
||||||
|
XRenderPictFormat.colormap 32
|
||||||
|
XRenderPictFormat 40
|
||||||
XReparentEvent.type 0
|
XReparentEvent.type 0
|
||||||
XReparentEvent.serial 8
|
XReparentEvent.serial 8
|
||||||
XReparentEvent.send_event 16
|
XReparentEvent.send_event 16
|
||||||
@ -985,7 +1000,8 @@ AwtGraphicsConfigData.pixelStride 136
|
|||||||
AwtGraphicsConfigData.color_data 144
|
AwtGraphicsConfigData.color_data 144
|
||||||
AwtGraphicsConfigData.glxInfo 152
|
AwtGraphicsConfigData.glxInfo 152
|
||||||
AwtGraphicsConfigData.isTranslucencySupported 160
|
AwtGraphicsConfigData.isTranslucencySupported 160
|
||||||
AwtGraphicsConfigData 168
|
AwtGraphicsConfigData.renderPictFormat 168
|
||||||
|
AwtGraphicsConfigData 208
|
||||||
XColor.pixel 0
|
XColor.pixel 0
|
||||||
XColor.red 8
|
XColor.red 8
|
||||||
XColor.green 10
|
XColor.green 10
|
||||||
|
@ -245,6 +245,21 @@ XVisualInfo
|
|||||||
blue_mask long
|
blue_mask long
|
||||||
colormap_size int
|
colormap_size int
|
||||||
bits_per_rgb int
|
bits_per_rgb int
|
||||||
|
XRenderDirectFormat
|
||||||
|
red short
|
||||||
|
redMask short
|
||||||
|
green short
|
||||||
|
greenMask short
|
||||||
|
blue short
|
||||||
|
blueMask short
|
||||||
|
alpha short
|
||||||
|
alphaMask short
|
||||||
|
XRenderPictFormat
|
||||||
|
id long
|
||||||
|
type int
|
||||||
|
depth int
|
||||||
|
direct struct XRenderDirectFormat
|
||||||
|
colormap long
|
||||||
XIMHotKeyTrigger
|
XIMHotKeyTrigger
|
||||||
keysym long
|
keysym long
|
||||||
modifier int
|
modifier int
|
||||||
@ -751,6 +766,7 @@ AwtGraphicsConfigData
|
|||||||
color_data pointer ColorData
|
color_data pointer ColorData
|
||||||
glxInfo pointer
|
glxInfo pointer
|
||||||
isTranslucencySupported int
|
isTranslucencySupported int
|
||||||
|
renderPictFormat struct XRenderPictFormat
|
||||||
|
|
||||||
AwtScreenData
|
AwtScreenData
|
||||||
numConfigs int
|
numConfigs int
|
||||||
|
@ -37,7 +37,10 @@ import java.awt.ImageCapabilities;
|
|||||||
import java.awt.Transparency;
|
import java.awt.Transparency;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.awt.image.ColorModel;
|
import java.awt.image.ColorModel;
|
||||||
|
import java.awt.color.ColorSpace;
|
||||||
|
import java.awt.image.ComponentColorModel;
|
||||||
import java.awt.image.DirectColorModel;
|
import java.awt.image.DirectColorModel;
|
||||||
|
import java.awt.image.DataBuffer;
|
||||||
import java.awt.image.VolatileImage;
|
import java.awt.image.VolatileImage;
|
||||||
import java.awt.image.WritableRaster;
|
import java.awt.image.WritableRaster;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
@ -230,6 +233,22 @@ public class X11GraphicsConfig extends GraphicsConfiguration
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static DirectColorModel createDCM32(int rMask, int gMask, int bMask,
|
||||||
|
int aMask, boolean aPre) {
|
||||||
|
return new DirectColorModel(
|
||||||
|
ColorSpace.getInstance(ColorSpace.CS_sRGB),
|
||||||
|
32, rMask, gMask, bMask, aMask, aPre, DataBuffer.TYPE_INT);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ComponentColorModel createABGRCCM() {
|
||||||
|
ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB);
|
||||||
|
int[] nBits = {8, 8, 8, 8};
|
||||||
|
int[] bOffs = {3, 2, 1, 0};
|
||||||
|
return new ComponentColorModel(cs, nBits, true, true,
|
||||||
|
Transparency.TRANSLUCENT,
|
||||||
|
DataBuffer.TYPE_BYTE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the default Transform for this configuration. This
|
* Returns the default Transform for this configuration. This
|
||||||
* Transform is typically the Identity transform for most normal
|
* Transform is typically the Identity transform for most normal
|
||||||
|
@ -70,6 +70,10 @@ public class X11PMBlitBgLoops extends BlitBg {
|
|||||||
X11SurfaceData.UShort565RgbX11),
|
X11SurfaceData.UShort565RgbX11),
|
||||||
new X11PMBlitBgLoops(X11SurfaceData.UShortIndexedX11_BM,
|
new X11PMBlitBgLoops(X11SurfaceData.UShortIndexedX11_BM,
|
||||||
X11SurfaceData.UShortIndexedX11),
|
X11SurfaceData.UShortIndexedX11),
|
||||||
|
new X11PMBlitBgLoops(X11SurfaceData.IntRgbX11_BM,
|
||||||
|
X11SurfaceData.IntArgbPreX11),
|
||||||
|
new X11PMBlitBgLoops(X11SurfaceData.IntBgrX11_BM,
|
||||||
|
X11SurfaceData.FourByteAbgrPreX11),
|
||||||
};
|
};
|
||||||
GraphicsPrimitiveMgr.register(primitives);
|
GraphicsPrimitiveMgr.register(primitives);
|
||||||
}
|
}
|
||||||
|
@ -95,6 +95,22 @@ public class X11PMBlitLoops extends Blit {
|
|||||||
new X11PMBlitLoops(X11SurfaceData.UShortIndexedX11_BM,
|
new X11PMBlitLoops(X11SurfaceData.UShortIndexedX11_BM,
|
||||||
X11SurfaceData.UShortIndexedX11, true),
|
X11SurfaceData.UShortIndexedX11, true),
|
||||||
|
|
||||||
|
new X11PMBlitLoops(X11SurfaceData.IntRgbX11,
|
||||||
|
X11SurfaceData.IntArgbPreX11, true),
|
||||||
|
new X11PMBlitLoops(X11SurfaceData.IntRgbX11,
|
||||||
|
X11SurfaceData.IntArgbPreX11, false),
|
||||||
|
new X11PMBlitLoops(X11SurfaceData.IntRgbX11_BM,
|
||||||
|
X11SurfaceData.IntArgbPreX11, true),
|
||||||
|
|
||||||
|
new X11PMBlitLoops(X11SurfaceData.IntBgrX11,
|
||||||
|
X11SurfaceData.FourByteAbgrPreX11, true),
|
||||||
|
new X11PMBlitLoops(X11SurfaceData.IntBgrX11,
|
||||||
|
X11SurfaceData.FourByteAbgrPreX11, false),
|
||||||
|
new X11PMBlitLoops(X11SurfaceData.IntBgrX11_BM,
|
||||||
|
X11SurfaceData.FourByteAbgrPreX11, true),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// delegate loops
|
// delegate loops
|
||||||
new DelegateBlitLoop(X11SurfaceData.IntBgrX11_BM,
|
new DelegateBlitLoop(X11SurfaceData.IntBgrX11_BM,
|
||||||
X11SurfaceData.IntBgrX11),
|
X11SurfaceData.IntBgrX11),
|
||||||
|
@ -81,6 +81,13 @@ public abstract class X11SurfaceData extends SurfaceData {
|
|||||||
DESC_INT_BGR_X11 = "Integer BGR Pixmap";
|
DESC_INT_BGR_X11 = "Integer BGR Pixmap";
|
||||||
public static final String
|
public static final String
|
||||||
DESC_INT_RGB_X11 = "Integer RGB Pixmap";
|
DESC_INT_RGB_X11 = "Integer RGB Pixmap";
|
||||||
|
|
||||||
|
public static final String
|
||||||
|
DESC_4BYTE_ABGR_PRE_X11 = "4 byte ABGR Pixmap with pre-multplied alpha";
|
||||||
|
public static final String
|
||||||
|
DESC_INT_ARGB_PRE_X11 = "Integer ARGB Pixmap with pre-multiplied " +
|
||||||
|
"alpha";
|
||||||
|
|
||||||
public static final String
|
public static final String
|
||||||
DESC_BYTE_IND_OPQ_X11 = "Byte Indexed Opaque Pixmap";
|
DESC_BYTE_IND_OPQ_X11 = "Byte Indexed Opaque Pixmap";
|
||||||
|
|
||||||
@ -133,6 +140,11 @@ public abstract class X11SurfaceData extends SurfaceData {
|
|||||||
public static final SurfaceType IntRgbX11 =
|
public static final SurfaceType IntRgbX11 =
|
||||||
SurfaceType.IntRgb.deriveSubType(DESC_INT_RGB_X11);
|
SurfaceType.IntRgb.deriveSubType(DESC_INT_RGB_X11);
|
||||||
|
|
||||||
|
public static final SurfaceType FourByteAbgrPreX11 =
|
||||||
|
SurfaceType.FourByteAbgrPre.deriveSubType(DESC_4BYTE_ABGR_PRE_X11);
|
||||||
|
public static final SurfaceType IntArgbPreX11 =
|
||||||
|
SurfaceType.IntArgbPre.deriveSubType(DESC_INT_ARGB_PRE_X11);
|
||||||
|
|
||||||
public static final SurfaceType ThreeByteRgbX11 =
|
public static final SurfaceType ThreeByteRgbX11 =
|
||||||
SurfaceType.ThreeByteRgb.deriveSubType(DESC_3BYTE_RGB_X11);
|
SurfaceType.ThreeByteRgb.deriveSubType(DESC_3BYTE_RGB_X11);
|
||||||
public static final SurfaceType ThreeByteBgrX11 =
|
public static final SurfaceType ThreeByteBgrX11 =
|
||||||
@ -413,7 +425,7 @@ public abstract class X11SurfaceData extends SurfaceData {
|
|||||||
int transparency)
|
int transparency)
|
||||||
{
|
{
|
||||||
return new X11PixmapSurfaceData(gc, width, height, image,
|
return new X11PixmapSurfaceData(gc, width, height, image,
|
||||||
getSurfaceType(gc, transparency),
|
getSurfaceType(gc, transparency, true),
|
||||||
cm, drawable, transparency);
|
cm, drawable, transparency);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -497,6 +509,13 @@ public abstract class X11SurfaceData extends SurfaceData {
|
|||||||
|
|
||||||
public static SurfaceType getSurfaceType(X11GraphicsConfig gc,
|
public static SurfaceType getSurfaceType(X11GraphicsConfig gc,
|
||||||
int transparency)
|
int transparency)
|
||||||
|
{
|
||||||
|
return getSurfaceType(gc, transparency, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SurfaceType getSurfaceType(X11GraphicsConfig gc,
|
||||||
|
int transparency,
|
||||||
|
boolean pixmapSurface)
|
||||||
{
|
{
|
||||||
boolean transparent = (transparency == Transparency.BITMASK);
|
boolean transparent = (transparency == Transparency.BITMASK);
|
||||||
SurfaceType sType;
|
SurfaceType sType;
|
||||||
@ -524,11 +543,21 @@ public abstract class X11SurfaceData extends SurfaceData {
|
|||||||
// Fall through for 32 bit case
|
// Fall through for 32 bit case
|
||||||
case 32:
|
case 32:
|
||||||
if (cm instanceof DirectColorModel) {
|
if (cm instanceof DirectColorModel) {
|
||||||
if (((DirectColorModel)cm).getRedMask() == 0xff0000) {
|
if (((SunToolkit)java.awt.Toolkit.getDefaultToolkit()
|
||||||
sType = transparent ? X11SurfaceData.IntRgbX11_BM : X11SurfaceData.IntRgbX11;
|
).isTranslucencyCapable(gc) && !pixmapSurface)
|
||||||
|
{
|
||||||
|
sType = X11SurfaceData.IntArgbPreX11;
|
||||||
} else {
|
} else {
|
||||||
sType = transparent ? X11SurfaceData.IntBgrX11_BM : X11SurfaceData.IntBgrX11;
|
if (((DirectColorModel)cm).getRedMask() == 0xff0000) {
|
||||||
|
sType = transparent ? X11SurfaceData.IntRgbX11_BM :
|
||||||
|
X11SurfaceData.IntRgbX11;
|
||||||
|
} else {
|
||||||
|
sType = transparent ? X11SurfaceData.IntBgrX11_BM :
|
||||||
|
X11SurfaceData.IntBgrX11;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else if (cm instanceof ComponentColorModel) {
|
||||||
|
sType = X11SurfaceData.FourByteAbgrPreX11;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
throw new sun.java2d.InvalidPipeException("Unsupported bit " +
|
throw new sun.java2d.InvalidPipeException("Unsupported bit " +
|
||||||
|
@ -886,6 +886,27 @@ awt_allocate_colors(AwtGraphicsConfigDataPtr awt_data)
|
|||||||
#define blue(v) (((v) >> 0) & 0xFF)
|
#define blue(v) (((v) >> 0) & 0xFF)
|
||||||
|
|
||||||
#ifndef HEADLESS
|
#ifndef HEADLESS
|
||||||
|
|
||||||
|
jobject getColorSpace(JNIEnv* env, jint csID) {
|
||||||
|
jclass clazz;
|
||||||
|
jobject cspaceL;
|
||||||
|
jmethodID mid;
|
||||||
|
|
||||||
|
clazz = (*env)->FindClass(env,"java/awt/color/ColorSpace");
|
||||||
|
mid = (*env)->GetStaticMethodID(env, clazz, "getInstance",
|
||||||
|
"(I)Ljava/awt/color/ColorSpace;");
|
||||||
|
if (mid == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SECURITY: This is safe, because static methods cannot
|
||||||
|
* be overridden, and this method does not invoke
|
||||||
|
* client code
|
||||||
|
*/
|
||||||
|
|
||||||
|
return (*env)->CallStaticObjectMethod(env, clazz, mid, csID);
|
||||||
|
}
|
||||||
|
|
||||||
jobject awtJNI_GetColorModel(JNIEnv *env, AwtGraphicsConfigDataPtr aData)
|
jobject awtJNI_GetColorModel(JNIEnv *env, AwtGraphicsConfigDataPtr aData)
|
||||||
{
|
{
|
||||||
jobject awt_colormodel = NULL;
|
jobject awt_colormodel = NULL;
|
||||||
@ -899,21 +920,61 @@ jobject awtJNI_GetColorModel(JNIEnv *env, AwtGraphicsConfigDataPtr aData)
|
|||||||
(aData->awt_depth >= 15))
|
(aData->awt_depth >= 15))
|
||||||
{
|
{
|
||||||
clazz = (*env)->FindClass(env,"java/awt/image/DirectColorModel");
|
clazz = (*env)->FindClass(env,"java/awt/image/DirectColorModel");
|
||||||
|
if (!aData->isTranslucencySupported) {
|
||||||
|
|
||||||
mid = (*env)->GetMethodID(env,clazz,"<init>","(IIIII)V");
|
mid = (*env)->GetMethodID(env,clazz,"<init>","(IIIII)V");
|
||||||
|
|
||||||
if (mid == NULL) {
|
if (mid == NULL) {
|
||||||
(*env)->PopLocalFrame(env, 0);
|
(*env)->PopLocalFrame(env, 0);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
awt_colormodel = (*env)->NewObject(env,clazz, mid,
|
||||||
|
aData->awt_visInfo.depth,
|
||||||
|
aData->awt_visInfo.red_mask,
|
||||||
|
aData->awt_visInfo.green_mask,
|
||||||
|
aData->awt_visInfo.blue_mask,
|
||||||
|
0);
|
||||||
|
} else {
|
||||||
|
clazz = (*env)->FindClass(env,"sun/awt/X11GraphicsConfig");
|
||||||
|
if (clazz == NULL) {
|
||||||
|
(*env)->PopLocalFrame(env, 0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aData->renderPictFormat.direct.red == 16) {
|
||||||
|
mid = (*env)->GetStaticMethodID( env,clazz,"createDCM32",
|
||||||
|
"(IIIIZ)Ljava/awt/image/DirectColorModel;");
|
||||||
|
|
||||||
|
if (mid == NULL) {
|
||||||
|
(*env)->PopLocalFrame(env, 0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
awt_colormodel = (*env)->CallStaticObjectMethod(
|
||||||
|
env,clazz, mid,
|
||||||
|
aData->renderPictFormat.direct.redMask
|
||||||
|
<< aData->renderPictFormat.direct.red,
|
||||||
|
aData->renderPictFormat.direct.greenMask
|
||||||
|
<< aData->renderPictFormat.direct.green,
|
||||||
|
aData->renderPictFormat.direct.blueMask
|
||||||
|
<< aData->renderPictFormat.direct.blue,
|
||||||
|
aData->renderPictFormat.direct.alphaMask
|
||||||
|
<< aData->renderPictFormat.direct.alpha,
|
||||||
|
JNI_TRUE);
|
||||||
|
} else {
|
||||||
|
mid = (*env)->GetStaticMethodID( env,clazz,"createABGRCCM",
|
||||||
|
"()Ljava/awt/image/ComponentColorModel;");
|
||||||
|
|
||||||
|
if (mid == NULL) {
|
||||||
|
(*env)->PopLocalFrame(env, 0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
awt_colormodel = (*env)->CallStaticObjectMethod(
|
||||||
|
env,clazz, mid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
awt_colormodel = (*env)->NewObject(env,clazz, mid,
|
|
||||||
aData->awt_visInfo.depth,
|
|
||||||
aData->awt_visInfo.red_mask,
|
|
||||||
aData->awt_visInfo.green_mask,
|
|
||||||
aData->awt_visInfo.blue_mask,
|
|
||||||
0);
|
|
||||||
|
|
||||||
if(awt_colormodel == NULL)
|
if(awt_colormodel == NULL)
|
||||||
{
|
{
|
||||||
(*env)->PopLocalFrame(env, 0);
|
(*env)->PopLocalFrame(env, 0);
|
||||||
@ -923,25 +984,13 @@ jobject awtJNI_GetColorModel(JNIEnv *env, AwtGraphicsConfigDataPtr aData)
|
|||||||
}
|
}
|
||||||
else if (aData->awt_visInfo.class == StaticGray &&
|
else if (aData->awt_visInfo.class == StaticGray &&
|
||||||
aData->awt_num_colors == 256) {
|
aData->awt_num_colors == 256) {
|
||||||
jclass clazz1;
|
|
||||||
jobject cspace = NULL;
|
jobject cspace = NULL;
|
||||||
jint bits[1];
|
jint bits[1];
|
||||||
jintArray bitsArray;
|
jintArray bitsArray;
|
||||||
jboolean falseboolean = JNI_FALSE;
|
jboolean falseboolean = JNI_FALSE;
|
||||||
|
|
||||||
clazz1 = (*env)->FindClass(env,"java/awt/color/ColorSpace");
|
cspace = getColorSpace(env, java_awt_color_ColorSpace_CS_GRAY);
|
||||||
mid = (*env)->GetStaticMethodID(env, clazz1, "getInstance",
|
|
||||||
"(I)Ljava/awt/color/ColorSpace;");
|
|
||||||
if (mid == NULL) {
|
|
||||||
(*env)->PopLocalFrame(env, 0);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
/* SECURITY: This is safe, because static methods cannot
|
|
||||||
* be overridden, and this method does not invoke
|
|
||||||
* client code
|
|
||||||
*/
|
|
||||||
cspace = (*env)->CallStaticObjectMethod(env, clazz1, mid,
|
|
||||||
java_awt_color_ColorSpace_CS_GRAY);
|
|
||||||
if (cspace == NULL) {
|
if (cspace == NULL) {
|
||||||
(*env)->PopLocalFrame(env, 0);
|
(*env)->PopLocalFrame(env, 0);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -323,48 +323,6 @@ makeDefaultConfig(JNIEnv *env, int screen) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Note: until we include the <X11/extensions/Xrender.h> explicitly
|
|
||||||
* we have to define a couple of things ourselves.
|
|
||||||
*/
|
|
||||||
typedef unsigned long PictFormat;
|
|
||||||
#define PictTypeIndexed 0
|
|
||||||
#define PictTypeDirect 1
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
short red;
|
|
||||||
short redMask;
|
|
||||||
short green;
|
|
||||||
short greenMask;
|
|
||||||
short blue;
|
|
||||||
short blueMask;
|
|
||||||
short alpha;
|
|
||||||
short alphaMask;
|
|
||||||
} XRenderDirectFormat;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
PictFormat id;
|
|
||||||
int type;
|
|
||||||
int depth;
|
|
||||||
XRenderDirectFormat direct;
|
|
||||||
Colormap colormap;
|
|
||||||
} XRenderPictFormat;
|
|
||||||
|
|
||||||
#define PictFormatID (1 << 0)
|
|
||||||
#define PictFormatType (1 << 1)
|
|
||||||
#define PictFormatDepth (1 << 2)
|
|
||||||
#define PictFormatRed (1 << 3)
|
|
||||||
#define PictFormatRedMask (1 << 4)
|
|
||||||
#define PictFormatGreen (1 << 5)
|
|
||||||
#define PictFormatGreenMask (1 << 6)
|
|
||||||
#define PictFormatBlue (1 << 7)
|
|
||||||
#define PictFormatBlueMask (1 << 8)
|
|
||||||
#define PictFormatAlpha (1 << 9)
|
|
||||||
#define PictFormatAlphaMask (1 << 10)
|
|
||||||
#define PictFormatColormap (1 << 11)
|
|
||||||
|
|
||||||
typedef XRenderPictFormat *
|
|
||||||
XRenderFindVisualFormatFunc (Display *dpy, _Xconst Visual *visual);
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
getAllConfigs (JNIEnv *env, int screen, AwtScreenDataPtr screenDataPtr) {
|
getAllConfigs (JNIEnv *env, int screen, AwtScreenDataPtr screenDataPtr) {
|
||||||
|
|
||||||
@ -504,6 +462,8 @@ getAllConfigs (JNIEnv *env, int screen, AwtScreenDataPtr screenDataPtr) {
|
|||||||
format->direct.alphaMask)
|
format->direct.alphaMask)
|
||||||
{
|
{
|
||||||
graphicsConfigs [ind]->isTranslucencySupported = 1;
|
graphicsConfigs [ind]->isTranslucencySupported = 1;
|
||||||
|
memcpy(&graphicsConfigs [ind]->renderPictFormat, format,
|
||||||
|
sizeof(*format));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -119,6 +119,50 @@ typedef struct _DamageRect {
|
|||||||
} DamageRect;
|
} DamageRect;
|
||||||
|
|
||||||
#ifndef HEADLESS
|
#ifndef HEADLESS
|
||||||
|
|
||||||
|
/* Note: until we include the <X11/extensions/Xrender.h> explicitly
|
||||||
|
* we have to define a couple of things ourselves.
|
||||||
|
*/
|
||||||
|
typedef unsigned long PictFormat;
|
||||||
|
#define PictTypeIndexed 0
|
||||||
|
#define PictTypeDirect 1
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
short red;
|
||||||
|
short redMask;
|
||||||
|
short green;
|
||||||
|
short greenMask;
|
||||||
|
short blue;
|
||||||
|
short blueMask;
|
||||||
|
short alpha;
|
||||||
|
short alphaMask;
|
||||||
|
} XRenderDirectFormat;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
PictFormat id;
|
||||||
|
int type;
|
||||||
|
int depth;
|
||||||
|
XRenderDirectFormat direct;
|
||||||
|
Colormap colormap;
|
||||||
|
} XRenderPictFormat;
|
||||||
|
|
||||||
|
#define PictFormatID (1 << 0)
|
||||||
|
#define PictFormatType (1 << 1)
|
||||||
|
#define PictFormatDepth (1 << 2)
|
||||||
|
#define PictFormatRed (1 << 3)
|
||||||
|
#define PictFormatRedMask (1 << 4)
|
||||||
|
#define PictFormatGreen (1 << 5)
|
||||||
|
#define PictFormatGreenMask (1 << 6)
|
||||||
|
#define PictFormatBlue (1 << 7)
|
||||||
|
#define PictFormatBlueMask (1 << 8)
|
||||||
|
#define PictFormatAlpha (1 << 9)
|
||||||
|
#define PictFormatAlphaMask (1 << 10)
|
||||||
|
#define PictFormatColormap (1 << 11)
|
||||||
|
|
||||||
|
typedef XRenderPictFormat *
|
||||||
|
XRenderFindVisualFormatFunc (Display *dpy, _Xconst Visual *visual);
|
||||||
|
/* END OF Xrender.h chunk */
|
||||||
|
|
||||||
typedef struct _AwtGraphicsConfigData {
|
typedef struct _AwtGraphicsConfigData {
|
||||||
int awt_depth;
|
int awt_depth;
|
||||||
Colormap awt_cmap;
|
Colormap awt_cmap;
|
||||||
@ -136,6 +180,7 @@ typedef struct _AwtGraphicsConfigData {
|
|||||||
ColorData *color_data;
|
ColorData *color_data;
|
||||||
struct _GLXGraphicsConfigInfo *glxInfo;
|
struct _GLXGraphicsConfigInfo *glxInfo;
|
||||||
int isTranslucencySupported; /* Uses Xrender to find this out. */
|
int isTranslucencySupported; /* Uses Xrender to find this out. */
|
||||||
|
XRenderPictFormat renderPictFormat; /*Used only if translucency supported*/
|
||||||
} AwtGraphicsConfigData;
|
} AwtGraphicsConfigData;
|
||||||
|
|
||||||
typedef AwtGraphicsConfigData* AwtGraphicsConfigDataPtr;
|
typedef AwtGraphicsConfigData* AwtGraphicsConfigDataPtr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user