Merge "More documentation."

This commit is contained in:
Jason Sams
2010-11-12 11:15:59 -08:00
committed by Android (Google) Code Review
3 changed files with 109 additions and 10 deletions

View File

@@ -41,6 +41,13 @@ class BaseObj {
mID = id;
}
/**
* Lookup the native object ID for this object. Primarily used by the
* generated reflected code.
*
*
* @return int
*/
public int getID() {
if (mDestroyed) {
throw new RSInvalidStateException("using a destroyed object.");
@@ -53,8 +60,15 @@ class BaseObj {
private String mName;
RenderScript mRS;
public void setName(String s) {
if(s.length() < 1) {
/**
* setName assigns a name to an object. This object can later be looked up
* by this name. This name will also be retained if the object is written
* to an A3D file.
*
* @param name The name to assign to the object.
*/
public void setName(String name) {
if(name.length() < 1) {
throw new RSIllegalArgumentException("setName does not accept a zero length string.");
}
if(mName != null) {
@@ -62,9 +76,9 @@ class BaseObj {
}
try {
byte[] bytes = s.getBytes("UTF-8");
byte[] bytes = name.getBytes("UTF-8");
mRS.nAssignName(mID, bytes);
mName = s;
mName = name;
} catch (java.io.UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
@@ -84,6 +98,12 @@ class BaseObj {
super.finalize();
}
/**
* destroy disconnects the object from the native object effectivly
* rendering this java object dead. The primary use is to force immediate
* cleanup of resources when its believed the GC will not respond quickly
* enough.
*/
synchronized public void destroy() {
if(mDestroyed) {
throw new RSInvalidStateException("Object already destroyed.");
@@ -92,8 +112,10 @@ class BaseObj {
mRS.nObjDestroy(mID);
}
// If an object came from an a3d file, java fields need to be
// created with objects from the native layer
/**
* If an object came from an a3d file, java fields need to be
* created with objects from the native layer
*/
void updateFromNative() {
mRS.validate();
mName = mRS.nGetName(getID());

View File

@@ -28,6 +28,13 @@ import android.view.Surface;
/**
* @hide
*
* RenderScript base master class. An instance of this class creates native
* worker threads for processing commands from this object. This base class
* does not provide any extended capabilities beyond simple data processing.
* For extended capabilities use derived classes such as RenderScriptGL.
*
*
*
**/
public class RenderScript {
static final String LOG_TAG = "RenderScript_jni";
@@ -581,6 +588,14 @@ public class RenderScript {
///////////////////////////////////////////////////////////////////////////////////
//
/**
* Base class application should derive from for handling RS messages
* comming from their scripts. When a script calls sendToClient the data
* fields will be filled in and then the run method called by a message
* handling thread. This will occur some time after sendToClient completes
* in the script.
*
*/
public static class RSMessage implements Runnable {
protected int[] mData;
protected int mID;
@@ -588,16 +603,42 @@ public class RenderScript {
public void run() {
}
}
/**
* If an application is expecting messages it should set this field to an
* instance of RSMessage. This instance will receive all the user messages
* sent from sendToClient by scripts from this context.
*
*/
public RSMessage mMessageCallback = null;
/**
* Runtime error base class. An application should derive from this class
* if it wishes to install an error handler. When errors occur at runtime
* the fields in this class will be filled and the run method called.
*
*/
public static class RSAsyncError implements Runnable {
protected String mErrorMessage;
protected int mErrorNum;
public void run() {
}
}
/**
* Application Error handler. All runtime errors will be dispatched to the
* instance of RSAsyncError set here. If this field is null a
* RSRuntimeException will instead be thrown with details about the error.
* This will cause program termaination.
*
*/
public RSAsyncError mErrorCallback = null;
/**
* RenderScript worker threads priority enumeration. The default value is
* NORMAL. Applications wishing to do background processing such as
* wallpapers should set their priority to LOW to avoid starving forground
* processes.
*/
public enum Priority {
LOW (5), //ANDROID_PRIORITY_BACKGROUND + 5
NORMAL (-4); //ANDROID_PRIORITY_DISPLAY
@@ -614,6 +655,12 @@ public class RenderScript {
}
}
/**
* Change the priority of the worker threads for this context.
*
* @param p New priority to be set.
*/
public void contextSetPriority(Priority p) {
validate();
nContextSetPriority(p.mID);
@@ -690,9 +737,15 @@ public class RenderScript {
}
}
protected RenderScript() {
RenderScript() {
}
/**
* Create a basic RenderScript context.
*
*
* @return RenderScript
*/
public static RenderScript create() {
RenderScript rs = new RenderScript();
@@ -704,15 +757,32 @@ public class RenderScript {
return rs;
}
/**
* Print the currently available debugging information about the state of
* the RS context to the log.
*
*
* @param bits Currently ignored.
*/
public void contextDump(int bits) {
validate();
nContextDump(bits);
}
/**
* Wait for any commands in the fifo between the java bindings and native to
* be processed.
*
*/
public void finish() {
nContextFinish();
}
/**
* Destroy this renderscript context. Once this function is called its no
* longer legal to use this or any objects created by this context.
*
*/
public void destroy() {
validate();
nContextDeinitToClient(mContext);
@@ -733,9 +803,6 @@ public class RenderScript {
return mContext != 0;
}
///////////////////////////////////////////////////////////////////////////////////
// Root state
protected int safeID(BaseObj o) {
if(o != null) {
return o.getID();

View File

@@ -30,12 +30,22 @@ import android.view.SurfaceView;
/**
* @hide
*
* The Graphics derivitive of RenderScript. Extends the basic context to add a
* root script which is the display window for graphical output. When the
* system needs to update the display the currently bound root script will be
* called. This script is expected to issue the rendering commands to repaint
* the screen.
**/
public class RenderScriptGL extends RenderScript {
private Surface mSurface;
int mWidth;
int mHeight;
/**
* Class which is used to describe a pixel format for a graphical buffer.
* This is used to describe the intended format of the display surface.
*
*/
public static class SurfaceConfig {
int mDepthMin = 0;
int mDepthPref = 0;