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..9ba3050c768ac88f2b36ba0cf6ac3c40ac0a4a5c 100644 |
--- a/talk/app/webrtc/java/android/org/webrtc/EglBase.java |
+++ b/talk/app/webrtc/java/android/org/webrtc/EglBase.java |
@@ -27,7 +27,11 @@ |
package org.webrtc; |
+import android.graphics.Canvas; |
import android.graphics.SurfaceTexture; |
+import android.graphics.Rect; |
magjed_webrtc
2015/11/18 13:12:52
Revert these changes.
|
+import android.opengl.EGLExt; |
+import android.view.Surface; |
import android.view.SurfaceHolder; |
import org.webrtc.Logging; |
@@ -86,9 +90,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 |
magjed_webrtc
2015/11/18 13:12:52
Rebase, I have landed this change already in a sep
perkj_webrtc
2015/11/18 14:51:20
I will rebase and revert all this once the decoder
|
+ * 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. |