diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/MainActivity.kt b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/MainActivity.kt index 282023a..78e053d 100644 --- a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/MainActivity.kt +++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/MainActivity.kt @@ -53,9 +53,7 @@ class MainActivity : AppCompatActivity() { } override fun onDestroy() { - for (i in 0 until splitVideoViewAdapter.itemCount) { - splitVideoViewAdapter.destroy(i) - } + splitVideoViewAdapter.destroy() super.onDestroy() } @@ -113,8 +111,8 @@ class MainActivity : AppCompatActivity() { private fun reloadVideoViews(list: List>?) = MainScope().launch { binding.viewPager.setCurrentItem(0, false) for (i in 0 until splitVideoViewAdapter.itemCount) { - splitVideoViewAdapter.pause(i) - splitVideoViewAdapter.destroy(i) + splitVideoViewAdapter.pause() + splitVideoViewAdapter.destroy() } //delay(oldSplitMode * Constants.CONF_DELAY_BASE_MILLIS) delay((oldSplitMode * 100) + Constants.CONF_DELAY_BASE_MILLIS) diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/SplitViewFragment.kt b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/SplitViewFragment.kt index 03ea162..ac741b5 100644 --- a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/SplitViewFragment.kt +++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/SplitViewFragment.kt @@ -162,6 +162,7 @@ class SplitViewFragment : Fragment() { } MainScope().launch { stopAll() + //delay(Constants.CONF_DELAY_BASE_MILLIS) delay(splitMode * Constants.CONF_DELAY_BASE_MILLIS) //delay((splitMode * 100) + Constants.CONF_DELAY_BASE_MILLIS) val item = data[position] @@ -211,13 +212,13 @@ class SplitViewFragment : Fragment() { } }.start() - fun destroyAll() /*= MainScope().launch(Dispatchers.Main)*/ { - if (videoViews.isEmpty()) return + fun destroyAll() = MainScope().launch(Dispatchers.Main) { + if (videoViews.isEmpty()) return@launch for (index in data.indices) { //videoViews[index].destroy() videoViews[index].destroySurface() } - }//.start() + }.start() companion object { private val TAG = SplitViewFragment::class.java.simpleName diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoViewAdapter.kt b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoViewAdapter.kt index 0ec3db4..37e4f03 100644 --- a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoViewAdapter.kt +++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoViewAdapter.kt @@ -41,6 +41,12 @@ class VideoViewAdapter( notifyDataSetChanged() } + fun pause() { + for (i in fragments.indices) { + pause(i) + } + } + fun pause(index: Int) { pause(fragments[index]) } @@ -57,6 +63,12 @@ class VideoViewAdapter( fragment.playAll() } + fun destroy() { + for (i in fragments.indices) { + destroy(i) + } + } + fun destroy(index: Int) { destroy(fragments[index]) }