Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Unified Diff: content/common/android/surface_callback.cc

Issue 12388038: Android: Remove Surface cruft (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/common/android/surface_callback.h ('k') | content/common/android/surface_texture_bridge.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/android/surface_callback.cc
diff --git a/content/common/android/surface_callback.cc b/content/common/android/surface_callback.cc
deleted file mode 100644
index 7bfd033f5334713271ff3e02581191cfd3e9797f..0000000000000000000000000000000000000000
--- a/content/common/android/surface_callback.cc
+++ /dev/null
@@ -1,155 +0,0 @@
-// Copyright (c) 2012 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.
-
-#include "content/common/android/surface_callback.h"
-
-#include <android/native_window_jni.h>
-
-#include "base/android/jni_android.h"
-#include "base/bind.h"
-#include "base/lazy_instance.h"
-#include "base/logging.h"
-#include "base/message_loop.h"
-#include "base/message_loop_proxy.h"
-#include "base/synchronization/lock.h"
-#include "base/synchronization/waitable_event.h"
-#include "ui/gl/android_native_window.h"
-#include "jni/SurfaceCallback_jni.h"
-
-using base::android::AttachCurrentThread;
-using base::android::CheckException;
-using base::android::GetClass;
-using base::android::MethodID;
-using base::WaitableEvent;
-using content::SurfaceTexturePeer;
-
-namespace content {
-
-namespace {
-
-struct GlobalState {
- base::Lock registration_lock;
- // We hold a reference to a message loop proxy which handles message loop
- // destruction gracefully, which is important since we post tasks from an
- // arbitrary binder thread while the main thread might be shutting down.
- // Also, in single-process mode we have two ChildThread objects for render
- // and gpu thread, so we need to store the msg loops separately.
- scoped_refptr<base::MessageLoopProxy> native_window_loop;
- scoped_refptr<base::MessageLoopProxy> video_surface_loop;
- NativeWindowCallback native_window_callback;
- VideoSurfaceCallback video_surface_callback;
-};
-
-base::LazyInstance<GlobalState>::Leaky g_state = LAZY_INSTANCE_INITIALIZER;
-
-void RunNativeWindowCallback(int32 routing_id,
- int32 renderer_id,
- ANativeWindow* native_window,
- WaitableEvent* completion) {
- g_state.Pointer()->native_window_callback.Run(
- routing_id, renderer_id, native_window, completion);
-}
-
-void RunVideoSurfaceCallback(int32 routing_id,
- int32 renderer_id,
- jobject surface) {
- g_state.Pointer()->video_surface_callback.Run(
- routing_id, renderer_id, surface);
-}
-
-} // namespace <anonymous>
-
-static void SetSurface(JNIEnv* env, jclass clazz,
- jint type,
- jobject surface,
- jint primaryID,
- jint secondaryID) {
- SetSurfaceAsync(env, surface,
- static_cast<SurfaceTexturePeer::SurfaceTextureTarget>(type),
- primaryID, secondaryID, NULL);
-}
-
-void ReleaseSurface(jobject surface) {
- if (surface == NULL)
- return;
-
- JNIEnv* env = AttachCurrentThread();
- CHECK(env);
-
- ScopedJavaLocalRef<jclass> cls(GetClass(env, "android/view/Surface"));
-
- jmethodID method = MethodID::Get<MethodID::TYPE_INSTANCE>(
- env, cls.obj(), "release", "()V");
-
- env->CallVoidMethod(surface, method);
-}
-
-void SetSurfaceAsync(JNIEnv* env,
- jobject jsurface,
- SurfaceTexturePeer::SurfaceTextureTarget type,
- int primary_id,
- int secondary_id,
- WaitableEvent* completion) {
- base::AutoLock lock(g_state.Pointer()->registration_lock);
-
- ANativeWindow* native_window = NULL;
-
- if (jsurface &&
- type != SurfaceTexturePeer::SET_VIDEO_SURFACE_TEXTURE) {
- native_window = ANativeWindow_fromSurface(env, jsurface);
- ReleaseSurface(jsurface);
- }
- GlobalState* const global_state = g_state.Pointer();
-
- switch (type) {
- case SurfaceTexturePeer::SET_GPU_SURFACE_TEXTURE: {
- // This should only be sent as a reaction to the renderer
- // activating compositing. If the GPU process crashes, we expect this
- // to be resent after the new thread is initialized.
- DCHECK(global_state->native_window_loop);
- global_state->native_window_loop->PostTask(
- FROM_HERE,
- base::Bind(&RunNativeWindowCallback,
- primary_id,
- static_cast<uint32_t>(secondary_id),
- native_window,
- completion));
- // ANativeWindow_release will be called in SetNativeWindow()
- break;
- }
- case SurfaceTexturePeer::SET_VIDEO_SURFACE_TEXTURE: {
- jobject surface = env->NewGlobalRef(jsurface);
- DCHECK(global_state->video_surface_loop);
- global_state->video_surface_loop->PostTask(
- FROM_HERE,
- base::Bind(&RunVideoSurfaceCallback,
- primary_id,
- secondary_id,
- surface));
- break;
- }
- }
-}
-
-void RegisterVideoSurfaceCallback(base::MessageLoopProxy* loop,
- VideoSurfaceCallback& callback) {
- GlobalState* const global_state = g_state.Pointer();
- base::AutoLock lock(global_state->registration_lock);
- global_state->video_surface_loop = loop;
- global_state->video_surface_callback = callback;
-}
-
-void RegisterNativeWindowCallback(base::MessageLoopProxy* loop,
- NativeWindowCallback& callback) {
- GlobalState* const global_state = g_state.Pointer();
- base::AutoLock lock(global_state->registration_lock);
- global_state->native_window_loop = loop;
- global_state->native_window_callback = callback;
-}
-
-bool RegisterSurfaceCallback(JNIEnv* env) {
- return RegisterNativesImpl(env);
-}
-
-} // namespace content
« no previous file with comments | « content/common/android/surface_callback.h ('k') | content/common/android/surface_texture_bridge.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698