| Index: talk/app/webrtc/java/android/org/webrtc/EglBase.java
|
| diff --git a/talk/app/webrtc/java/android/org/webrtc/EglBase.java b/talk/app/webrtc/java/android/org/webrtc/EglBase.java
|
| index 2ee36882e8eb9b6e78d7cd77370dc8db3587256d..2f8e4aa86d422790ea866e544fe1c0fe7916c496 100644
|
| --- a/talk/app/webrtc/java/android/org/webrtc/EglBase.java
|
| +++ b/talk/app/webrtc/java/android/org/webrtc/EglBase.java
|
| @@ -27,7 +27,10 @@
|
|
|
| package org.webrtc;
|
|
|
| +import android.graphics.Canvas;
|
| import android.graphics.SurfaceTexture;
|
| +import android.graphics.Rect;
|
| +import android.view.Surface;
|
| import android.view.SurfaceHolder;
|
|
|
| import org.webrtc.Logging;
|
| @@ -86,9 +89,71 @@ public final class EglBase {
|
| eglContext = createEglContext(sharedContext, eglDisplay, eglConfig);
|
| }
|
|
|
| - // Create EGLSurface from the Android SurfaceHolder.
|
| - public void createSurface(SurfaceHolder surfaceHolder) {
|
| - createSurfaceInternal(surfaceHolder);
|
| + // Create EGLSurface from the Android Surface.
|
| + public void createSurface(Surface surface) {
|
| + /**
|
| + * We have to wrap Surface in a SurfaceHolder because for some reason eglCreateWindowSurface
|
| + * couldn't actually take a Surface object until API 17. Older versions fortunately just call
|
| + * SurfaceHolder.getSurface(), so we'll do that. No other methods are relevant.
|
| + */
|
| + class FakeSurfaceHolder implements SurfaceHolder {
|
| + private final Surface surface;
|
| +
|
| + FakeSurfaceHolder(Surface surface) {
|
| + this.surface = surface;
|
| + }
|
| +
|
| + @Override
|
| + public void addCallback(Callback callback) {}
|
| +
|
| + @Override
|
| + public void removeCallback(Callback callback) {}
|
| +
|
| + @Override
|
| + public boolean isCreating() {
|
| + return false;
|
| + }
|
| +
|
| + @Override
|
| + public void setType(int i) {}
|
| +
|
| + @Override
|
| + public void setFixedSize(int i, int i2) {}
|
| +
|
| + @Override
|
| + public void setSizeFromLayout() {}
|
| +
|
| + @Override
|
| + public void setFormat(int i) {}
|
| +
|
| + @Override
|
| + public void setKeepScreenOn(boolean b) {}
|
| +
|
| + @Override
|
| + public Canvas lockCanvas() {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public Canvas lockCanvas(Rect rect) {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public void unlockCanvasAndPost(Canvas canvas) {}
|
| +
|
| + @Override
|
| + public Rect getSurfaceFrame() {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public Surface getSurface() {
|
| + return surface;
|
| + }
|
| + }
|
| +
|
| + createSurfaceInternal(new FakeSurfaceHolder(surface));
|
| }
|
|
|
| // Create EGLSurface from the Android SurfaceTexture.
|
|
|