MediaControllerInstance::~MediaControllerInstance() {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(playlist_map_mutex_);
for (auto const& s : server_playlist_map_) {
for (auto const& v : s.second) {
if (MEDIA_CONTROLLER_ERROR_NONE != mc_playlist_destroy(v.second)) {
std::string serverName = common::CurrentApplication::GetInstance().GetApplicationId();
auto playlistName = args.get(kPlaylistName).get<std::string>();
PlatformResult result = PlatformResult(ErrorCode::NO_ERROR);
+ std::lock_guard<std::mutex> lock(playlist_map_mutex_);
+
if (server_playlist_map_.find(serverName) != server_playlist_map_.end() &&
server_playlist_map_[serverName].find(playlistName) !=
server_playlist_map_[serverName].end()) {
PlatformResult result = PlatformResult(ErrorCode::NO_ERROR);
- if (server_playlist_map_.find(serverName) == server_playlist_map_.end() ||
- server_playlist_map_[serverName].find(name) == server_playlist_map_[serverName].end()) {
- result = LogAndCreateResult(ErrorCode::INVALID_VALUES_ERR,
- "Playlist with given name doesn't exist");
- LogAndReportError(result, &response_obj,
- ("Failed: MediaControllerInstance::MediaControllerServerSavePlaylist"));
- Instance::PostMessage(this, response.serialize().c_str());
- return;
- }
-
- result = server_->SavePlaylist(server_playlist_map_[serverName][name]);
+ {
+ std::lock_guard<std::mutex> lock(playlist_map_mutex_);
+ if (server_playlist_map_.find(serverName) == server_playlist_map_.end() ||
+ server_playlist_map_[serverName].find(name) == server_playlist_map_[serverName].end()) {
+ result = LogAndCreateResult(ErrorCode::INVALID_VALUES_ERR,
+ "Playlist with given name doesn't exist");
+ LogAndReportError(result, &response_obj,
+ ("Failed: MediaControllerInstance::MediaControllerServerSavePlaylist"));
+ Instance::PostMessage(this, response.serialize().c_str());
+ return;
+ }
+ result = server_->SavePlaylist(server_playlist_map_[serverName][name]);
+ }
if (result) {
ReportSuccess(response_obj);
} else {
PlatformResult result = PlatformResult(ErrorCode::NO_ERROR);
- if (server_playlist_map_.find(serverName) == server_playlist_map_.end() ||
- server_playlist_map_[serverName].find(name) == server_playlist_map_[serverName].end()) {
- result = LogAndCreateResult(ErrorCode::INVALID_VALUES_ERR,
- "Playlist with given name doesn't exist");
- LogAndReportError(result, &response_obj,
- ("Failed: MediaControllerInstance::MediaControllerServerDeletePlaylist"));
- Instance::PostMessage(this, response.serialize().c_str());
- return;
- }
- result = server_->DeletePlaylist(server_playlist_map_[serverName][name]);
+ {
+ std::lock_guard<std::mutex> lock(playlist_map_mutex_);
+
+ if (server_playlist_map_.find(serverName) == server_playlist_map_.end() ||
+ server_playlist_map_[serverName].find(name) == server_playlist_map_[serverName].end()) {
+ result = LogAndCreateResult(ErrorCode::INVALID_VALUES_ERR,
+ "Playlist with given name doesn't exist");
+ LogAndReportError(result, &response_obj,
+ ("Failed: MediaControllerInstance::MediaControllerServerDeletePlaylist"));
+ Instance::PostMessage(this, response.serialize().c_str());
+ return;
+ }
+ result = server_->DeletePlaylist(server_playlist_map_[serverName][name]);
- if (result) {
- ReportSuccess(response_obj);
- } else {
- LogAndReportError(result, &response_obj, ("Failed: server_->DeletePlaylist"));
- }
+ if (result) {
+ ReportSuccess(response_obj);
+ } else {
+ LogAndReportError(result, &response_obj, ("Failed: server_->DeletePlaylist"));
+ }
- if (MEDIA_CONTROLLER_ERROR_NONE != mc_playlist_destroy(server_playlist_map_[serverName][name])) {
- LoggerE("Unable to destroy playlist %s", name.c_str());
- }
+ if (MEDIA_CONTROLLER_ERROR_NONE !=
+ mc_playlist_destroy(server_playlist_map_[serverName][name])) {
+ LoggerE("Unable to destroy playlist %s", name.c_str());
+ }
- server_playlist_map_[serverName].erase(name);
+ server_playlist_map_[serverName].erase(name);
+ }
Instance::PostMessage(this, response.serialize().c_str());
};
return;
}
// update the list of stored handles
- utils::UpdatePlaylistHandleMap(app_id, new_playlists_map, server_playlist_map_);
- picojson::value playlists = utils::CreatePlaylistsJSON(app_id, new_playlists_map);
+ {
+ std::lock_guard<std::mutex> lock(playlist_map_mutex_);
+
+ utils::UpdatePlaylistHandleMap(app_id, new_playlists_map, server_playlist_map_);
+ picojson::value playlists = utils::CreatePlaylistsJSON(app_id, new_playlists_map);
- response_obj[kResult] = picojson::value{playlists};
+ response_obj[kResult] = picojson::value{playlists};
+ }
ReportSuccess(response_obj);
Instance::PostMessage(this, response.serialize().c_str());
};
return;
}
// update the list of stored handles
- utils::UpdatePlaylistHandleMap(serverName, new_playlists_map, server_playlist_map_);
- picojson::value playlists = utils::CreatePlaylistsJSON(serverName, new_playlists_map);
+ {
+ std::lock_guard<std::mutex> lock(playlist_map_mutex_);
+ utils::UpdatePlaylistHandleMap(serverName, new_playlists_map, server_playlist_map_);
+ picojson::value playlists = utils::CreatePlaylistsJSON(serverName, new_playlists_map);
- response_obj[kResult] = picojson::value{playlists};
+ response_obj[kResult] = picojson::value{playlists};
+ }
ReportSuccess(response_obj);
Instance::PostMessage(this, response.serialize().c_str());
};
}
PlatformResult result = PlatformResult(ErrorCode::NO_ERROR);
+ std::lock_guard<std::mutex> lock(playlist_map_mutex_);
if (server_playlist_map_.find(serverName) == server_playlist_map_.end() ||
server_playlist_map_[serverName].find(name) == server_playlist_map_[serverName].end()) {
auto serverName = args.get(kServerName).get<std::string>();
PlatformResult result = PlatformResult(ErrorCode::NO_ERROR);
+ {
+ std::lock_guard<std::mutex> lock(playlist_map_mutex_);
+
+ if (server_playlist_map_.find(serverName) == server_playlist_map_.end() ||
+ server_playlist_map_[serverName].find(name) == server_playlist_map_[serverName].end()) {
+ result =
+ LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Playlist with given name doesn't exist");
+ LogAndReportError(result, &response_obj,
+ ("Failed: MediaControllerInstance::MediaControllerPlaylistGetItems"));
+ Instance::PostMessage(this, response.serialize().c_str());
+ return;
+ }
- if (server_playlist_map_.find(serverName) == server_playlist_map_.end() ||
- server_playlist_map_[serverName].find(name) == server_playlist_map_[serverName].end()) {
- result = LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Playlist with given name doesn't exist");
- LogAndReportError(result, &response_obj,
- ("Failed: MediaControllerInstance::MediaControllerPlaylistGetItems"));
- Instance::PostMessage(this, response.serialize().c_str());
- return;
+ result = utils::MediaControllerPlaylistGetItems(server_playlist_map_[serverName][name],
+ &items.get<picojson::array>());
}
-
- result = utils::MediaControllerPlaylistGetItems(server_playlist_map_[serverName][name],
- &items.get<picojson::array>());
if (!result) {
LogAndReportError(result, &response_obj, ("Failed: utils::MediaControllerPlaylistGetItems"));
Instance::PostMessage(this, response.serialize().c_str());
picojson::value playlist_info = picojson::value(picojson::object());
picojson::object& playlist_obj = playlist_info.get<picojson::object>();
+ std::lock_guard<std::mutex> lock(playlist_map_mutex_);
mc_playlist_h handle = nullptr;
if (server_playlist_map_.find(app_id) != server_playlist_map_.end() &&
- server_playlist_map_[app_id].find(playlist_name) !=
- server_playlist_map_[app_id].end()) {
- LoggerD("Using saved handle");
+ server_playlist_map_[app_id].find(playlist_name) != server_playlist_map_[app_id].end()) {
+ LoggerD("Using saved handle");
handle = server_playlist_map_[app_id][playlist_name];
}
LoggerE("Failed to unset display rotation listener");
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_unset_event_reply_received_cb(handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
LoggerE("Failed to unset event reply received callback");
}
- {
- std::lock_guard<std::mutex> lock(handle_mutex_);
-
- if (nullptr != handle_ && MEDIA_CONTROLLER_ERROR_NONE != mc_server_destroy(handle_)) {
- LoggerE("Unable to destroy media controller server");
- }
- handle_ = nullptr;
+ if (nullptr != handle_ && MEDIA_CONTROLLER_ERROR_NONE != mc_server_destroy(handle_)) {
+ LoggerE("Unable to destroy media controller server");
}
+ handle_ = nullptr;
}
PlatformResult MediaControllerServer::Init() {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_create(&handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
return PlatformResult(ErrorCode::NO_ERROR);
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_playback_state(handle_, state_e);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
return PlatformResult(ErrorCode::NO_ERROR);
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_playback_position(handle_, static_cast<unsigned long long>(position));
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
return result;
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_content_age_rating(handle_, rating_e);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
("MediaControllerContentTypeEnum.getValue() error message: %s", result.message().c_str()));
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_playback_content_type(handle_, content_type_e);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Error updating playback content type",
return PlatformResult(ErrorCode::NO_ERROR);
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_update_shuffle_mode(handle_, shuffle_mode);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
return PlatformResult(ErrorCode::NO_ERROR);
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_update_repeat_mode(handle_, repeat_mode);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
return PlatformResult(ErrorCode::NO_ERROR);
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_update_repeat_mode(handle_, mode_e);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
return result;
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_metadata(handle_, attr_e, i->second.to_str().c_str());
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Error setting metadata",
return result;
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret =
mc_server_send_cmd_reply(handle_, client_name.c_str(), request_id.c_str(), code, bundle);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
PlatformResult MediaControllerServer::SetSearchRequestListener(const JsonCallback& callback) {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_search_cmd_received_cb(handle_, OnSearchRequestReceived, this);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Unable to set search request callback.",
PlatformResult MediaControllerServer::UnsetSearchRequestListener() {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_unset_search_cmd_received_cb(handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Unable to unset search request callback.",
PlatformResult MediaControllerServer::SetCommandListener(const JsonCallback& callback) {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_custom_cmd_received_cb(handle_, OnCommandReceived, this);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Unable to set command callback",
PlatformResult MediaControllerServer::UnsetCommandListener() {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_unset_custom_cmd_received_cb(handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Unable to unset command callback",
mc_playlist_h playlist_handle_ = nullptr;
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_create_playlist(handle_, name.c_str(), &playlist_handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
const std::string& index) {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_playlist_item_info(handle_, playlist_name.c_str(), index.c_str());
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
common::PlatformResult MediaControllerServer::UpdateIconURI(const char* icon_uri) {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_icon(handle_, icon_uri);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
std::string value = encoded[v.first].get<std::string>();
LoggerD("Key: %s - Value: %s", v.first.c_str(), value.c_str());
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_add_item_to_playlist(handle_, playlist_handle, index.c_str(), v.second,
value.c_str());
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
}
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_playback_ability(handle_, action_e, support);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
}
if (is_changed) {
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_update_playback_ability(handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Error updating playback ability",
result.message().c_str()));
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_display_mode_ability(handle_, mode_e, support_e);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Error setting playback ability",
result.message().c_str()));
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_display_rotation_ability(handle_, display_rotation_e, support_e);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Error setting ability",
result.message().c_str()));
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_ability_support(handle_, ability_e, support_e);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
/*mc_server_unset_playlist_cmd_received_cb the last unsetter will never be used*/};
// This loop is no-op in case of success.
+ std::lock_guard<std::mutex> lock(handle_mutex_);
for (int i = 0; i < failed_setter; ++i) {
auto ret = unsetters[i](handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
}
};
+ std::lock_guard<std::mutex> lock(handle_mutex_);
// In Native API, since Tizen 5.0 an action instead of a state is sent to change the state of a
// server. In Web API the names were not refactored.
int ret = mc_server_set_playback_action_cmd_received_cb(handle_, OnPlaybackActionCommand, this);
PlatformResult MediaControllerServer::UnsetChangeRequestPlaybackInfoListener() {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_unset_playback_action_cmd_received_cb(handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
// subtitles
common::PlatformResult MediaControllerServer::UpdateSubtitlesEnabled(bool enabled) {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_update_subtitles_enabled(handle_, enabled);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Error setting server subtitles",
const JsonCallback& callback) {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_subtitles_cmd_received_cb(handle_, OnSubtitlesChangeCommand, this);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Unable to set subtitles command listener",
PlatformResult MediaControllerServer::UnsetSubtitlesChangeRequestListener() {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_unset_subtitles_cmd_received_cb(handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Unable to unset subtitles command listener",
// mode360
common::PlatformResult MediaControllerServer::UpdateMode360Enabled(bool enabled) {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_update_360_mode_enabled(handle_, enabled);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Error setting server mode 360",
const JsonCallback& callback) {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_360_mode_cmd_received_cb(handle_, OnMode360ChangeCommand, this);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Unable to set mode 360 command listener",
PlatformResult MediaControllerServer::UnsetMode360ChangeRequestListener() {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_unset_360_mode_cmd_received_cb(handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Unable to unset mode 360 command listener",
return result;
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_update_display_mode(handle_, mode);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
const JsonCallback& callback) {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_set_display_mode_cmd_received_cb(handle_, OnDisplayModeChangeCommand, this);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
PlatformResult MediaControllerServer::UnsetDisplayModeChangeRequestListener() {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_unset_display_mode_cmd_received_cb(handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
return PlatformResult(ErrorCode::UNKNOWN_ERR);
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_update_display_rotation(handle_, rotation);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Error setting server display rotation",
const JsonCallback& callback) {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret =
mc_server_set_display_rotation_cmd_received_cb(handle_, OnDisplayRotationChangeCommand, this);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
PlatformResult MediaControllerServer::UnsetDisplayRotationChangeRequestListener() {
ScopeLogger();
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_unset_display_rotation_cmd_received_cb(handle_);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
return true;
};
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret = mc_server_foreach_client(handle_, client_cb, clients_info);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
LoggerD("data is null");
}
+ std::lock_guard<std::mutex> lock(handle_mutex_);
int ret =
mc_server_send_custom_event(handle_, client_name, event_name, event_data_bundle, request_id);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {