| Index: content/common/android/surface_callback.h
|
| diff --git a/content/common/android/surface_callback.h b/content/common/android/surface_callback.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c45b751aff13bd0533b4bc62cf871fc74067bbe2
|
| --- /dev/null
|
| +++ b/content/common/android/surface_callback.h
|
| @@ -0,0 +1,59 @@
|
| +// 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.
|
| +
|
| +#ifndef CONTENT_COMMON_ANDROID_SURFACE_CALLBACK_H_
|
| +#define CONTENT_COMMON_ANDROID_SURFACE_CALLBACK_H_
|
| +#pragma once
|
| +
|
| +#include <jni.h>
|
| +
|
| +#include "base/callback.h"
|
| +#include "content/common/android/surface_texture_peer.h"
|
| +
|
| +struct ANativeWindow;
|
| +
|
| +namespace base {
|
| +class MessageLoopProxy;
|
| +class WaitableEvent;
|
| +}
|
| +
|
| +namespace content {
|
| +
|
| +// This file implements support for passing surface handles from Java
|
| +// to the correct thread on the native side. On Android, these surface
|
| +// handles can only be passed across processes through Java IPC (Binder),
|
| +// which means calls from Java come in on arbitrary threads. Hence the
|
| +// static nature and the need for the client to register a callback with
|
| +// the corresponding message loop.
|
| +
|
| +// Asynchronously sets the Surface. This can be called from any thread.
|
| +// The Surface will be set to the proper thread based on the type. The
|
| +// nature of primary_id and secondary_id depend on the type of surface
|
| +// and are used to route the surface to the correct client.
|
| +// This method will call release() on the jsurface object to release
|
| +// all the resources. So after calling this method, the caller should
|
| +// not use the jsurface object again.
|
| +void SetSurfaceAsync(JNIEnv* env,
|
| + jobject jsurface,
|
| + SurfaceTexturePeer::SurfaceTextureTarget type,
|
| + int primary_id,
|
| + int secondary_id,
|
| + base::WaitableEvent* completion);
|
| +
|
| +void ReleaseSurface(jobject surface);
|
| +
|
| +typedef base::Callback<void(int, int, ANativeWindow*, base::WaitableEvent*)>
|
| + NativeWindowCallback;
|
| +void RegisterNativeWindowCallback(base::MessageLoopProxy* loop,
|
| + NativeWindowCallback& callback);
|
| +
|
| +typedef base::Callback<void(int, int, jobject surface)> VideoSurfaceCallback;
|
| +void RegisterVideoSurfaceCallback(base::MessageLoopProxy* loop,
|
| + VideoSurfaceCallback& callback);
|
| +
|
| +bool RegisterSurfaceCallback(JNIEnv* env);
|
| +
|
| +} // namespace content
|
| +
|
| +#endif // CONTENT_COMMON_ANDROID_SURFACE_CALLBACK_H_
|
|
|