[Mediacontroller] Added flags for setting shuffle and repeat modes 09/180809/2 submit/tizen/20180605.045703
authorArkadiusz Pietraszek <a.pietraszek@partner.samsung.com>
Mon, 4 Jun 2018 09:55:34 +0000 (11:55 +0200)
committerArkadiusz Pietraszek <a.pietraszek@partner.samsung.com>
Mon, 4 Jun 2018 10:43:25 +0000 (12:43 +0200)
shuffle_mode_ and repeat_mode_ initial values are not determined.
Added flags enables to determine if it was already set.
Without it following TCT cases failed regardles of initial value:
MediaControllerPlaybackInfoChangeCallback_onrepeatmodechanged
MediaControllerPlaybackInfoChangeCallback_onshufflemodechanged
when run second time on target device.
First run might result in success as well as in block.

Verification: TCT pass rate: 100%

Change-Id: I71ef1a8ab4f7c86bb6f9adc9b05fc6f192bd0d96
Signed-off-by: Arkadiusz Pietraszek <a.pietraszek@partner.samsung.com>
src/mediacontroller/mediacontroller_server.cc
src/mediacontroller/mediacontroller_server.h

index dd6449a250acfcf338d67c6d94640650c031b64a..8cf93409b60e60dbdc9e01c8f6c7b72a9e68721e 100644 (file)
@@ -35,7 +35,9 @@ MediaControllerServer::MediaControllerServer()
       playback_state_(MC_PLAYBACK_STATE_STOPPED),
       position_(0ULL),
       shuffle_mode_(MC_SHUFFLE_MODE_OFF),
-      repeat_mode_(MC_REPEAT_MODE_OFF) {
+      repeat_mode_(MC_REPEAT_MODE_OFF),
+      is_shuffle_mode_set_(false),
+      is_repeat_mode_set_(false) {
   ScopeLogger();
 }
 
@@ -135,7 +137,7 @@ PlatformResult MediaControllerServer::SetShuffleMode(bool mode) {
   ScopeLogger();
 
   mc_shuffle_mode_e shuffle_mode = mode ? MC_SHUFFLE_MODE_ON : MC_SHUFFLE_MODE_OFF;
-  if (shuffle_mode == shuffle_mode_) {
+  if ((shuffle_mode == shuffle_mode_) && (is_shuffle_mode_set_)) {
     LoggerD("No change in shuffle mode requested, skipping");
     return PlatformResult(ErrorCode::NO_ERROR);
   }
@@ -148,6 +150,7 @@ PlatformResult MediaControllerServer::SetShuffleMode(bool mode) {
   }
 
   shuffle_mode_ = shuffle_mode;
+  is_shuffle_mode_set_ = true;
 
   return PlatformResult(ErrorCode::NO_ERROR);
 }
@@ -156,7 +159,7 @@ PlatformResult MediaControllerServer::SetRepeatMode(bool mode) {
   ScopeLogger();
 
   mc_repeat_mode_e repeat_mode = mode ? MC_REPEAT_MODE_ON : MC_REPEAT_MODE_OFF;
-  if (repeat_mode == repeat_mode_) {
+  if ((repeat_mode == repeat_mode_) && (is_repeat_mode_set_)) {
     LoggerD("No change in repeat mode requested, skipping");
     return PlatformResult(ErrorCode::NO_ERROR);
   }
@@ -169,6 +172,7 @@ PlatformResult MediaControllerServer::SetRepeatMode(bool mode) {
   }
 
   repeat_mode_ = repeat_mode;
+  is_repeat_mode_set_ = true;
 
   return PlatformResult(ErrorCode::NO_ERROR);
 }
index 679bb4bf54169374de14b2cb5d58eb0425451354..b3085be3f67ce67a621f990c697520cbdc5e46bd 100644 (file)
@@ -55,6 +55,8 @@ class MediaControllerServer {
   unsigned long long position_;
   mc_shuffle_mode_e shuffle_mode_;
   mc_repeat_mode_e repeat_mode_;
+  bool is_shuffle_mode_set_;
+  bool is_repeat_mode_set_;
 
   JsonCallback command_listener_;