Fixed bug using DirAccess in Android Marshmallow due to data dir being a symlink
This commit is contained in:
parent
673ef0cf88
commit
10eedf62b8
|
@ -703,8 +703,32 @@ void OS_Android::set_need_reload_hooks(bool p_needs_them) {
|
||||||
|
|
||||||
String OS_Android::get_data_dir() const {
|
String OS_Android::get_data_dir() const {
|
||||||
|
|
||||||
if (get_data_dir_func)
|
if (data_dir_cache!=String())
|
||||||
return get_data_dir_func();
|
return data_dir_cache;
|
||||||
|
|
||||||
|
if (get_data_dir_func) {
|
||||||
|
String data_dir=get_data_dir_func();
|
||||||
|
|
||||||
|
//store current dir
|
||||||
|
char real_current_dir_name[2048];
|
||||||
|
getcwd(real_current_dir_name,2048);
|
||||||
|
|
||||||
|
//go to data dir
|
||||||
|
chdir(data_dir.utf8().get_data());
|
||||||
|
|
||||||
|
//get actual data dir, so we resolve potential symlink (Android 6.0+ seems to use symlink)
|
||||||
|
char data_current_dir_name[2048];
|
||||||
|
getcwd(data_current_dir_name,2048);
|
||||||
|
|
||||||
|
//cache by parsing utf8
|
||||||
|
data_dir_cache.parse_utf8(data_current_dir_name);
|
||||||
|
|
||||||
|
//restore original dir so we don't mess things up
|
||||||
|
chdir(real_current_dir_name);
|
||||||
|
|
||||||
|
return data_dir_cache;
|
||||||
|
}
|
||||||
|
|
||||||
return ".";
|
return ".";
|
||||||
//return Globals::get_singleton()->get_singleton_object("GodotOS")->call("get_data_dir");
|
//return Globals::get_singleton()->get_singleton_object("GodotOS")->call("get_data_dir");
|
||||||
};
|
};
|
||||||
|
|
|
@ -113,6 +113,8 @@ private:
|
||||||
bool use_apk_expansion;
|
bool use_apk_expansion;
|
||||||
|
|
||||||
bool use_16bits_fbo;
|
bool use_16bits_fbo;
|
||||||
|
|
||||||
|
mutable String data_dir_cache;
|
||||||
|
|
||||||
Rasterizer *rasterizer;
|
Rasterizer *rasterizer;
|
||||||
VisualServer *visual_server;
|
VisualServer *visual_server;
|
||||||
|
|
Loading…
Reference in New Issue