diff options
author | 2013-02-14 17:11:20 -0800 | |
---|---|---|
committer | 2013-02-15 12:47:40 -0800 | |
commit | 52800617946c456e78ed010c82d0ec4358368164 (patch) | |
tree | bad73c6c8deec082b972569b6f2e57a43e8d2d41 | |
parent | 29479ebe1007361222bf6ab4d5e2a27927d4b8e8 (diff) |
Refactoring: Rename SurfaceTextureClient to Surface
Change-Id: I5a218ca11abeeec05e3a4c3cfc581bcc788814ea
-rw-r--r-- | core/java/android/view/Surface.java | 3 | ||||
-rw-r--r-- | core/jni/android/graphics/SurfaceTexture.cpp | 6 | ||||
-rw-r--r-- | core/jni/android_opengl_EGL14.cpp | 4 | ||||
-rw-r--r-- | core/jni/android_view_Surface.cpp | 37 | ||||
-rw-r--r-- | core/jni/android_view_SurfaceControl.cpp | 2 | ||||
-rw-r--r-- | core/jni/android_view_TextureView.cpp | 4 | ||||
-rw-r--r-- | core/jni/com_google_android_gles_jni_EGLImpl.cpp | 4 | ||||
-rw-r--r-- | graphics/jni/android_renderscript_RenderScript.cpp | 4 | ||||
-rw-r--r-- | media/jni/android_media_MediaCodec.cpp | 7 | ||||
-rw-r--r-- | media/jni/android_media_MediaCodec.h | 4 | ||||
-rw-r--r-- | media/jni/android_media_MediaPlayer.cpp | 2 | ||||
-rw-r--r-- | media/mca/filterfw/jni/jni_gl_environment.cpp | 6 | ||||
-rw-r--r-- | media/mca/filterfw/native/core/gl_env.cpp | 2 | ||||
-rw-r--r-- | media/mca/filterfw/native/core/gl_env.h | 2 | ||||
-rw-r--r-- | services/input/SpriteController.cpp | 23 |
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; } |