Drop SeekDone if seek is not finished 73/280873/1 accepted/tizen/unified/20220908.013401
authorJeongyoon Nam <just.nam@samsung.com>
Tue, 6 Sep 2022 06:53:21 +0000 (15:53 +0900)
committerJeongyoon Nam <just.nam@samsung.com>
Tue, 6 Sep 2022 06:53:21 +0000 (15:53 +0900)
[Version] 0.0.7
[Issue Type] Bug fix

Change-Id: I5e069b24b0e263ab4faa5ce6e0d878097affc3d9

packaging/esplusplayer.spec
src/esplusplayer/src/esplayer.cpp

index aa10061..e54dc69 100644 (file)
@@ -2,7 +2,7 @@
 %bcond_without ESPLUSPLAYER_UT
 Name:       esplusplayer
 Summary:    new multimedia streaming player
-Version:    0.0.6
+Version:    0.0.7
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 6845018..bd79420 100644 (file)
@@ -598,6 +598,7 @@ bool EsPlayer::Seek(const uint64_t time_millisecond) {
     resume_time_.time = time_millisecond;
     return true;
   }
+  is_seek_done_need_drop = true;
   LOG_DEBUG("[%p] > [ENTER] seek time [%" PRIu64 " ms]", this, time_millisecond);
   for (const auto& track : track_) {
     std::lock_guard<std::mutex> lock2(eos_mutex_);
@@ -613,7 +614,12 @@ bool EsPlayer::Seek(const uint64_t time_millisecond) {
     return true;
   };
   es_event::Seek event{op};
-  return state_manager_.ProcessEvent(event);
+
+  bool ret = state_manager_.ProcessEvent(event);
+  is_seek_done_need_drop = false;
+  LOG_DEBUG("%p, [LEAVE] seek end ", this);
+
+  return ret;
 }
 
 bool EsPlayer::SetPlaybackRate(const double rate, const bool audio_mute) {
@@ -639,10 +645,10 @@ bool EsPlayer::SetPlaybackRate(const double rate, const bool audio_mute) {
     return true;
   };
   es_event::PlaybackRate event{op};
-  return state_manager_.ProcessEvent(event);
+  bool ret = state_manager_.ProcessEvent(event);
 
   LOG_LEAVE_P(this);
-  return true;
+  return ret;
 }
 
 bool EsPlayer::SetDisplay(const DisplayType& type, void* obj) {
@@ -1396,6 +1402,7 @@ void EsPlayer::TrackRendererEventListener::OnEos() {
 void EsPlayer::TrackRendererEventListener::OnSeekDone() {
   LOG_ENTER_P(handler_);
   if (!handler_->eventlistener_) return;
+  if (handler_->is_seek_done_need_drop == true) return;
   auto listener = std::bind(&plusplayer::EsEventListener::OnSeekDone,
                             handler_->eventlistener_, std::placeholders::_1);
   auto msg = es_msg::Simple::Make(listener, handler_->eventlistener_userdata_);