if (disposed_)
return;
+ loader_mount_.reset();
hwacc_config_.reset();
app_defined_loader_info_manager_.reset();
loader_info_manager_.reset();
app_defined_loader_info_manager_.reset(new AppDefinedLoaderInfoManager());
app_defined_loader_info_manager_->SetEventListener(this);
hwacc_config_.reset(new HWAccelerationConfig());
+
+ if (!label_monitor.IsDisposed()) {
+ setenv("LOADER_MOUNT", "1", 1);
+ loader_mount_.reset(new LoaderMount());
+ }
} catch (const Exception& e) {
_E("Exception occurs. error: %s", e.what());
return;
disposed_ = false;
}
+void LoaderManager::PrepareApp(const std::shared_ptr<LoaderContext>& context,
+ const AppInfo* app_info) {
+ pid_t pid = context->GetPid();
+ loader_mount_->Mount(pid, app_info);
+}
+
void LoaderManager::SetEventListener(LoaderManager::IEvent* event_listener) {
event_listener_ = event_listener;
}
RemoveLoaderContextsByCallerPid(pid);
LoaderExecutor::GetInst().HandleSigchld(pid);
+ if (loader_mount_) loader_mount_->HandleSigchld(pid);
}
void LoaderManager::AddDefaultLoaderContexts() {
loader_info_manager_->Load();
for (auto& info : loader_info_manager_->GetLoaderInfoList()) {
- auto context = LoaderFactory::GetInst().CreateLoaderContext(info);
+ auto context =
+ LoaderFactory::GetInst().CreateLoaderContext(info, loader_mount_);
if (context != nullptr) {
context->SetEventListener(this);
loader_contexts_.push_back(std::move(context));
auto context = FindLoaderContextFromName(name);
if (context == nullptr) {
- context = LoaderFactory::GetInst().CreateLoaderContext(info, caller_pid);
+ context = LoaderFactory::GetInst().CreateLoaderContext(info, caller_pid,
+ loader_mount_);
if (context == nullptr) {
_E("Failed to create loader context. loader_name: %s",
name.c_str());
std::shared_ptr<LoaderContext> LoaderManager::AddLoaderContext(
tizen_base::Bundle b) {
- auto context = LoaderFactory::GetInst().CreateLoaderContext(std::move(b));
+ auto context =
+ LoaderFactory::GetInst().CreateLoaderContext(std::move(b), loader_mount_);
if (context == nullptr)
return nullptr;