Loading core/jni/android_hardware_Camera.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -544,13 +544,17 @@ static void android_hardware_Camera_setPreviewDisplay(JNIEnv *env, jobject thiz, sp<Camera> camera = get_native_camera(env, thiz, NULL); if (camera == 0) return; sp<IGraphicBufferProducer> gbp; sp<Surface> surface; if (jSurface) { surface = android_view_Surface_getSurface(env, jSurface); if (surface != NULL) { gbp = surface->getIGraphicBufferProducer(); } } if (camera->setPreviewDisplay(surface) != NO_ERROR) { jniThrowException(env, "java/io/IOException", "setPreviewDisplay failed"); if (camera->setPreviewTexture(gbp) != NO_ERROR) { jniThrowException(env, "java/io/IOException", "setPreviewTexture failed"); } } Loading core/jni/android_view_Surface.cpp +10 −3 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ #include <android_runtime/android_view_Surface.h> #include <android_runtime/android_graphics_SurfaceTexture.h> #include <binder/Parcel.h> #include <gui/Surface.h> #include <gui/SurfaceControl.h> #include <gui/GLConsumer.h> Loading Loading @@ -334,10 +336,15 @@ static jint nativeReadFromParcel(JNIEnv* env, jclass clazz, if (self != NULL) { self->decStrong(&sRefBaseOwner); } sp<Surface> sur(Surface::readFromParcel(*parcel)); if (sur != NULL) { sp<Surface> sur; sp<IGraphicBufferProducer> gbp( interface_cast<IGraphicBufferProducer>(parcel->readStrongBinder())); if (gbp != NULL) { sur = new Surface(gbp); sur->incStrong(&sRefBaseOwner); } return int(sur.get()); } Loading @@ -349,7 +356,7 @@ static void nativeWriteToParcel(JNIEnv* env, jclass clazz, return; } sp<Surface> self(reinterpret_cast<Surface *>(nativeObject)); Surface::writeToParcel(self, parcel); parcel->writeStrongBinder( self != 0 ? self->getIGraphicBufferProducer()->asBinder() : NULL); } // ---------------------------------------------------------------------------- Loading media/jni/android_media_MediaRecorder.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -327,7 +327,7 @@ android_media_MediaRecorder_prepare(JNIEnv *env, jobject thiz) } ALOGI("prepare: surface=%p", native_surface.get()); if (process_media_recorder_call(env, mr->setPreviewSurface(native_surface), "java/lang/RuntimeException", "setPreviewSurface failed.")) { if (process_media_recorder_call(env, mr->setPreviewSurface(native_surface->getIGraphicBufferProducer()), "java/lang/RuntimeException", "setPreviewSurface failed.")) { return; } } Loading Loading
core/jni/android_hardware_Camera.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -544,13 +544,17 @@ static void android_hardware_Camera_setPreviewDisplay(JNIEnv *env, jobject thiz, sp<Camera> camera = get_native_camera(env, thiz, NULL); if (camera == 0) return; sp<IGraphicBufferProducer> gbp; sp<Surface> surface; if (jSurface) { surface = android_view_Surface_getSurface(env, jSurface); if (surface != NULL) { gbp = surface->getIGraphicBufferProducer(); } } if (camera->setPreviewDisplay(surface) != NO_ERROR) { jniThrowException(env, "java/io/IOException", "setPreviewDisplay failed"); if (camera->setPreviewTexture(gbp) != NO_ERROR) { jniThrowException(env, "java/io/IOException", "setPreviewTexture failed"); } } Loading
core/jni/android_view_Surface.cpp +10 −3 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ #include <android_runtime/android_view_Surface.h> #include <android_runtime/android_graphics_SurfaceTexture.h> #include <binder/Parcel.h> #include <gui/Surface.h> #include <gui/SurfaceControl.h> #include <gui/GLConsumer.h> Loading Loading @@ -334,10 +336,15 @@ static jint nativeReadFromParcel(JNIEnv* env, jclass clazz, if (self != NULL) { self->decStrong(&sRefBaseOwner); } sp<Surface> sur(Surface::readFromParcel(*parcel)); if (sur != NULL) { sp<Surface> sur; sp<IGraphicBufferProducer> gbp( interface_cast<IGraphicBufferProducer>(parcel->readStrongBinder())); if (gbp != NULL) { sur = new Surface(gbp); sur->incStrong(&sRefBaseOwner); } return int(sur.get()); } Loading @@ -349,7 +356,7 @@ static void nativeWriteToParcel(JNIEnv* env, jclass clazz, return; } sp<Surface> self(reinterpret_cast<Surface *>(nativeObject)); Surface::writeToParcel(self, parcel); parcel->writeStrongBinder( self != 0 ? self->getIGraphicBufferProducer()->asBinder() : NULL); } // ---------------------------------------------------------------------------- Loading
media/jni/android_media_MediaRecorder.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -327,7 +327,7 @@ android_media_MediaRecorder_prepare(JNIEnv *env, jobject thiz) } ALOGI("prepare: surface=%p", native_surface.get()); if (process_media_recorder_call(env, mr->setPreviewSurface(native_surface), "java/lang/RuntimeException", "setPreviewSurface failed.")) { if (process_media_recorder_call(env, mr->setPreviewSurface(native_surface->getIGraphicBufferProducer()), "java/lang/RuntimeException", "setPreviewSurface failed.")) { return; } } Loading