| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package org.chromium.ui.gl; |
| |
| import android.graphics.SurfaceTexture; |
| |
| import org.chromium.base.JNINamespace; |
| |
| /** |
| * Listener to an android SurfaceTexture object for frame availability. |
| */ |
| @JNINamespace("gfx") |
| class SurfaceTextureListener implements SurfaceTexture.OnFrameAvailableListener { |
| // Used to determine the class instance to dispatch the native call to. |
| private final long mNativeSurfaceTextureListener; |
| |
| SurfaceTextureListener(long nativeSurfaceTextureListener) { |
| assert nativeSurfaceTextureListener != 0; |
| mNativeSurfaceTextureListener = nativeSurfaceTextureListener; |
| } |
| |
| @Override |
| public void onFrameAvailable(SurfaceTexture surfaceTexture) { |
| nativeFrameAvailable(mNativeSurfaceTextureListener); |
| } |
| |
| @Override |
| protected void finalize() throws Throwable { |
| try { |
| nativeDestroy(mNativeSurfaceTextureListener); |
| } finally { |
| super.finalize(); |
| } |
| } |
| |
| private native void nativeFrameAvailable(long nativeSurfaceTextureListener); |
| private native void nativeDestroy(long nativeSurfaceTextureListener); |
| } |