summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mathias Agopian <mathias@google.com> 2013-02-14 17:11:20 -0800
committer Mathias Agopian <mathias@google.com> 2013-02-15 12:47:40 -0800
commit52800617946c456e78ed010c82d0ec4358368164 (patch)
treebad73c6c8deec082b972569b6f2e57a43e8d2d41
parent29479ebe1007361222bf6ab4d5e2a27927d4b8e8 (diff)
Refactoring: Rename SurfaceTextureClient to Surface
Change-Id: I5a218ca11abeeec05e3a4c3cfc581bcc788814ea
-rw-r--r--core/java/android/view/Surface.java3
-rw-r--r--core/jni/android/graphics/SurfaceTexture.cpp6
-rw-r--r--core/jni/android_opengl_EGL14.cpp4
-rw-r--r--core/jni/android_view_Surface.cpp37
-rw-r--r--core/jni/android_view_SurfaceControl.cpp2
-rw-r--r--core/jni/android_view_TextureView.cpp4
-rw-r--r--core/jni/com_google_android_gles_jni_EGLImpl.cpp4
-rw-r--r--graphics/jni/android_renderscript_RenderScript.cpp4
-rw-r--r--media/jni/android_media_MediaCodec.cpp7
-rw-r--r--media/jni/android_media_MediaCodec.h4
-rw-r--r--media/jni/android_media_MediaPlayer.cpp2
-rw-r--r--media/mca/filterfw/jni/jni_gl_environment.cpp6
-rw-r--r--media/mca/filterfw/native/core/gl_env.cpp2
-rw-r--r--media/mca/filterfw/native/core/gl_env.h2
-rw-r--r--services/input/SpriteController.cpp23
15 files changed, 60 insertions, 50 deletions
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index d158c7600123..de64e140f120 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -32,8 +32,9 @@ import dalvik.system.CloseGuard;
public class Surface implements Parcelable {
private static final String TAG = "Surface";
- private native int nativeCreateFromSurfaceTexture(SurfaceTexture surfaceTexture)
+ private static native int nativeCreateFromSurfaceTexture(SurfaceTexture surfaceTexture)
throws OutOfResourcesException;
+
private native Canvas nativeLockCanvas(int nativeObject, Rect dirty);
private native void nativeUnlockCanvasAndPost(int nativeObject, Canvas canvas);
diff --git a/core/jni/android/graphics/SurfaceTexture.cpp b/core/jni/android/graphics/SurfaceTexture.cpp
index f8715fecede9..296d9b2d513b 100644
--- a/core/jni/android/graphics/SurfaceTexture.cpp
+++ b/core/jni/android/graphics/SurfaceTexture.cpp
@@ -19,7 +19,7 @@
#include <stdio.h>
#include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <android_runtime/AndroidRuntime.h>
@@ -86,8 +86,8 @@ sp<ANativeWindow> android_SurfaceTexture_getNativeWindow(
JNIEnv* env, jobject thiz)
{
sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
- sp<SurfaceTextureClient> surfaceTextureClient(surfaceTexture != NULL ?
- new SurfaceTextureClient(surfaceTexture->getBufferQueue()) : NULL);
+ sp<Surface> surfaceTextureClient(surfaceTexture != NULL ?
+ new Surface(surfaceTexture->getBufferQueue()) : NULL);
return surfaceTextureClient;
}
diff --git a/core/jni/android_opengl_EGL14.cpp b/core/jni/android_opengl_EGL14.cpp
index 9c7124a18338..26fc26130d9b 100644
--- a/core/jni/android_opengl_EGL14.cpp
+++ b/core/jni/android_opengl_EGL14.cpp
@@ -29,7 +29,7 @@
#include <gui/Surface.h>
#include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <ui/ANativeObjectBase.h>
@@ -631,7 +631,7 @@ not_valid_surface:
if (surfaceTexture == NULL)
goto not_valid_surface;
- window = new android::SurfaceTextureClient(surfaceTexture->getBufferQueue());
+ window = new android::Surface(surfaceTexture->getBufferQueue());
if (window == NULL)
goto not_valid_surface;
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index 566a983f9685..e5a31e5c1a75 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -28,6 +28,7 @@
#include <android_runtime/android_graphics_SurfaceTexture.h>
#include <gui/Surface.h>
+#include <gui/SurfaceControl.h>
#include <gui/GLConsumer.h>
#include <ui/Rect.h>
@@ -111,7 +112,13 @@ jobject android_view_Surface_createFromIGraphicBufferProducer(JNIEnv* env,
// ----------------------------------------------------------------------------
-static jint nativeCreateFromSurfaceTexture(JNIEnv* env, jobject surfaceObj,
+static bool isSurfaceValid(const sp<Surface>& sur) {
+ return sur != 0 && sur->getISurfaceTexture() != 0;
+}
+
+// ----------------------------------------------------------------------------
+
+static jint nativeCreateFromSurfaceTexture(JNIEnv* env, jclass clazz,
jobject surfaceTextureObj) {
sp<GLConsumer> st(SurfaceTexture_getSurfaceTexture(env, surfaceTextureObj));
if (st == NULL) {
@@ -127,7 +134,7 @@ static jint nativeCreateFromSurfaceTexture(JNIEnv* env, jobject surfaceObj,
return 0;
}
- surface->incStrong(surfaceObj);
+ surface->incStrong(clazz);
return int(surface.get());
}
@@ -143,12 +150,12 @@ static void nativeDestroy(JNIEnv* env, jclass clazz, jint nativeObject) {
static jboolean nativeIsValid(JNIEnv* env, jclass clazz, jint nativeObject) {
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
- return Surface::isValid(sur) ? JNI_TRUE : JNI_FALSE;
+ return isSurfaceValid(sur) ? JNI_TRUE : JNI_FALSE;
}
static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jclass clazz, jint nativeObject) {
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
- if (!Surface::isValid(sur)) {
+ if (!isSurfaceValid(sur)) {
doThrowIAE(env);
return JNI_FALSE;
}
@@ -176,7 +183,7 @@ static inline SkBitmap::Config convertPixelFormat(PixelFormat format) {
static jobject nativeLockCanvas(JNIEnv* env, jobject surfaceObj, jint nativeObject, jobject dirtyRectObj) {
sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject));
- if (!Surface::isValid(surface)) {
+ if (!isSurfaceValid(surface)) {
doThrowIAE(env);
return NULL;
}
@@ -196,9 +203,11 @@ static jobject nativeLockCanvas(JNIEnv* env, jobject surfaceObj, jint nativeObje
dirtyRegion.set(Rect(0x3FFF, 0x3FFF));
}
- Surface::SurfaceInfo info;
- status_t err = surface->lock(&info, &dirtyRegion);
+ ANativeWindow_Buffer outBuffer;
+ Rect dirtyBounds(dirtyRegion.getBounds());
+ status_t err = surface->lock(&outBuffer, &dirtyBounds);
if (err < 0) {
+ dirtyRegion.set(dirtyBounds);
const char* const exception = (err == NO_MEMORY) ?
OutOfResourcesException :
"java/lang/IllegalArgumentException";
@@ -208,18 +217,18 @@ static jobject nativeLockCanvas(JNIEnv* env, jobject surfaceObj, jint nativeObje
// Associate a SkCanvas object to this surface
jobject canvasObj = env->GetObjectField(surfaceObj, gSurfaceClassInfo.mCanvas);
- env->SetIntField(canvasObj, gCanvasClassInfo.mSurfaceFormat, info.format);
+ env->SetIntField(canvasObj, gCanvasClassInfo.mSurfaceFormat, outBuffer.format);
SkCanvas* nativeCanvas = reinterpret_cast<SkCanvas*>(
env->GetIntField(canvasObj, gCanvasClassInfo.mNativeCanvas));
SkBitmap bitmap;
- ssize_t bpr = info.s * bytesPerPixel(info.format);
- bitmap.setConfig(convertPixelFormat(info.format), info.w, info.h, bpr);
- if (info.format == PIXEL_FORMAT_RGBX_8888) {
+ ssize_t bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);
+ bitmap.setConfig(convertPixelFormat(outBuffer.format), outBuffer.width, outBuffer.height, bpr);
+ if (outBuffer.format == PIXEL_FORMAT_RGBX_8888) {
bitmap.setIsOpaque(true);
}
- if (info.w > 0 && info.h > 0) {
- bitmap.setPixels(info.bits);
+ if (outBuffer.width > 0 && outBuffer.height > 0) {
+ bitmap.setPixels(outBuffer.bits);
} else {
// be safe with an empty bitmap.
bitmap.setPixels(NULL);
@@ -263,7 +272,7 @@ static void nativeUnlockCanvasAndPost(JNIEnv* env, jobject surfaceObj, jint nati
}
sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject));
- if (!Surface::isValid(surface)) {
+ if (!isSurfaceValid(surface)) {
return;
}
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 16c20891b630..e477e5429930 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -320,7 +320,7 @@ static void nativeSetDisplaySurface(JNIEnv* env, jclass clazz,
sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
if (token == NULL) return;
sp<Surface> sur(reinterpret_cast<Surface *>(nativeSurfaceObject));
- sp<IGraphicBufferProducer> bufferProducer(sur->getSurfaceTexture());
+ sp<IGraphicBufferProducer> bufferProducer(sur->getIGraphicBufferProducer());
SurfaceComposerClient::setDisplaySurface(token, bufferProducer);
}
diff --git a/core/jni/android_view_TextureView.cpp b/core/jni/android_view_TextureView.cpp
index 87b312f4cbfe..e75a2d826521 100644
--- a/core/jni/android_view_TextureView.cpp
+++ b/core/jni/android_view_TextureView.cpp
@@ -23,7 +23,7 @@
#include <ui/Rect.h>
#include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <SkBitmap.h>
#include <SkCanvas.h>
@@ -102,7 +102,7 @@ static void android_view_TextureView_createNativeWindow(JNIEnv* env, jobject tex
jobject surface) {
sp<GLConsumer> glConsumer(SurfaceTexture_getSurfaceTexture(env, surface));
- sp<ANativeWindow> window = new SurfaceTextureClient(glConsumer->getBufferQueue());
+ sp<ANativeWindow> window = new Surface(glConsumer->getBufferQueue());
window->incStrong(0);
SET_INT(textureView, gTextureViewClassInfo.nativeWindow, jint(window.get()));
diff --git a/core/jni/com_google_android_gles_jni_EGLImpl.cpp b/core/jni/com_google_android_gles_jni_EGLImpl.cpp
index 199d5bf32d7e..37330eca15f7 100644
--- a/core/jni/com_google_android_gles_jni_EGLImpl.cpp
+++ b/core/jni/com_google_android_gles_jni_EGLImpl.cpp
@@ -28,7 +28,7 @@
#include <gui/Surface.h>
#include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <SkBitmap.h>
#include <SkPixelRef.h>
@@ -355,7 +355,7 @@ not_valid_surface:
sp<GLConsumer> glConsumer(SurfaceTexture_getSurfaceTexture(_env, native_window));
- window = new SurfaceTextureClient(glConsumer->getBufferQueue());
+ window = new Surface(glConsumer->getBufferQueue());
if (window == NULL)
goto not_valid_surface;
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 88306856cada..5e631af1b8bf 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -43,7 +43,7 @@
#include <rsEnv.h>
#include <gui/Surface.h>
#include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <android_runtime/android_graphics_SurfaceTexture.h>
//#define LOG_API ALOGE
@@ -247,7 +247,7 @@ nContextSetSurfaceTexture(JNIEnv *_env, jobject _this, RsContext con, jint width
} else {
st = SurfaceTexture_getSurfaceTexture(_env, sur);
- window = new SurfaceTextureClient(st->getBufferQueue());
+ window = new Surface(st->getBufferQueue());
}
rsContextSetSurface(con, width, height, window.get());
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index f8c945b1b5c3..86700b37e094 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -28,7 +28,6 @@
#include "JNIHelp.h"
#include <gui/Surface.h>
-#include <gui/SurfaceTextureClient.h>
#include <media/ICrypto.h>
#include <media/stagefright/MediaCodec.h>
@@ -114,9 +113,9 @@ status_t JMediaCodec::configure(
const sp<IGraphicBufferProducer> &bufferProducer,
const sp<ICrypto> &crypto,
int flags) {
- sp<SurfaceTextureClient> client;
+ sp<Surface> client;
if (bufferProducer != NULL) {
- mSurfaceTextureClient = new SurfaceTextureClient(bufferProducer);
+ mSurfaceTextureClient = new Surface(bufferProducer);
} else {
mSurfaceTextureClient.clear();
}
@@ -398,7 +397,7 @@ static void android_media_MediaCodec_native_configure(
if (jsurface != NULL) {
sp<Surface> surface(android_view_Surface_getSurface(env, jsurface));
if (surface != NULL) {
- bufferProducer = surface->getSurfaceTexture();
+ bufferProducer = surface->getIGraphicBufferProducer();
} else {
jniThrowException(
env,
diff --git a/media/jni/android_media_MediaCodec.h b/media/jni/android_media_MediaCodec.h
index a9bb9af519a3..f478788936b9 100644
--- a/media/jni/android_media_MediaCodec.h
+++ b/media/jni/android_media_MediaCodec.h
@@ -32,7 +32,7 @@ struct AString;
struct ICrypto;
struct IGraphicBufferProducer;
struct MediaCodec;
-struct SurfaceTextureClient;
+class Surface;
struct JMediaCodec : public RefBase {
JMediaCodec(
@@ -91,7 +91,7 @@ protected:
private:
jclass mClass;
jweak mObject;
- sp<SurfaceTextureClient> mSurfaceTextureClient;
+ sp<Surface> mSurfaceTextureClient;
sp<ALooper> mLooper;
sp<MediaCodec> mCodec;
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index 5408a1f0ceae..7421022e8d3b 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -273,7 +273,7 @@ setVideoSurface(JNIEnv *env, jobject thiz, jobject jsurface, jboolean mediaPlaye
if (jsurface) {
sp<Surface> surface(android_view_Surface_getSurface(env, jsurface));
if (surface != NULL) {
- new_st = surface->getSurfaceTexture();
+ new_st = surface->getIGraphicBufferProducer();
if (new_st == NULL) {
jniThrowException(env, "java/lang/IllegalArgumentException",
"The surface does not have a binding SurfaceTexture!");
diff --git a/media/mca/filterfw/jni/jni_gl_environment.cpp b/media/mca/filterfw/jni/jni_gl_environment.cpp
index b64004e478e4..9abf19134a79 100644
--- a/media/mca/filterfw/jni/jni_gl_environment.cpp
+++ b/media/mca/filterfw/jni/jni_gl_environment.cpp
@@ -24,7 +24,7 @@
#include "native/core/gl_env.h"
#include <gui/IGraphicBufferProducer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <utils/Errors.h>
#include <system/window.h>
@@ -34,7 +34,7 @@ using android::filterfw::WindowHandle;
using android::MediaRecorder;
using android::sp;
using android::IGraphicBufferProducer;
-using android::SurfaceTextureClient;
+using android::Surface;
class NativeWindowHandle : public WindowHandle {
@@ -290,7 +290,7 @@ jint Java_android_filterfw_core_GLEnvironment_nativeAddSurfaceFromMediaRecorder(
<IGraphicBufferProducer> handle.");
return -1;
}
- sp<SurfaceTextureClient> surfaceTC = new SurfaceTextureClient(surfaceMS);
+ sp<Surface> surfaceTC = new Surface(surfaceMS);
// Get the ANativeWindow
sp<ANativeWindow> window = surfaceTC;
diff --git a/media/mca/filterfw/native/core/gl_env.cpp b/media/mca/filterfw/native/core/gl_env.cpp
index 8ed82e2dd508..73768feddcab 100644
--- a/media/mca/filterfw/native/core/gl_env.cpp
+++ b/media/mca/filterfw/native/core/gl_env.cpp
@@ -161,7 +161,7 @@ bool GLEnv::InitWithNewContext() {
// Create dummy surface using a GLConsumer
surfaceTexture_ = new GLConsumer(0);
- window_ = new SurfaceTextureClient(static_cast<sp<IGraphicBufferProducer> >(
+ window_ = new Surface(static_cast<sp<IGraphicBufferProducer> >(
surfaceTexture_->getBufferQueue()));
surfaces_[0] = SurfaceWindowPair(eglCreateWindowSurface(display(), config, window_.get(), NULL), NULL);
diff --git a/media/mca/filterfw/native/core/gl_env.h b/media/mca/filterfw/native/core/gl_env.h
index 3c871952f023..81e1e9dcb7a2 100644
--- a/media/mca/filterfw/native/core/gl_env.h
+++ b/media/mca/filterfw/native/core/gl_env.h
@@ -28,7 +28,7 @@
#include <EGL/egl.h>
#include <gui/IGraphicBufferProducer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
namespace android {
namespace filterfw {
diff --git a/services/input/SpriteController.cpp b/services/input/SpriteController.cpp
index 1f3d2cf2fdf0..3c3b919f079b 100644
--- a/services/input/SpriteController.cpp
+++ b/services/input/SpriteController.cpp
@@ -22,12 +22,14 @@
#include <cutils/log.h>
#include <utils/String8.h>
+#include <gui/Surface.h>
#include <SkBitmap.h>
#include <SkCanvas.h>
#include <SkColor.h>
#include <SkPaint.h>
#include <SkXfermode.h>
+#include <android/native_window.h>
namespace android {
@@ -197,16 +199,16 @@ void SpriteController::doUpdateSprites() {
if (update.state.surfaceControl != NULL && !update.state.surfaceDrawn
&& update.state.wantSurfaceVisible()) {
sp<Surface> surface = update.state.surfaceControl->getSurface();
- Surface::SurfaceInfo surfaceInfo;
- status_t status = surface->lock(&surfaceInfo);
+ ANativeWindow_Buffer outBuffer;
+ status_t status = surface->lock(&outBuffer, NULL);
if (status) {
ALOGE("Error %d locking sprite surface before drawing.", status);
} else {
SkBitmap surfaceBitmap;
- ssize_t bpr = surfaceInfo.s * bytesPerPixel(surfaceInfo.format);
+ ssize_t bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);
surfaceBitmap.setConfig(SkBitmap::kARGB_8888_Config,
- surfaceInfo.w, surfaceInfo.h, bpr);
- surfaceBitmap.setPixels(surfaceInfo.bits);
+ outBuffer.width, outBuffer.height, bpr);
+ surfaceBitmap.setPixels(outBuffer.bits);
SkCanvas surfaceCanvas;
surfaceCanvas.setBitmapDevice(surfaceBitmap);
@@ -215,15 +217,15 @@ void SpriteController::doUpdateSprites() {
paint.setXfermodeMode(SkXfermode::kSrc_Mode);
surfaceCanvas.drawBitmap(update.state.icon.bitmap, 0, 0, &paint);
- if (surfaceInfo.w > uint32_t(update.state.icon.bitmap.width())) {
+ if (outBuffer.width > uint32_t(update.state.icon.bitmap.width())) {
paint.setColor(0); // transparent fill color
surfaceCanvas.drawRectCoords(update.state.icon.bitmap.width(), 0,
- surfaceInfo.w, update.state.icon.bitmap.height(), paint);
+ outBuffer.width, update.state.icon.bitmap.height(), paint);
}
- if (surfaceInfo.h > uint32_t(update.state.icon.bitmap.height())) {
+ if (outBuffer.height > uint32_t(update.state.icon.bitmap.height())) {
paint.setColor(0); // transparent fill color
surfaceCanvas.drawRectCoords(0, update.state.icon.bitmap.height(),
- surfaceInfo.w, surfaceInfo.h, paint);
+ outBuffer.width, outBuffer.height, paint);
}
status = surface->unlockAndPost();
@@ -371,8 +373,7 @@ sp<SurfaceControl> SpriteController::obtainSurface(int32_t width, int32_t height
sp<SurfaceControl> surfaceControl = mSurfaceComposerClient->createSurface(
String8("Sprite"), width, height, PIXEL_FORMAT_RGBA_8888,
ISurfaceComposerClient::eHidden);
- if (surfaceControl == NULL || !surfaceControl->isValid()
- || !surfaceControl->getSurface()->isValid()) {
+ if (surfaceControl == NULL || !surfaceControl->isValid()) {
ALOGE("Error creating sprite surface.");
return NULL;
}