Methods Summary |
---|
public synchronized void | bindToListener(SurfaceHolder.Callback listener, GLEnvironment glEnv)
// Make sure we are not bound already
if (listener == null) {
throw new NullPointerException("Attempting to bind null filter to SurfaceView!");
} else if (mListener != null && mListener != listener) {
throw new RuntimeException(
"Attempting to bind filter " + listener + " to SurfaceView with another open "
+ "filter " + mListener + " attached already!");
}
// Set listener
mListener = listener;
// Set GLEnv
if (mGLEnv != null && mGLEnv != glEnv) {
mGLEnv.unregisterSurfaceId(mSurfaceId);
}
mGLEnv = glEnv;
// Check if surface has been created already
if (mState >= STATE_CREATED) {
// Register with env (double registration will be ignored by GLEnv, so we can simply
// try to do it here).
registerSurface();
// Forward surface created to listener
mListener.surfaceCreated(getHolder());
// Forward surface changed to listener
if (mState == STATE_INITIALIZED) {
mListener.surfaceChanged(getHolder(), mFormat, mWidth, mHeight);
}
}
|
public synchronized GLEnvironment | getGLEnv()
return mGLEnv;
|
public synchronized int | getSurfaceId()
return mSurfaceId;
|
private void | registerSurface()
mSurfaceId = mGLEnv.registerSurface(getHolder().getSurface());
if (mSurfaceId < 0) {
throw new RuntimeException("Could not register Surface: " + getHolder().getSurface() +
" in FilterSurfaceView!");
}
|
public synchronized void | surfaceChanged(android.view.SurfaceHolder holder, int format, int width, int height)
// Remember these values
mFormat = format;
mWidth = width;
mHeight = height;
mState = STATE_INITIALIZED;
// Forward to renderer
if (mListener != null) {
mListener.surfaceChanged(holder, format, width, height);
}
|
public synchronized void | surfaceCreated(android.view.SurfaceHolder holder)
mState = STATE_CREATED;
// Register with GLEnvironment if we have it already
if (mGLEnv != null) {
registerSurface();
}
// Forward callback to listener
if (mListener != null) {
mListener.surfaceCreated(holder);
}
|
public synchronized void | surfaceDestroyed(android.view.SurfaceHolder holder)
mState = STATE_ALLOCATED;
// Forward to renderer
if (mListener != null) {
mListener.surfaceDestroyed(holder);
}
// Get rid of internal objects associated with this surface
unregisterSurface();
|
public synchronized void | unbind()
mListener = null;
|
private void | unregisterSurface()
if (mGLEnv != null && mSurfaceId > 0) {
mGLEnv.unregisterSurfaceId(mSurfaceId);
}
|