expo-libvlc-player 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  apply plugin: "com.android.library"
2
2
 
3
3
  group = "expo.modules.libvlcplayer"
4
- version = "2.0.1"
4
+ version = "2.0.3"
5
5
 
6
6
  def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
7
7
  apply from: expoModulesCorePlugin
@@ -27,7 +27,7 @@ android {
27
27
  namespace "expo.modules.libvlcplayer"
28
28
  defaultConfig {
29
29
  versionCode 1
30
- versionName "2.0.1"
30
+ versionName "2.0.3"
31
31
  consumerProguardFiles("proguard-rules.pro")
32
32
  }
33
33
  lintOptions {
@@ -151,7 +151,7 @@ class AudioFocusManager(
151
151
  pausePlayerIfUnmuted(player)
152
152
  } else {
153
153
  val volume = player.getVolume() / 20
154
- view.userVolume = volume
154
+ view.oldVolume = volume
155
155
  player.setVolume(volume)
156
156
  }
157
157
  }
@@ -166,7 +166,7 @@ class AudioFocusManager(
166
166
  playerView.get()?.let { view ->
167
167
  view.mediaPlayer?.let { player ->
168
168
  if (player.getVolume() > MIN_PLAYER_VOLUME) {
169
- player.setVolume(view.userVolume)
169
+ player.setVolume(view.oldVolume)
170
170
  }
171
171
  }
172
172
  }
@@ -38,11 +38,11 @@ class LibVlcPlayerView(
38
38
 
39
39
  private var libVLC: LibVLC? = null
40
40
  internal var mediaPlayer: MediaPlayer? = null
41
- internal var media: Media? = null
41
+ private var media: Media? = null
42
42
  private var shouldCreate: Boolean = false
43
43
 
44
- internal var mediaLength: Long = 0L
45
- internal var userVolume: Int = MAX_PLAYER_VOLUME
44
+ private var mediaLength: Long = 0L
45
+ internal var oldVolume: Int = MAX_PLAYER_VOLUME
46
46
  internal var firstPlay: Boolean = false
47
47
 
48
48
  internal val onBuffering by EventDispatcher()
@@ -58,6 +58,8 @@ class LibVlcPlayerView(
58
58
 
59
59
  init {
60
60
  MediaPlayerManager.registerPlayerView(this)
61
+
62
+ addPlayerView()
61
63
  }
62
64
 
63
65
  override fun onAttachedToWindow() {
@@ -101,13 +103,21 @@ class LibVlcPlayerView(
101
103
  firstPlay = true
102
104
  }
103
105
 
106
+ fun addPlayerView() {
107
+ val parent = playerView.getParent()
108
+
109
+ if (parent == null) {
110
+ addView(playerView)
111
+ }
112
+ }
113
+
104
114
  fun attachPlayer() {
105
115
  mediaPlayer?.let { player ->
106
- if (playerView.getParent() == null) {
107
- addView(playerView)
108
- }
116
+ addPlayerView()
117
+
118
+ val attached = player.getVLCVout().areViewsAttached()
109
119
 
110
- if (!player.getVLCVout().areViewsAttached()) {
120
+ if (!attached) {
111
121
  player.attachViews(playerView, DISPLAY_MANAGER, ENABLE_SUBTITLES, USE_TEXTURE_VIEW)
112
122
  }
113
123
  }
@@ -119,7 +129,6 @@ class LibVlcPlayerView(
119
129
  }
120
130
 
121
131
  fun destroyPlayer() {
122
- media?.release()
123
132
  media = null
124
133
  mediaPlayer?.release()
125
134
  mediaPlayer = null
@@ -276,7 +285,7 @@ class LibVlcPlayerView(
276
285
  }
277
286
  }
278
287
 
279
- var options: ArrayList<String> = ArrayList<String>()
288
+ var options: ArrayList<String> = ArrayList()
280
289
  set(value) {
281
290
  val old = field
282
291
  field = value
@@ -292,12 +301,13 @@ class LibVlcPlayerView(
292
301
  setPlayerTracks()
293
302
  }
294
303
 
295
- var slaves: ArrayList<Slave> = ArrayList<Slave>()
304
+ var slaves: ArrayList<Slave> = ArrayList()
296
305
  set(value) {
297
- val old = field
298
- field = value
306
+ val newSlaves = value.filter { it !in field }
307
+
308
+ field = field.apply { addAll(newSlaves) }
299
309
 
300
- if (value != old) {
310
+ if (!newSlaves.isEmpty()) {
301
311
  addPlayerSlaves()
302
312
  }
303
313
  }
@@ -332,7 +342,7 @@ class LibVlcPlayerView(
332
342
  }
333
343
 
334
344
  val newVolume = value.coerceIn(MIN_PLAYER_VOLUME, MAX_PLAYER_VOLUME)
335
- userVolume = newVolume
345
+ oldVolume = newVolume
336
346
 
337
347
  mediaPlayer?.let { player ->
338
348
  if (player.getVolume() > MIN_PLAYER_VOLUME) {
@@ -354,7 +364,7 @@ class LibVlcPlayerView(
354
364
  if (value) {
355
365
  MIN_PLAYER_VOLUME
356
366
  } else {
357
- userVolume
367
+ oldVolume
358
368
  }
359
369
 
360
370
  mediaPlayer?.setVolume(newVolume)
@@ -408,7 +418,7 @@ class LibVlcPlayerView(
408
418
  }
409
419
  }
410
420
 
411
- internal fun ArrayList<String>.hasAudioOption(): Boolean {
421
+ private fun ArrayList<String>.hasAudioOption(): Boolean {
412
422
  val options =
413
423
  setOf(
414
424
  "--no-audio",
@@ -17,7 +17,7 @@ class LibVlcPlayerView: ExpoView {
17
17
  private var shouldCreate: Bool = false
18
18
 
19
19
  var mediaLength: Int32 = 0
20
- private var userVolume: Int = maxPlayerVolume
20
+ private var oldVolume: Int = maxPlayerVolume
21
21
  var firstPlay: Bool = false
22
22
 
23
23
  let onBuffering = EventDispatcher()
@@ -80,6 +80,8 @@ class LibVlcPlayerView: ExpoView {
80
80
 
81
81
  func destroyPlayer() {
82
82
  mediaPlayer?.media = nil
83
+ mediaPlayer?.delegate = nil
84
+ mediaPlayer?.drawable = nil
83
85
  mediaPlayer = nil
84
86
  }
85
87
 
@@ -245,9 +247,16 @@ class LibVlcPlayerView: ExpoView {
245
247
  }
246
248
  }
247
249
 
248
- var slaves: [Slave] = .init() {
249
- didSet {
250
- if slaves != oldValue {
250
+ private var _slaves: [Slave] = .init()
251
+
252
+ var slaves: [Slave] {
253
+ get { _slaves }
254
+ set {
255
+ let newSlaves = newValue.filter { !_slaves.contains($0) }
256
+
257
+ _slaves += newSlaves
258
+
259
+ if !newSlaves.isEmpty {
251
260
  addPlayerSlaves()
252
261
  }
253
262
  }
@@ -288,7 +297,7 @@ class LibVlcPlayerView: ExpoView {
288
297
  }
289
298
 
290
299
  let newVolume = max(minPlayerVolume, min(maxPlayerVolume, volume))
291
- userVolume = newVolume
300
+ oldVolume = newVolume
292
301
 
293
302
  if let player = mediaPlayer, let audio = player.audio {
294
303
  if audio.volume > minPlayerVolume {
@@ -307,7 +316,7 @@ class LibVlcPlayerView: ExpoView {
307
316
 
308
317
  let newVolume = mute ?
309
318
  minPlayerVolume :
310
- userVolume
319
+ oldVolume
311
320
 
312
321
  mediaPlayer?.audio?.volume = Int32(newVolume)
313
322
  MediaPlayerManager.shared.setAppropriateAudioSession()
@@ -361,7 +370,7 @@ class LibVlcPlayerView: ExpoView {
361
370
  }
362
371
  }
363
372
 
364
- extension Array where Element == String {
373
+ private extension Array where Element == String {
365
374
  func hasAudioOption() -> Bool {
366
375
  let options: Set<String> = [
367
376
  "--no-audio", "-no-audio", ":no-audio",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-libvlc-player",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "LibVLC Player for Expo",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",