1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// Use of this source code is governed by a BSD-style license that can be 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// found in the LICENSE file. 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "ui/gl/android/surface_texture_listener.h" 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "base/location.h" 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "base/single_thread_task_runner.h" 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "base/thread_task_runner_handle.h" 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen#include "jni/SurfaceTextureListener_jni.h" 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chennamespace gfx { 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenSurfaceTextureListener::SurfaceTextureListener(const base::Closure& callback) 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen : callback_(callback), 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen browser_loop_(base::ThreadTaskRunnerHandle::Get()) { 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi ChenSurfaceTextureListener::~SurfaceTextureListener() { 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid SurfaceTextureListener::Destroy(JNIEnv* env, jobject obj) { 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen delete this; 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenvoid SurfaceTextureListener::FrameAvailable(JNIEnv* env, jobject obj) { 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen if (!browser_loop_->BelongsToCurrentThread()) { 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen browser_loop_->PostTask(FROM_HERE, callback_); 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } else { 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen callback_.Run(); 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen } 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen// static 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenbool SurfaceTextureListener::RegisterSurfaceTextureListener(JNIEnv* env) { 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen return RegisterNativesImpl(env); 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen} // namespace gfx 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen