summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJamie Gennis <jgennis@google.com>2011-06-23 13:02:40 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-06-23 13:02:40 -0700
commitb950b8e23e18cbe23069b791bca93c8cfbbab5ce (patch)
tree2d916950915f40a4b067f2f9415b0b2762cd232a
parent58b868417755805ebdfe4feb65664ad98c00bf35 (diff)
parent925bcaabde5a21687b51caa7ab329310a819f068 (diff)
downloadframeworks_base-b950b8e23e18cbe23069b791bca93c8cfbbab5ce.zip
frameworks_base-b950b8e23e18cbe23069b791bca93c8cfbbab5ce.tar.gz
frameworks_base-b950b8e23e18cbe23069b791bca93c8cfbbab5ce.tar.bz2
Merge "Fix the issue where onFrameAvailable is not triggered if SurfaceTexture is in sync mode."
-rw-r--r--core/jni/android/graphics/SurfaceTexture.cpp9
-rw-r--r--graphics/java/android/graphics/SurfaceTexture.java5
2 files changed, 13 insertions, 1 deletions
diff --git a/core/jni/android/graphics/SurfaceTexture.cpp b/core/jni/android/graphics/SurfaceTexture.cpp
index 0d28cb1..a8cb6f7 100644
--- a/core/jni/android/graphics/SurfaceTexture.cpp
+++ b/core/jni/android/graphics/SurfaceTexture.cpp
@@ -212,6 +212,12 @@ static jlong SurfaceTexture_getTimestamp(JNIEnv* env, jobject thiz)
return surfaceTexture->getTimestamp();
}
+static jint SurfaceTexture_getQueuedCount(JNIEnv* env, jobject thiz)
+{
+ sp<SurfaceTexture> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
+ return surfaceTexture->getQueuedCount();
+}
+
// ----------------------------------------------------------------------------
static JNINativeMethod gSurfaceTextureMethods[] = {
@@ -221,7 +227,8 @@ static JNINativeMethod gSurfaceTextureMethods[] = {
{"nativeSetDefaultBufferSize", "(II)V", (void*)SurfaceTexture_setDefaultBufferSize },
{"nativeUpdateTexImage", "()V", (void*)SurfaceTexture_updateTexImage },
{"nativeGetTransformMatrix", "([F)V", (void*)SurfaceTexture_getTransformMatrix },
- {"nativeGetTimestamp", "()J", (void*)SurfaceTexture_getTimestamp }
+ {"nativeGetTimestamp", "()J", (void*)SurfaceTexture_getTimestamp },
+ {"nativeGetQueuedCount", "()I", (void*)SurfaceTexture_getQueuedCount }
};
int register_android_graphics_SurfaceTexture(JNIEnv* env)
diff --git a/graphics/java/android/graphics/SurfaceTexture.java b/graphics/java/android/graphics/SurfaceTexture.java
index 6c7341f..9e498d0 100644
--- a/graphics/java/android/graphics/SurfaceTexture.java
+++ b/graphics/java/android/graphics/SurfaceTexture.java
@@ -131,6 +131,10 @@ public class SurfaceTexture {
*/
public void updateTexImage() {
nativeUpdateTexImage();
+ if (nativeGetQueuedCount() > 0) {
+ Message m = mEventHandler.obtainMessage();
+ mEventHandler.sendMessage(m);
+ }
}
/**
@@ -215,6 +219,7 @@ public class SurfaceTexture {
private native long nativeGetTimestamp();
private native void nativeSetDefaultBufferSize(int width, int height);
private native void nativeUpdateTexImage();
+ private native int nativeGetQueuedCount();
/*
* We use a class initializer to allow the native code to cache some