Beginnings of support for asynchronous resolution of scene image data.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2461 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2003-04-25 18:22:26 +00:00
parent 2051770c91
commit a03ad10f8d
@@ -0,0 +1,52 @@
//
// $Id: SceneBlockResolver.java,v 1.1 2003/04/25 18:22:26 mdb Exp $
package com.threerings.miso.client;
import java.awt.EventQueue;
import com.samskivert.util.LoopingThread;
import com.samskivert.util.Queue;
import com.threerings.miso.Log;
/**
* A separate thread for resolving miso scene blocks.
*/
public class SceneBlockResolver extends LoopingThread
{
/**
* Queues up a scene block for resolution.
*/
public void resolveBlock (SceneBlock block)
{
_queue.append(block);
}
// documentation inherited
public void iterate ()
{
final SceneBlock block = (SceneBlock)_queue.get();
try {
// resolve the block
Log.info("Resolving block " + block + ".");
block.resolve();
// queue it up on the AWT thread to complete its resolution
EventQueue.invokeLater(new Runnable() {
public void run () {
// let the block's panel know that it is resolved
block.wasResolved();
}
});
} catch (Exception e) {
Log.warning("Block failed during resolution " + block + ".");
Log.logStackTrace(e);
}
}
/** The invoker's queue of units to be executed. */
protected Queue _queue = new Queue();
}