diff --git a/gallery/include/player_ability_slice.h b/gallery/include/player_ability_slice.h index 0b6d091d808b3396cfaf63a185026f6150c4ac4d..ac25d86cbfb77a7499e720d7680295ea6788d3dd 100755 --- a/gallery/include/player_ability_slice.h +++ b/gallery/include/player_ability_slice.h @@ -110,7 +110,7 @@ class PlayerAbilitySlice : public AbilitySlice { public: PlayerAbilitySlice() = default; ~PlayerAbilitySlice() override; - + static std::shared_ptr CreatePlayer(); protected: void OnStart(const Want &want) override; void OnInactive() override; @@ -150,4 +150,4 @@ private: char videoPauseAbsolutePath[MAX_PATH_LENGTH] = { 0 }; }; } // namespace OHOS -#endif // OHOS_PLAYER_ABILITY_SLICE_H \ No newline at end of file +#endif // OHOS_PLAYER_ABILITY_SLICE_H diff --git a/gallery/src/player_ability_slice.cpp b/gallery/src/player_ability_slice.cpp index 2e2e0376115716595d2e2f5e16c6e172d42d6af2..aee274bad92d9adb7f3f9a88c6ef0185675152e7 100755 --- a/gallery/src/player_ability_slice.cpp +++ b/gallery/src/player_ability_slice.cpp @@ -39,6 +39,15 @@ PlayerAbilitySlice::~PlayerAbilitySlice() printf("################ ~PlayerAbilitySlice exit\n"); } +std::shared_ptr PlayerAbilitySlice::CreatePlayer() +{ + static std::shared_ptr instance_ = nullptr; + if (instance_ == nullptr) { + instance_ = std::make_shared(); + } + return instance_; +} + void PlayerAbilitySlice::Clear() { printf("PlayerAbilitySlice::Clear | enter\n"); @@ -175,7 +184,7 @@ void PlayerAbilitySlice::SetUpVideoPlayer(const Want &want) } printf("------########### mp4 file path | %s\n", videoPlayer_->filePath); - videoPlayer_->adapter = std::make_shared(); + videoPlayer_->adapter = PlayerAbilitySlice::CreatePlayer(); std::string uri(videoPlayer_->filePath); std::map header; Source source(uri, header); @@ -379,7 +388,7 @@ void PlayerAbilitySlice::OnStop() if (videoPlayer_ != nullptr && videoPlayer_->adapter.get() != nullptr) { videoPlayer_->adapter->Stop(); - videoPlayer_->adapter->Release(); + videoPlayer_->adapter->Reset(); delete videoPlayer_; videoPlayer_ = nullptr; } @@ -392,9 +401,9 @@ void SliderAnimator::Callback(UIView* view) { if (needRefreshPlayer_) { videoPlayer_->adapter->Stop(); - videoPlayer_->adapter->Release(); + videoPlayer_->adapter->Reset(); - videoPlayer_->adapter = std::make_shared(); + videoPlayer_->adapter = PlayerAbilitySlice::CreatePlayer(); std::string uri(videoPlayer_->filePath); std::map header; Source source(uri, header); @@ -448,4 +457,4 @@ bool ToggleBtnListener::OnClick(UIView &view, const ClickEvent& event) button_->Invalidate(); return true; } -} \ No newline at end of file +}