Index: ui/gl/android/surface_texture.h |
diff --git a/ui/gl/android/surface_texture.h b/ui/gl/android/surface_texture.h |
index 62e375f796f45959e1ca0de2e37b7144c5e66ba3..05bc5a36b439e647458d34c0cbe2fabab27afc47 100644 |
--- a/ui/gl/android/surface_texture.h |
+++ b/ui/gl/android/surface_texture.h |
@@ -21,7 +21,9 @@ namespace gfx { |
class GL_EXPORT SurfaceTexture |
: public base::RefCountedThreadSafe<SurfaceTexture>{ |
public: |
- explicit SurfaceTexture(int texture_id); |
+ static scoped_refptr<SurfaceTexture> Create(int texture_id); |
+ |
+ static scoped_refptr<SurfaceTexture> CreateSingleBuffered(int texture_id); |
// Set the listener callback, which will be invoked on the same thread that |
// is being called from here for registration. |
@@ -33,6 +35,13 @@ class GL_EXPORT SurfaceTexture |
// Update the texture image to the most recent frame from the image stream. |
void UpdateTexImage(); |
+ // Release the texture content. This is needed only in single buffered mode |
+ // to allow the image content producer to take ownership |
+ // of the image buffer. |
+ // This is *only* supported on SurfaceTexture instantiated via |
+ // |CreateSingleBuffered(...)|. |
+ void ReleaseTexImage(); |
+ |
// Retrieve the 4x4 texture coordinate transform matrix associated with the |
// texture image set by the most recent call to updateTexImage. |
void GetTransformMatrix(float mtx[16]); |
@@ -57,8 +66,16 @@ class GL_EXPORT SurfaceTexture |
return j_surface_texture_; |
} |
+ // This should only be used to guard the SurfaceTexture instantiated via |
+ // |CreateSingleBuffered(...)| |
+ static bool IsSingleBufferModeSupported(); |
+ |
static bool RegisterSurfaceTexture(JNIEnv* env); |
+ protected: |
+ explicit SurfaceTexture( |
+ const base::android::ScopedJavaLocalRef<jobject>& j_surface_texture); |
+ |
private: |
friend class base::RefCountedThreadSafe<SurfaceTexture>; |
~SurfaceTexture(); |