本文整理汇总了Java中sun.java2d.d3d.D3DSurfaceData.D3DWindowSurfaceData.isValid方法的典型用法代码示例。如果您正苦于以下问题:Java D3DWindowSurfaceData.isValid方法的具体用法?Java D3DWindowSurfaceData.isValid怎么用?Java D3DWindowSurfaceData.isValid使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sun.java2d.d3d.D3DSurfaceData.D3DWindowSurfaceData
的用法示例。
在下文中一共展示了D3DWindowSurfaceData.isValid方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: run
import sun.java2d.d3d.D3DSurfaceData.D3DWindowSurfaceData; //导入方法依赖的package包/类
public void run() {
while (!done) {
synchronized (runLock) {
// If the list is empty, suspend the thread until a
// new surface is added. Note that we have to check before
// wait() (and inside the runLock), otherwise we could miss a
// notify() when a new surface is added and sleep forever.
long timeout = d3dwSurfaces.size() > 0 ? 100 : 0;
// don't go to sleep if there's a thread waiting for an update
if (!needsUpdateNow) {
try { runLock.wait(timeout); }
catch (InterruptedException e) {}
}
// if we were woken up, there are probably surfaces in the list,
// no need to check if the list is empty
}
// make a copy to avoid synchronization during the loop
D3DWindowSurfaceData surfaces[] = new D3DWindowSurfaceData[] {};
synchronized (this) {
surfaces = d3dwSurfaces.toArray(surfaces);
}
for (D3DWindowSurfaceData sd : surfaces) {
// skip invalid surfaces (they could have become invalid
// after we made a copy of the list) - just a precaution
if (sd.isValid() && (sd.isDirty() || sd.isSurfaceLost())) {
if (!sd.isSurfaceLost()) {
// the flip and the clearing of the dirty state
// must be done under the lock, otherwise it's
// possible to miss an update to the surface
D3DRenderQueue rq = D3DRenderQueue.getInstance();
rq.lock();
try {
Rectangle r = sd.getBounds();
D3DSurfaceData.swapBuffers(sd, 0, 0,
r.width, r.height);
sd.markClean();
} finally {
rq.unlock();
}
} else if (!validate(sd)) {
// it is possible that the validation may never
// succeed, we need to detect this and replace
// the d3dw surface with gdi; the replacement of
// the surface will also trigger a repaint
sd.getPeer().replaceSurfaceDataLater();
}
}
}
synchronized (runLock) {
needsUpdateNow = false;
runLock.notifyAll();
}
}
}