@@ -22,6 +22,8 @@ open class DismissableTimeBar(
2222 private var shouldAddListener = false
2323 var exoPlayer: Player ? = null
2424
25+ private val listeners = mutableListOf<OnScrubListener >()
26+
2527 // Drag-only seeking state
2628 private var initialX: Float = 0f
2729 private var initialY: Float = 0f
@@ -30,15 +32,22 @@ open class DismissableTimeBar(
3032 private val touchSlopPx: Int = ViewConfiguration .get(context).scaledTouchSlop
3133
3234 init {
33- addSeekBarListener(object : OnScrubListener {
34- override fun onScrubStart (timeBar : TimeBar , position : Long ) = Unit
35+ super .addListener(object : OnScrubListener {
36+ override fun onScrubStart (timeBar : TimeBar , position : Long ) {
37+ listeners.forEach { it.onScrubStart(timeBar, position) }
38+ }
3539
36- override fun onScrubMove (timeBar : TimeBar , position : Long ) = Unit
40+ override fun onScrubMove (timeBar : TimeBar , position : Long ) {
41+ listeners.forEach { it.onScrubMove(timeBar, position) }
42+ }
3743
3844 override fun onScrubStop (timeBar : TimeBar , position : Long , canceled : Boolean ) {
45+ listeners.forEach { it.onScrubStop(timeBar, position, canceled) }
46+
3947 if (canceled) return
4048 // Ignore if gesture started too far above the bar (keep original behavior)
4149 if (initialY <= MINIMUM_ACCEPTED_HEIGHT .dpToPx()) return
50+
4251 exoPlayer?.seekTo(position)
4352 }
4453 })
@@ -109,17 +118,16 @@ open class DismissableTimeBar(
109118 /* *
110119 * DO NOT CALL THIS METHOD DIRECTLY. Use [addSeekBarListener] instead!
111120 */
121+ @Deprecated(" Use addSeekBarListener instead" )
112122 override fun addListener (listener : OnScrubListener ) {
113- if (shouldAddListener) super .addListener(listener)
123+ // do nothing, see below on how listeners should be set
114124 }
115125
116126 /* *
117127 * Wrapper to circumvent adding the listener created by [PlayerControlView]
118128 */
119129 fun addSeekBarListener (listener : OnScrubListener ) {
120- shouldAddListener = true
121- addListener(listener)
122- shouldAddListener = false
130+ listeners.add(listener)
123131 }
124132
125133 fun setPlayer (player : Player ) {
0 commit comments