check if defaultRefreshRate is reasonable

We found getDefaultDisplay has a very small chance returns null
This commit is contained in:
michalliu 2017-06-13 15:17:32 +08:00
parent c980eae9c4
commit dbfbcd6312

View File

@ -72,7 +72,7 @@ public final class VideoFrameReleaseTimeHelper {
private VideoFrameReleaseTimeHelper(double defaultDisplayRefreshRate, private VideoFrameReleaseTimeHelper(double defaultDisplayRefreshRate,
boolean useDefaultDisplayVsync) { boolean useDefaultDisplayVsync) {
this.useDefaultDisplayVsync = useDefaultDisplayVsync; this.useDefaultDisplayVsync = useDefaultDisplayVsync;
if (useDefaultDisplayVsync) { if (useDefaultDisplayVsync && defaultDisplayRefreshRate > 0f) {
vsyncSampler = VSyncSampler.getInstance(); vsyncSampler = VSyncSampler.getInstance();
vsyncDurationNs = (long) (C.NANOS_PER_SECOND / defaultDisplayRefreshRate); vsyncDurationNs = (long) (C.NANOS_PER_SECOND / defaultDisplayRefreshRate);
vsyncOffsetNs = (vsyncDurationNs * VSYNC_OFFSET_PERCENTAGE) / 100; vsyncOffsetNs = (vsyncDurationNs * VSYNC_OFFSET_PERCENTAGE) / 100;
@ -202,7 +202,7 @@ public final class VideoFrameReleaseTimeHelper {
private static float getDefaultDisplayRefreshRate(Context context) { private static float getDefaultDisplayRefreshRate(Context context) {
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
return manager.getDefaultDisplay().getRefreshRate(); return manager.getDefaultDisplay() != null ? manager.getDefaultDisplay().getRefreshRate() : 0f;
} }
/** /**