private void disableRenderer(Renderer renderer) throws ExoPlaybackException { mediaClock.onRendererDisabled(renderer); ensureStopped(renderer); renderer.disable(); }
@Test public void disableRendererMediaClock_shouldKeepPlaybackParameters() throws ExoPlaybackException { FakeMediaClockRenderer mediaClockRenderer = new MediaClockRenderer(TEST_PLAYBACK_PARAMETERS, /* playbackParametersAreMutable= */ false); mediaClock.onRendererEnabled(mediaClockRenderer); mediaClock.onRendererDisabled(mediaClockRenderer); assertThat(mediaClock.getPlaybackParameters()).isEqualTo(TEST_PLAYBACK_PARAMETERS); }
@Test public void staleDisableRendererClock_shouldNotThrow() throws ExoPlaybackException { MediaClockRenderer mediaClockRenderer = new MediaClockRenderer(); mediaClockRenderer.positionUs = TEST_POSITION_US; mediaClock.onRendererDisabled(mediaClockRenderer); assertThat(mediaClock.syncAndGetPositionUs()).isEqualTo(C.msToUs(fakeClock.elapsedRealtime())); }
@Test public void disableRendererMediaClock_standaloneShouldBeSynced() throws ExoPlaybackException { MediaClockRenderer mediaClockRenderer = new MediaClockRenderer(); mediaClock.start(); mediaClock.onRendererEnabled(mediaClockRenderer); mediaClockRenderer.positionUs = TEST_POSITION_US; mediaClock.syncAndGetPositionUs(); mediaClock.onRendererDisabled(mediaClockRenderer); fakeClock.advanceTime(SLEEP_TIME_MS); assertThat(mediaClock.syncAndGetPositionUs()) .isEqualTo(TEST_POSITION_US + C.msToUs(SLEEP_TIME_MS)); assertClockIsRunning(); }