bool ResourceManager::Release() {
int rm_ret = MM_RESOURCE_MANAGER_ERROR_NONE;
- bool ret = true;
TRACKRENDERER_ENTER;
- if (resourcelist_.empty() || resourcelist_.size() == 0) return ret;
+ if (resourcelist_.empty()) return true;
rm_ret = mm_resource_manager_mark_all_for_release(resourcemanager_handle_);
if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
TRACKRENDERER_ERROR("failed to mark resource for release, ret(0x%x)", rm_ret);
- ret = false;
} else {
rm_ret = mm_resource_manager_commit(resourcemanager_handle_);
if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
TRACKRENDERER_ERROR("failed to commit of resource, ret(0x%x)", rm_ret);
- ret = false;
}
}
resourcelist_.clear();
TRACKRENDERER_LEAVE;
- return ret;
+ return (rm_ret == MM_RESOURCE_MANAGER_ERROR_NONE);
}
bool ResourceManager::Release(const ResourceCategory type) {
int rm_ret = MM_RESOURCE_MANAGER_ERROR_NONE;
- bool ret = true;
TRACKRENDERER_ENTER;
- if (resourcelist_.empty()) return ret;
+ if (resourcelist_.empty()) return true;
auto compare = [type](Resource & item) noexcept->bool {
return item.GetResourceCategory() == type;
// There is no resource.
if (target == resourcelist_.end()) {
TRACKRENDERER_ERROR("there is no acquired [%d type] resource", (int)type);
- return ret;
+ return true;
}
TRACKRENDERER_INFO("resource Type[%d]", (int)type);
rm_ret = mm_resource_manager_mark_for_release(resourcemanager_handle_, target->GetResourceHandle());
if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
TRACKRENDERER_ERROR("failed to mark resource for release, ret(0x%x)", rm_ret);
- ret = false;
} else {
rm_ret = mm_resource_manager_commit(resourcemanager_handle_);
if (rm_ret != MM_RESOURCE_MANAGER_ERROR_NONE) {
TRACKRENDERER_ERROR("failed to commit of resource, ret(0x%x)", rm_ret);
- ret = false;
}
}
TRACKRENDERER_DEBUG("resourcelist_.size() = %zu", resourcelist_.size());
TRACKRENDERER_LEAVE;
- return ret;
+ return (rm_ret == MM_RESOURCE_MANAGER_ERROR_NONE);
}
} // namespace trackrenderer
TRACKRENDERER_ENTER;
pipeline_.reset();
- for (int res_idx = (int)ResourceCategory::kVideoDecoder; res_idx <= (int)ResourceCategory::kVideoRenderer; res_idx++) {
- if (!resource_manager_->Release((ResourceCategory)res_idx)) {
- TRACKRENDERER_ERROR("failed to release [%d] resources", res_idx);
- }
- }
+ if (!resource_manager_->Release(ResourceCategory::kVideoDecoder))
+ TRACKRENDERER_ERROR("failed to release Decoder resources");
+
+ if (!resource_manager_->Release(ResourceCategory::kVideoRenderer))
+ TRACKRENDERER_ERROR("failed to release Renderer resources");
for (int i = 0; i < kTrackTypeMax; ++i) {
trackctx_[i].index = kInvalidTrackIndex;
if (target != trackinfo_.end()) {
trackinfo_.erase(target);
}
- resource_manager_->Release(ResourceCategory::kVideoDecoder);
- resource_manager_->Release(ResourceCategory::kVideoRenderer);
+
+ if (!resource_manager_->Release(ResourceCategory::kVideoDecoder))
+ TRACKRENDERER_ERROR("failed to release Decoder resources");
+
+ if (!resource_manager_->Release(ResourceCategory::kVideoRenderer))
+ TRACKRENDERER_ERROR("failed to release Renderer resources");
} else if (type == kTrackTypeAudio) {
pipeline_->PadAddProbe(Elements::kAppSrcAudio, kPadProbeAudioBlock, "src",
GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,