下面列出了怎么用sun.java2d.pipe.RenderQueue的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Enqueues a BLIT operation with the given parameters. Note that the
* RenderQueue lock must be held before calling this method.
*/
private static void enqueueBlit(RenderQueue rq,
SurfaceData src, SurfaceData dst,
int packedParams,
int sx1, int sy1,
int sx2, int sy2,
double dx1, double dy1,
double dx2, double dy2)
{
// assert rq.lock.isHeldByCurrentThread();
RenderBuffer buf = rq.getBuffer();
rq.ensureCapacityAndAlignment(72, 24);
buf.putInt(BLIT);
buf.putInt(packedParams);
buf.putInt(sx1).putInt(sy1);
buf.putInt(sx2).putInt(sy2);
buf.putDouble(dx1).putDouble(dy1);
buf.putDouble(dx2).putDouble(dy2);
buf.putLong(src.getNativeOps());
buf.putLong(dst.getNativeOps());
}
/**
* Enqueues a BLIT operation with the given parameters. Note that the
* RenderQueue lock must be held before calling this method.
*/
private static void enqueueBlit(RenderQueue rq,
SurfaceData src, SurfaceData dst,
int packedParams,
int sx1, int sy1,
int sx2, int sy2,
double dx1, double dy1,
double dx2, double dy2)
{
// assert rq.lock.isHeldByCurrentThread();
RenderBuffer buf = rq.getBuffer();
rq.ensureCapacityAndAlignment(72, 24);
buf.putInt(BLIT);
buf.putInt(packedParams);
buf.putInt(sx1).putInt(sy1);
buf.putInt(sx2).putInt(sy2);
buf.putDouble(dx1).putDouble(dy1);
buf.putDouble(dx2).putDouble(dy2);
buf.putLong(src.getNativeOps());
buf.putLong(dst.getNativeOps());
}
/**
* Enqueues a BLIT operation with the given parameters. Note that the
* RenderQueue lock must be held before calling this method.
*/
private static void enqueueBlit(RenderQueue rq,
SurfaceData src, SurfaceData dst,
int packedParams,
int sx1, int sy1,
int sx2, int sy2,
double dx1, double dy1,
double dx2, double dy2)
{
// assert rq.lock.isHeldByCurrentThread();
RenderBuffer buf = rq.getBuffer();
rq.ensureCapacityAndAlignment(72, 24);
buf.putInt(BLIT);
buf.putInt(packedParams);
buf.putInt(sx1).putInt(sy1);
buf.putInt(sx2).putInt(sy2);
buf.putDouble(dx1).putDouble(dy1);
buf.putDouble(dx2).putDouble(dy2);
buf.putLong(src.getNativeOps());
buf.putLong(dst.getNativeOps());
}
private static void testContext(final AccelGraphicsConfig agc) {
BufferedContext c = agc.getContext();
final AccelDeviceEventListener l = new AccelDeviceEventListener() {
public void onDeviceDispose() {
System.out.println("onDeviceDispose invoked");
agc.removeDeviceEventListener(this);
}
public void onDeviceReset() {
System.out.println("onDeviceReset invoked");
}
};
agc.addDeviceEventListener(l);
RenderQueue rq = c.getRenderQueue();
rq.lock();
try {
c.saveState();
rq.flushNow();
c.restoreState();
rq.flushNow();
System.out.println("Passed: Save/Restore");
} finally {
rq.unlock();
}
}
/**
* Enqueues a BLIT operation with the given parameters. Note that the
* RenderQueue lock must be held before calling this method.
*/
private static void enqueueBlit(RenderQueue rq,
SurfaceData src, SurfaceData dst,
int packedParams,
int sx1, int sy1,
int sx2, int sy2,
double dx1, double dy1,
double dx2, double dy2)
{
// assert rq.lock.isHeldByCurrentThread();
RenderBuffer buf = rq.getBuffer();
rq.ensureCapacityAndAlignment(72, 24);
buf.putInt(BLIT);
buf.putInt(packedParams);
buf.putInt(sx1).putInt(sy1);
buf.putInt(sx2).putInt(sy2);
buf.putDouble(dx1).putDouble(dy1);
buf.putDouble(dx2).putDouble(dy2);
buf.putLong(src.getNativeOps());
buf.putLong(dst.getNativeOps());
}
private static void testContext(final AccelGraphicsConfig agc) {
BufferedContext c = agc.getContext();
final AccelDeviceEventListener l = new AccelDeviceEventListener() {
public void onDeviceDispose() {
System.out.println("onDeviceDispose invoked");
agc.removeDeviceEventListener(this);
}
public void onDeviceReset() {
System.out.println("onDeviceReset invoked");
}
};
agc.addDeviceEventListener(l);
RenderQueue rq = c.getRenderQueue();
rq.lock();
try {
c.saveState();
rq.flushNow();
c.restoreState();
rq.flushNow();
System.out.println("Passed: Save/Restore");
} finally {
rq.unlock();
}
}
private static void testContext(final AccelGraphicsConfig agc) {
BufferedContext c = agc.getContext();
final AccelDeviceEventListener l = new AccelDeviceEventListener() {
public void onDeviceDispose() {
System.out.println("onDeviceDispose invoked");
agc.removeDeviceEventListener(this);
}
public void onDeviceReset() {
System.out.println("onDeviceReset invoked");
}
};
agc.addDeviceEventListener(l);
RenderQueue rq = c.getRenderQueue();
rq.lock();
try {
c.saveState();
rq.flushNow();
c.restoreState();
rq.flushNow();
System.out.println("Passed: Save/Restore");
} finally {
rq.unlock();
}
}
private static void testContext(final AccelGraphicsConfig agc) {
BufferedContext c = agc.getContext();
final AccelDeviceEventListener l = new AccelDeviceEventListener() {
public void onDeviceDispose() {
System.out.println("onDeviceDispose invoked");
agc.removeDeviceEventListener(this);
}
public void onDeviceReset() {
System.out.println("onDeviceReset invoked");
}
};
agc.addDeviceEventListener(l);
RenderQueue rq = c.getRenderQueue();
rq.lock();
try {
c.saveState();
rq.flushNow();
c.restoreState();
rq.flushNow();
System.out.println("Passed: Save/Restore");
} finally {
rq.unlock();
}
}
/**
* Enqueues a BLIT operation with the given parameters. Note that the
* RenderQueue lock must be held before calling this method.
*/
private static void enqueueBlit(RenderQueue rq,
SurfaceData src, SurfaceData dst,
int packedParams,
int sx1, int sy1,
int sx2, int sy2,
double dx1, double dy1,
double dx2, double dy2)
{
// assert rq.lock.isHeldByCurrentThread();
RenderBuffer buf = rq.getBuffer();
rq.ensureCapacityAndAlignment(72, 24);
buf.putInt(BLIT);
buf.putInt(packedParams);
buf.putInt(sx1).putInt(sy1);
buf.putInt(sx2).putInt(sy2);
buf.putDouble(dx1).putDouble(dy1);
buf.putDouble(dx2).putDouble(dy2);
buf.putLong(src.getNativeOps());
buf.putLong(dst.getNativeOps());
}
/**
* Enqueues a BLIT operation with the given parameters. Note that the
* RenderQueue lock must be held before calling this method.
*/
private static void enqueueBlit(RenderQueue rq,
SurfaceData src, SurfaceData dst,
int packedParams,
int sx1, int sy1,
int sx2, int sy2,
double dx1, double dy1,
double dx2, double dy2)
{
// assert rq.lock.isHeldByCurrentThread();
RenderBuffer buf = rq.getBuffer();
rq.ensureCapacityAndAlignment(72, 24);
buf.putInt(BLIT);
buf.putInt(packedParams);
buf.putInt(sx1).putInt(sy1);
buf.putInt(sx2).putInt(sy2);
buf.putDouble(dx1).putDouble(dy1);
buf.putDouble(dx2).putDouble(dy2);
buf.putLong(src.getNativeOps());
buf.putLong(dst.getNativeOps());
}
/**
* Enqueues a BLIT operation with the given parameters. Note that the
* RenderQueue lock must be held before calling this method.
*/
private static void enqueueBlit(RenderQueue rq,
SurfaceData src, SurfaceData dst,
int packedParams,
int sx1, int sy1,
int sx2, int sy2,
double dx1, double dy1,
double dx2, double dy2)
{
// assert rq.lock.isHeldByCurrentThread();
RenderBuffer buf = rq.getBuffer();
rq.ensureCapacityAndAlignment(72, 24);
buf.putInt(BLIT);
buf.putInt(packedParams);
buf.putInt(sx1).putInt(sy1);
buf.putInt(sx2).putInt(sy2);
buf.putDouble(dx1).putDouble(dy1);
buf.putDouble(dx2).putDouble(dy2);
buf.putLong(src.getNativeOps());
buf.putLong(dst.getNativeOps());
}
/**
* Enqueues a BLIT operation with the given parameters. Note that the
* RenderQueue lock must be held before calling this method.
*/
private static void enqueueBlit(RenderQueue rq,
SurfaceData src, SurfaceData dst,
int packedParams,
int sx1, int sy1,
int sx2, int sy2,
double dx1, double dy1,
double dx2, double dy2)
{
// assert rq.lock.isHeldByCurrentThread();
RenderBuffer buf = rq.getBuffer();
rq.ensureCapacityAndAlignment(72, 24);
buf.putInt(BLIT);
buf.putInt(packedParams);
buf.putInt(sx1).putInt(sy1);
buf.putInt(sx2).putInt(sy2);
buf.putDouble(dx1).putDouble(dy1);
buf.putDouble(dx2).putDouble(dy2);
buf.putLong(src.getNativeOps());
buf.putLong(dst.getNativeOps());
}
/**
* Enqueues a BLIT operation with the given parameters. Note that the
* RenderQueue lock must be held before calling this method.
*/
private static void enqueueBlit(RenderQueue rq,
SurfaceData src, SurfaceData dst,
int packedParams,
int sx1, int sy1,
int sx2, int sy2,
double dx1, double dy1,
double dx2, double dy2)
{
// assert rq.lock.isHeldByCurrentThread();
RenderBuffer buf = rq.getBuffer();
rq.ensureCapacityAndAlignment(72, 24);
buf.putInt(BLIT);
buf.putInt(packedParams);
buf.putInt(sx1).putInt(sy1);
buf.putInt(sx2).putInt(sy2);
buf.putDouble(dx1).putDouble(dy1);
buf.putDouble(dx2).putDouble(dy2);
buf.putLong(src.getNativeOps());
buf.putLong(dst.getNativeOps());
}
private static void testContext(final AccelGraphicsConfig agc) {
BufferedContext c = agc.getContext();
final AccelDeviceEventListener l = new AccelDeviceEventListener() {
public void onDeviceDispose() {
System.out.println("onDeviceDispose invoked");
agc.removeDeviceEventListener(this);
}
public void onDeviceReset() {
System.out.println("onDeviceReset invoked");
}
};
agc.addDeviceEventListener(l);
RenderQueue rq = c.getRenderQueue();
rq.lock();
try {
c.saveState();
rq.flushNow();
c.restoreState();
rq.flushNow();
System.out.println("Passed: Save/Restore");
} finally {
rq.unlock();
}
}
private static void testContext(final AccelGraphicsConfig agc) {
BufferedContext c = agc.getContext();
final AccelDeviceEventListener l = new AccelDeviceEventListener() {
public void onDeviceDispose() {
System.out.println("onDeviceDispose invoked");
agc.removeDeviceEventListener(this);
}
public void onDeviceReset() {
System.out.println("onDeviceReset invoked");
}
};
agc.addDeviceEventListener(l);
RenderQueue rq = c.getRenderQueue();
rq.lock();
try {
c.saveState();
rq.flushNow();
c.restoreState();
rq.flushNow();
System.out.println("Passed: Save/Restore");
} finally {
rq.unlock();
}
}
private static void printSurface(Surface s) {
if (s instanceof AccelSurface) {
final AccelSurface surface = (AccelSurface) s;
System.out.println(" Accel Surface: ");
System.out.println(" type=" + surface.getType());
System.out.println(" bounds=" + surface.getBounds());
System.out.println(" nativeBounds=" + surface.getNativeBounds());
System.out.println(" isSurfaceLost=" + surface.isSurfaceLost());
System.out.println(" isValid=" + surface.isValid());
RenderQueue rq = surface.getContext().getRenderQueue();
rq.lock();
try {
rq.flushAndInvokeNow(new Runnable() {
public void run() {
System.out.printf(" getNativeResource(TEXTURE)=0x%x\n",
surface.getNativeResource(TEXTURE));
System.out.printf(" getNativeResource(RT_TEXTURE)=0x%x\n",
surface.getNativeResource(RT_TEXTURE));
System.out.printf(" getNativeResource(RT_PLAIN)=0x%x\n",
surface.getNativeResource(RT_PLAIN));
System.out.printf(
" getNativeResource(FLIP_BACKBUFFER)=0x%x\n",
surface.getNativeResource(FLIP_BACKBUFFER));
testD3DDeviceResourceField(surface);
testInvalidType(surface, -1);
testInvalidType(surface, -150);
testInvalidType(surface, 300);
testInvalidType(surface, Integer.MAX_VALUE);
testInvalidType(surface, Integer.MIN_VALUE);
}
});
} finally {
rq.unlock();
}
} else {
System.out.println("null accelerated surface");
}
}
private static void printSurface(Surface s) {
if (s instanceof AccelSurface) {
final AccelSurface surface = (AccelSurface) s;
System.out.println(" Accel Surface: ");
System.out.println(" type=" + surface.getType());
System.out.println(" bounds=" + surface.getBounds());
System.out.println(" nativeBounds=" + surface.getNativeBounds());
System.out.println(" isSurfaceLost=" + surface.isSurfaceLost());
System.out.println(" isValid=" + surface.isValid());
RenderQueue rq = surface.getContext().getRenderQueue();
rq.lock();
try {
rq.flushAndInvokeNow(new Runnable() {
public void run() {
System.out.printf(" getNativeResource(TEXTURE)=0x%x\n",
surface.getNativeResource(TEXTURE));
System.out.printf(" getNativeResource(RT_TEXTURE)=0x%x\n",
surface.getNativeResource(RT_TEXTURE));
System.out.printf(" getNativeResource(RT_PLAIN)=0x%x\n",
surface.getNativeResource(RT_PLAIN));
System.out.printf(
" getNativeResource(FLIP_BACKBUFFER)=0x%x\n",
surface.getNativeResource(FLIP_BACKBUFFER));
testD3DDeviceResourceField(surface);
testInvalidType(surface, -1);
testInvalidType(surface, -150);
testInvalidType(surface, 300);
testInvalidType(surface, Integer.MAX_VALUE);
testInvalidType(surface, Integer.MIN_VALUE);
}
});
} finally {
rq.unlock();
}
} else {
System.out.println("null accelerated surface");
}
}
@Override
protected boolean update(Image bb) {
if (bb instanceof DestSurfaceProvider) {
Surface s = ((DestSurfaceProvider)bb).getDestSurface();
if (s instanceof AccelSurface) {
final int w = bb.getWidth(null);
final int h = bb.getHeight(null);
final boolean arr[] = { false };
final AccelSurface as = (AccelSurface)s;
RenderQueue rq = as.getContext().getRenderQueue();
rq.lock();
try {
BufferedContext.validateContext(as);
rq.flushAndInvokeNow(new Runnable() {
@Override
public void run() {
long psdops = as.getNativeOps();
arr[0] = updateWindowAccel(psdops, w, h);
}
});
} catch (InvalidPipeException e) {
// ignore, false will be returned
} finally {
rq.unlock();
}
return arr[0];
}
}
return super.update(bb);
}
@Override
protected boolean update(Image bb) {
if (bb instanceof DestSurfaceProvider) {
Surface s = ((DestSurfaceProvider)bb).getDestSurface();
if (s instanceof AccelSurface) {
final int w = bb.getWidth(null);
final int h = bb.getHeight(null);
final boolean arr[] = { false };
final AccelSurface as = (AccelSurface)s;
RenderQueue rq = as.getContext().getRenderQueue();
rq.lock();
try {
BufferedContext.validateContext(as);
rq.flushAndInvokeNow(new Runnable() {
@Override
public void run() {
long psdops = as.getNativeOps();
arr[0] = updateWindowAccel(psdops, w, h);
}
});
} catch (InvalidPipeException e) {
// ignore, false will be returned
} finally {
rq.unlock();
}
return arr[0];
}
}
return super.update(bb);
}
@Override
protected boolean update(Image bb) {
if (bb instanceof DestSurfaceProvider) {
Surface s = ((DestSurfaceProvider)bb).getDestSurface();
if (s instanceof AccelSurface) {
final int w = bb.getWidth(null);
final int h = bb.getHeight(null);
final boolean arr[] = { false };
final AccelSurface as = (AccelSurface)s;
RenderQueue rq = as.getContext().getRenderQueue();
rq.lock();
try {
BufferedContext.validateContext(as);
rq.flushAndInvokeNow(new Runnable() {
@Override
public void run() {
long psdops = as.getNativeOps();
arr[0] = updateWindowAccel(psdops, w, h);
}
});
} catch (InvalidPipeException e) {
// ignore, false will be returned
} finally {
rq.unlock();
}
return arr[0];
}
}
return super.update(bb);
}
private static void printSurface(Surface s) {
if (s instanceof AccelSurface) {
final AccelSurface surface = (AccelSurface) s;
System.out.println(" Accel Surface: ");
System.out.println(" type=" + surface.getType());
System.out.println(" bounds=" + surface.getBounds());
System.out.println(" nativeBounds=" + surface.getNativeBounds());
System.out.println(" isSurfaceLost=" + surface.isSurfaceLost());
System.out.println(" isValid=" + surface.isValid());
RenderQueue rq = surface.getContext().getRenderQueue();
rq.lock();
try {
rq.flushAndInvokeNow(new Runnable() {
public void run() {
System.out.printf(" getNativeResource(TEXTURE)=0x%x\n",
surface.getNativeResource(TEXTURE));
System.out.printf(" getNativeResource(RT_TEXTURE)=0x%x\n",
surface.getNativeResource(RT_TEXTURE));
System.out.printf(" getNativeResource(RT_PLAIN)=0x%x\n",
surface.getNativeResource(RT_PLAIN));
System.out.printf(
" getNativeResource(FLIP_BACKBUFFER)=0x%x\n",
surface.getNativeResource(FLIP_BACKBUFFER));
testD3DDeviceResourceField(surface);
testInvalidType(surface, -1);
testInvalidType(surface, -150);
testInvalidType(surface, 300);
testInvalidType(surface, Integer.MAX_VALUE);
testInvalidType(surface, Integer.MIN_VALUE);
}
});
} finally {
rq.unlock();
}
} else {
System.out.println("null accelerated surface");
}
}
@Override
protected boolean update(Image bb) {
if (bb instanceof DestSurfaceProvider) {
Surface s = ((DestSurfaceProvider)bb).getDestSurface();
if (s instanceof AccelSurface) {
final int w = bb.getWidth(null);
final int h = bb.getHeight(null);
final boolean arr[] = { false };
final AccelSurface as = (AccelSurface)s;
RenderQueue rq = as.getContext().getRenderQueue();
rq.lock();
try {
BufferedContext.validateContext(as);
rq.flushAndInvokeNow(new Runnable() {
@Override
public void run() {
long psdops = as.getNativeOps();
arr[0] = updateWindowAccel(psdops, w, h);
}
});
} catch (InvalidPipeException e) {
// ignore, false will be returned
} finally {
rq.unlock();
}
return arr[0];
}
}
return super.update(bb);
}
@Override
protected boolean update(Image bb) {
if (bb instanceof DestSurfaceProvider) {
Surface s = ((DestSurfaceProvider)bb).getDestSurface();
if (s instanceof AccelSurface) {
final int w = bb.getWidth(null);
final int h = bb.getHeight(null);
final boolean arr[] = { false };
final AccelSurface as = (AccelSurface)s;
RenderQueue rq = as.getContext().getRenderQueue();
rq.lock();
try {
BufferedContext.validateContext(as);
rq.flushAndInvokeNow(new Runnable() {
public void run() {
long psdops = as.getNativeOps();
arr[0] = updateWindowAccel(psdops, w, h);
}
});
} catch (InvalidPipeException e) {
// ignore, false will be returned
} finally {
rq.unlock();
}
return arr[0];
}
}
return super.update(bb);
}
@Override
protected boolean update(Image bb) {
if (bb instanceof DestSurfaceProvider) {
Surface s = ((DestSurfaceProvider)bb).getDestSurface();
if (s instanceof AccelSurface) {
final boolean arr[] = { false };
final AccelSurface as = (AccelSurface)s;
final int w = as.getBounds().width;
final int h = as.getBounds().height;
RenderQueue rq = as.getContext().getRenderQueue();
rq.lock();
try {
BufferedContext.validateContext(as);
rq.flushAndInvokeNow(new Runnable() {
@Override
public void run() {
long psdops = as.getNativeOps();
arr[0] = updateWindowAccel(psdops, w, h);
}
});
} catch (InvalidPipeException e) {
// ignore, false will be returned
} finally {
rq.unlock();
}
return arr[0];
}
}
return super.update(bb);
}
@Override
protected boolean update(Image bb) {
if (bb instanceof DestSurfaceProvider) {
Surface s = ((DestSurfaceProvider)bb).getDestSurface();
if (s instanceof AccelSurface) {
final int w = bb.getWidth(null);
final int h = bb.getHeight(null);
final boolean arr[] = { false };
final AccelSurface as = (AccelSurface)s;
RenderQueue rq = as.getContext().getRenderQueue();
rq.lock();
try {
BufferedContext.validateContext(as);
rq.flushAndInvokeNow(new Runnable() {
@Override
public void run() {
long psdops = as.getNativeOps();
arr[0] = updateWindowAccel(psdops, w, h);
}
});
} catch (InvalidPipeException e) {
// ignore, false will be returned
} finally {
rq.unlock();
}
return arr[0];
}
}
return super.update(bb);
}
private static void printSurface(Surface s) {
if (s instanceof AccelSurface) {
final AccelSurface surface = (AccelSurface) s;
System.out.println(" Accel Surface: ");
System.out.println(" type=" + surface.getType());
System.out.println(" bounds=" + surface.getBounds());
System.out.println(" nativeBounds=" + surface.getNativeBounds());
System.out.println(" isSurfaceLost=" + surface.isSurfaceLost());
System.out.println(" isValid=" + surface.isValid());
RenderQueue rq = surface.getContext().getRenderQueue();
rq.lock();
try {
rq.flushAndInvokeNow(new Runnable() {
public void run() {
System.out.printf(" getNativeResource(TEXTURE)=0x%x\n",
surface.getNativeResource(TEXTURE));
System.out.printf(" getNativeResource(RT_TEXTURE)=0x%x\n",
surface.getNativeResource(RT_TEXTURE));
System.out.printf(" getNativeResource(RT_PLAIN)=0x%x\n",
surface.getNativeResource(RT_PLAIN));
System.out.printf(
" getNativeResource(FLIP_BACKBUFFER)=0x%x\n",
surface.getNativeResource(FLIP_BACKBUFFER));
testD3DDeviceResourceField(surface);
testInvalidType(surface, -1);
testInvalidType(surface, -150);
testInvalidType(surface, 300);
testInvalidType(surface, Integer.MAX_VALUE);
testInvalidType(surface, Integer.MIN_VALUE);
}
});
} finally {
rq.unlock();
}
} else {
System.out.println("null accelerated surface");
}
}
@Override
protected boolean update(Image bb) {
if (bb instanceof DestSurfaceProvider) {
Surface s = ((DestSurfaceProvider)bb).getDestSurface();
if (s instanceof AccelSurface) {
final int w = bb.getWidth(null);
final int h = bb.getHeight(null);
final boolean arr[] = { false };
final AccelSurface as = (AccelSurface)s;
RenderQueue rq = as.getContext().getRenderQueue();
rq.lock();
try {
BufferedContext.validateContext(as);
rq.flushAndInvokeNow(new Runnable() {
@Override
public void run() {
long psdops = as.getNativeOps();
arr[0] = updateWindowAccel(psdops, w, h);
}
});
} catch (InvalidPipeException e) {
// ignore, false will be returned
} finally {
rq.unlock();
}
return arr[0];
}
}
return super.update(bb);
}
private static void printSurface(Surface s) {
if (s instanceof AccelSurface) {
final AccelSurface surface = (AccelSurface) s;
System.out.println(" Accel Surface: ");
System.out.println(" type=" + surface.getType());
System.out.println(" bounds=" + surface.getBounds());
System.out.println(" nativeBounds=" + surface.getNativeBounds());
System.out.println(" isSurfaceLost=" + surface.isSurfaceLost());
System.out.println(" isValid=" + surface.isValid());
RenderQueue rq = surface.getContext().getRenderQueue();
rq.lock();
try {
rq.flushAndInvokeNow(new Runnable() {
public void run() {
System.out.printf(" getNativeResource(TEXTURE)=0x%x\n",
surface.getNativeResource(TEXTURE));
System.out.printf(" getNativeResource(RT_TEXTURE)=0x%x\n",
surface.getNativeResource(RT_TEXTURE));
System.out.printf(" getNativeResource(RT_PLAIN)=0x%x\n",
surface.getNativeResource(RT_PLAIN));
System.out.printf(
" getNativeResource(FLIP_BACKBUFFER)=0x%x\n",
surface.getNativeResource(FLIP_BACKBUFFER));
testD3DDeviceResourceField(surface);
testInvalidType(surface, -1);
testInvalidType(surface, -150);
testInvalidType(surface, 300);
testInvalidType(surface, Integer.MAX_VALUE);
testInvalidType(surface, Integer.MIN_VALUE);
}
});
} finally {
rq.unlock();
}
} else {
System.out.println("null accelerated surface");
}
}
public RenderQueue getRenderQueue() {
return OGLRenderQueue.getInstance();
}
static void disposeStrike(final FontStrikeDisposer disposer) {
// we need to execute the strike disposal on the rendering thread
// because they may be accessed on that thread at the time of the
// disposal (for example, when the accel. cache is invalidated)
// Whilst this is a bit heavyweight, in most applications
// strike disposal is a relatively infrequent operation, so it
// doesn't matter. But in some tests that use vast numbers
// of strikes, the switching back and forth is measurable.
// So the "pollRemove" call is added to batch up the work.
// If we are polling we know we've already been called back
// and can directly dispose the record.
// Also worrisome is the necessity of getting a GC here.
if (Disposer.pollingQueue) {
doDispose(disposer);
return;
}
RenderQueue rq = null;
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
if (!ge.isHeadless()) {
GraphicsConfiguration gc =
ge.getDefaultScreenDevice().getDefaultConfiguration();
if (gc instanceof AccelGraphicsConfig) {
AccelGraphicsConfig agc = (AccelGraphicsConfig)gc;
BufferedContext bc = agc.getContext();
if (bc != null) {
rq = bc.getRenderQueue();
}
}
}
if (rq != null) {
rq.lock();
try {
rq.flushAndInvokeNow(new Runnable() {
public void run() {
doDispose(disposer);
Disposer.pollRemove();
}
});
} finally {
rq.unlock();
}
} else {
doDispose(disposer);
}
}