X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=NativeLauncher%2Flauncher%2Flib%2Fcore_runtime.cc;h=ba874aabfe212c89614996224e01cf8acc0477be;hb=546f3a3947b7e7c205a4799156bcd41bc5ae3c2e;hp=6f4ab5aa49b80ac23a40887c2d9a284687ebde9d;hpb=ba1635c0d92fd276da1d8bc43fecf4e963020448;p=platform%2Fcore%2Fdotnet%2Flauncher.git diff --git a/NativeLauncher/launcher/lib/core_runtime.cc b/NativeLauncher/launcher/lib/core_runtime.cc index 6f4ab5a..ba874aa 100644 --- a/NativeLauncher/launcher/lib/core_runtime.cc +++ b/NativeLauncher/launcher/lib/core_runtime.cc @@ -35,9 +35,9 @@ #include #include -#include #include #include +#include #include @@ -143,50 +143,28 @@ static void registerSigHandler() } } -static bool storage_cb(int id, storage_type_e type, storage_state_e state, const char *path, void *user_data) -{ - int* tmp = (int*)user_data; - if (type == STORAGE_TYPE_INTERNAL) - { - *tmp = id; - return false; - } - - return true; -} - -static void setSpecialFolder(storage_directory_e type, const char* key) -{ - int error; - char* path = NULL; - static int __storageId = -1; - - if (__storageId < 0) { - error = storage_foreach_device_supported(storage_cb, &__storageId); - if (error != STORAGE_ERROR_NONE) { - return; - } - } - - error = storage_get_directory(__storageId, type, &path); - if (error == STORAGE_ERROR_NONE && path != NULL) { - setenv(key, const_cast(path), 1); - free(path); - } -} - static void initEnvForSpecialFolder() { + const char* path = NULL; if (getenv("XDG_PICTURES_DIR") == NULL) { - setSpecialFolder(STORAGE_DIRECTORY_IMAGES, "XDG_PICTURES_DIR"); + path = tzplatform_getenv(TZ_USER_IMAGES); + if (path) { + setenv("XDG_PICTURES_DIR", path, 1); + } } if (getenv("XDG_MUSIC_DIR") == NULL) { - setSpecialFolder(STORAGE_DIRECTORY_MUSIC, "XDG_MUSIC_DIR"); + path = tzplatform_getenv(TZ_USER_MUSIC); + if (path) { + setenv("XDG_MUSIC_DIR", path, 1); + } } if (getenv("XDG_VIDEOS_DIR") == NULL) { - setSpecialFolder(STORAGE_DIRECTORY_VIDEOS, "XDG_VIDEOS_DIR"); + path = tzplatform_getenv(TZ_USER_VIDEOS); + if (path) { + setenv("XDG_VIDEOS_DIR", path, 1); + } } } @@ -376,6 +354,9 @@ int CoreRuntime::initialize(const char* appType, LaunchMode launchMode) // Disable config cache to set environment after coreclr_initialize() putenv(const_cast("COMPlus_DisableConfigCache=1")); + // Set environment variable for System.Environment.SpecialFolder + initEnvForSpecialFolder(); + // read string from external file and set them to environment value. setEnvFromFile(); @@ -428,12 +409,6 @@ int CoreRuntime::initialize(const char* appType, LaunchMode launchMode) _INFO("libcoreclr dlopen and dlsym success"); - // Set environment for System.Environment.SpecialFolder - // Below function creates dbus connection by callging storage API. - // If dbus connection is created bofere fork(), forked process cannot use dbus. - // To avoid gdbus blocking issue, below function should be called after fork() - initEnvForSpecialFolder(); - std::string tpa; char* pluginTPA = pluginGetTPA(); if (pluginTPA && pluginTPA[0] != '\0') { @@ -447,6 +422,11 @@ int CoreRuntime::initialize(const char* appType, LaunchMode launchMode) return -1; } + // VD has their own signal handler. + if (!pluginHasLogControl()) { + registerSigHandler(); + } + int st = createDelegate(__hostHandle, __domainId, "Tizen.Runtime", "Tizen.Runtime.Environment", "SetEnvironmentVariable", (void**)&setEnvironmentVariable); if (st < 0 || setEnvironmentVariable == nullptr) { _ERR("Create delegate for Tizen.Runtime.dll -> Tizen.Runtime.Environment -> SetEnvironmentVariable failed (0x%08x)", st); @@ -543,11 +523,6 @@ int CoreRuntime::launch(const char* appId, const char* root, const char* path, i return -1; } - // VD has their own signal handler. - if (!pluginHasLogControl()) { - registerSigHandler(); - } - pluginSetAppInfo(appId, path); // temporal root path is overrided to real application root path