From c9ca4156aad1cd3f2e65915eb4c1a4340adaffbd Mon Sep 17 00:00:00 2001 From: Raymond Yang Date: Wed, 8 Mar 2023 13:37:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8surfaceDestroyed=E8=A3=A1=E9=9D=A2?= =?UTF-8?q?=E5=91=BC=E5=8F=ABpause?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/mainScreen/MainActivity.kt | 22 +------------------ .../ui/mainScreen/SplitViewFragment.kt | 2 +- .../ui/mainScreen/VideoView.kt | 4 ++-- .../ui/mainScreen/VideoViewAdapter.kt | 6 ++--- .../hisharp/gstreamer_player/GstLibrary.kt | 3 ++- 5 files changed, 9 insertions(+), 28 deletions(-) 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 2f0ea78..662bbab 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 @@ -68,26 +68,6 @@ class MainActivity : AppCompatActivity() { offscreenPageLimit = 100 setPageTransformer(null) registerOnPageChangeCallback(object: ViewPager2.OnPageChangeCallback() { - private var oldPage = 0 - override fun onPageScrollStateChanged(state: Int) { - super.onPageScrollStateChanged(state) - /*if (state == ViewPager2.SCROLL_STATE_DRAGGING) { - oldPage = currentPage - splitVideoViewAdapter.stop(currentPage) - } - if (state == ViewPager2.SCROLL_STATE_IDLE && currentPage == oldPage) { - splitVideoViewAdapter.play(currentPage) - }*/ - //Log.d("Split", "oldPage: $oldPage, currentPage: $currentPage") - } - override fun onPageScrolled( - position: Int, - positionOffset: Float, - positionOffsetPixels: Int - ) { - super.onPageScrolled(position, positionOffset, positionOffsetPixels) - //Log.d("Split", "onPageScrolled: $currentPage") - } override fun onPageSelected(position: Int) { super.onPageSelected(position) currentPage = position @@ -133,7 +113,7 @@ class MainActivity : AppCompatActivity() { private fun reloadVideoViews(list: List>?) = MainScope().launch { binding.viewPager.setCurrentItem(0, false) for (i in 0 until splitVideoViewAdapter.itemCount) { - splitVideoViewAdapter.stop(i) + splitVideoViewAdapter.pause(i) } //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 298d17c..e61fffb 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 @@ -206,7 +206,7 @@ class SplitViewFragment : Fragment() { for (index in data.indices) { videoViews[index].stopRetryCount() if (!videoViews[index].isPlaying || videoViews[index].isLoading) continue - videoViews[index].stop() + videoViews[index].pause() //delay(300) } }.start() diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt index f81fd5e..d44d08f 100644 --- a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt +++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt @@ -109,11 +109,11 @@ class VideoView : ConstraintLayout, GstCallback { gstLibrary.play() } - fun stop() { + fun pause() { if (data == null) return isPlaying = false if (this::gstLibrary.isInitialized) { - gstLibrary.stop() + gstLibrary.pause() } } 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 8a90034..0ec3db4 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,11 +41,11 @@ class VideoViewAdapter( notifyDataSetChanged() } - fun stop(index: Int) { - stop(fragments[index]) + fun pause(index: Int) { + pause(fragments[index]) } - private fun stop(fragment: SplitViewFragment) { + private fun pause(fragment: SplitViewFragment) { fragment.stopAll() } diff --git a/gstreamer_player/src/com/hisharp/gstreamer_player/GstLibrary.kt b/gstreamer_player/src/com/hisharp/gstreamer_player/GstLibrary.kt index 6d3d60e..b538a83 100644 --- a/gstreamer_player/src/com/hisharp/gstreamer_player/GstLibrary.kt +++ b/gstreamer_player/src/com/hisharp/gstreamer_player/GstLibrary.kt @@ -31,7 +31,7 @@ class GstLibrary(context: Context) : Closeable, SurfaceHolder.Callback { nativePlay() } - fun stop() { + fun pause() { if (!isInit) return nativePause() } @@ -139,6 +139,7 @@ class GstLibrary(context: Context) : Closeable, SurfaceHolder.Callback { override fun surfaceDestroyed(holder: SurfaceHolder) { Log.d("$TAG+$tag", "Surface destroyed") + pause() releaseSurface() isInit = false }