diff options
author | Alex Glaznev <glaznev@google.com> | 2015-10-09 13:58:18 -0700 |
---|---|---|
committer | Alex Glaznev <glaznev@google.com> | 2015-10-09 20:58:37 +0000 |
commit | b68c5995d1ac84866da45a4ecbb180d8c704ad90 (patch) | |
tree | be7797674c91760f71d6f0ab038d2c0a4fb6fe1b /talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java | |
parent | d4cec0d8fa7913bc9dfa9137e44cca9098e16698 (diff) | |
download | webrtc-b68c5995d1ac84866da45a4ecbb180d8c704ad90.tar.gz |
Add option to print peer connection factory Java stack traces.
Updated version with better handling of media codec release checks.
R=wzh@webrtc.org
Review URL: https://codereview.webrtc.org/1397163002 .
Cr-Commit-Position: refs/heads/master@{#10238}
Diffstat (limited to 'talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java')
-rw-r--r-- | talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java b/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java index afaebf6f2e..1d413b8ece 100644 --- a/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java +++ b/talk/app/webrtc/java/android/org/webrtc/VideoRendererGui.java @@ -36,12 +36,10 @@ import javax.microedition.khronos.opengles.GL10; import android.annotation.SuppressLint; import android.graphics.Point; import android.graphics.Rect; -import android.graphics.SurfaceTexture; import android.opengl.EGL14; import android.opengl.EGLContext; import android.opengl.GLES20; import android.opengl.GLSurfaceView; -import android.opengl.Matrix; import org.webrtc.Logging; import org.webrtc.VideoRenderer.I420Frame; @@ -77,6 +75,9 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { // Current SDK version. private static final int CURRENT_SDK_VERSION = android.os.Build.VERSION.SDK_INT; + // Render and draw threads. + private static Thread renderFrameThread; + private static Thread drawThread; private VideoRendererGui(GLSurfaceView surface) { this.surface = surface; @@ -372,6 +373,9 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { VideoRenderer.renderFrameDone(frame); return; } + if (renderFrameThread == null) { + renderFrameThread = Thread.currentThread(); + } if (!seenFrame && rendererEvents != null) { Logging.d(TAG, "ID: " + id + ". Reporting first rendered frame."); rendererEvents.onFirstFrameRendered(); @@ -394,6 +398,7 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { // Skip rendering of this frame if previous frame was not rendered yet. framesDropped++; VideoRenderer.renderFrameDone(frame); + seenFrame = true; return; } pendingFrame = frame; @@ -430,6 +435,8 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { } instance.yuvImageRenderers.clear(); } + renderFrameThread = null; + drawThread = null; instance.surface = null; eglContext = null; eglContextReady = null; @@ -565,6 +572,26 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { } } + private static void printStackTrace(Thread thread, String threadName) { + if (thread != null) { + StackTraceElement[] stackTraces = thread.getStackTrace(); + if (stackTraces.length > 0) { + Logging.d(TAG, threadName + " stacks trace:"); + for (StackTraceElement stackTrace : stackTraces) { + Logging.d(TAG, stackTrace.toString()); + } + } + } + } + + public static synchronized void printStackTraces() { + if (instance == null) { + return; + } + printStackTrace(renderFrameThread, "Render frame thread"); + printStackTrace(drawThread, "Draw thread"); + } + @SuppressLint("NewApi") @Override public void onSurfaceCreated(GL10 unused, EGLConfig config) { @@ -613,6 +640,9 @@ public class VideoRendererGui implements GLSurfaceView.Renderer { @Override public void onDrawFrame(GL10 unused) { + if (drawThread == null) { + drawThread = Thread.currentThread(); + } GLES20.glViewport(0, 0, screenWidth, screenHeight); GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); synchronized (yuvImageRenderers) { |