Make FileAccess and DirAccess classes reference counted.
This commit is contained in:
parent
ca9372622f
commit
9381acb6a4
193 changed files with 1122 additions and 1776 deletions
|
|
@ -200,8 +200,7 @@ Error ImageLoaderBMP::convert_to_image(Ref<Image> p_image,
|
|||
return err;
|
||||
}
|
||||
|
||||
Error ImageLoaderBMP::load_image(Ref<Image> p_image, FileAccess *f,
|
||||
bool p_force_linear, float p_scale) {
|
||||
Error ImageLoaderBMP::load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale) {
|
||||
bmp_header_s bmp_header;
|
||||
Error err = ERR_INVALID_DATA;
|
||||
|
||||
|
|
@ -241,7 +240,6 @@ Error ImageLoaderBMP::load_image(Ref<Image> p_image, FileAccess *f,
|
|||
case BI_CMYKRLE8:
|
||||
case BI_CMYKRLE4: {
|
||||
// Stop parsing.
|
||||
f->close();
|
||||
ERR_FAIL_V_MSG(ERR_UNAVAILABLE,
|
||||
vformat("Compressed BMP files are not supported: %s", f->get_path()));
|
||||
} break;
|
||||
|
|
@ -283,7 +281,6 @@ Error ImageLoaderBMP::load_image(Ref<Image> p_image, FileAccess *f,
|
|||
err = convert_to_image(p_image, bmp_buffer_r,
|
||||
bmp_color_table_r, color_table_size, bmp_header);
|
||||
}
|
||||
f->close();
|
||||
}
|
||||
}
|
||||
return err;
|
||||
|
|
@ -294,12 +291,14 @@ void ImageLoaderBMP::get_recognized_extensions(List<String> *p_extensions) const
|
|||
}
|
||||
|
||||
static Ref<Image> _bmp_mem_loader_func(const uint8_t *p_bmp, int p_size) {
|
||||
FileAccessMemory memfile;
|
||||
Error open_memfile_error = memfile.open_custom(p_bmp, p_size);
|
||||
Ref<FileAccessMemory> memfile;
|
||||
memfile.instantiate();
|
||||
Error open_memfile_error = memfile->open_custom(p_bmp, p_size);
|
||||
ERR_FAIL_COND_V_MSG(open_memfile_error, Ref<Image>(), "Could not create memfile for BMP image buffer.");
|
||||
|
||||
Ref<Image> img;
|
||||
img.instantiate();
|
||||
Error load_error = ImageLoaderBMP().load_image(img, &memfile, false, 1.0f);
|
||||
Error load_error = ImageLoaderBMP().load_image(img, memfile, false, 1.0f);
|
||||
ERR_FAIL_COND_V_MSG(load_error, Ref<Image>(), "Failed to load BMP image.");
|
||||
return img;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,8 +83,7 @@ protected:
|
|||
const bmp_header_s &p_header);
|
||||
|
||||
public:
|
||||
virtual Error load_image(Ref<Image> p_image, FileAccess *f,
|
||||
bool p_force_linear, float p_scale);
|
||||
virtual Error load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale);
|
||||
virtual void get_recognized_extensions(List<String> *p_extensions) const;
|
||||
ImageLoaderBMP();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -100,12 +100,12 @@ RES ResourceFormatDDS::load(const String &p_path, const String &p_original_path,
|
|||
}
|
||||
|
||||
Error err;
|
||||
FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
if (!f) {
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
if (f.is_null()) {
|
||||
return RES();
|
||||
}
|
||||
|
||||
FileAccessRef fref(f);
|
||||
Ref<FileAccess> fref(f);
|
||||
if (r_error) {
|
||||
*r_error = ERR_FILE_CORRUPT;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1030,7 +1030,7 @@ Error GDScript::load_byte_code(const String &p_path) {
|
|||
Error GDScript::load_source_code(const String &p_path) {
|
||||
Vector<uint8_t> sourcef;
|
||||
Error err;
|
||||
FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
if (err) {
|
||||
ERR_FAIL_COND_V(err, err);
|
||||
}
|
||||
|
|
@ -1039,8 +1039,6 @@ Error GDScript::load_source_code(const String &p_path) {
|
|||
sourcef.resize(len + 1);
|
||||
uint8_t *w = sourcef.ptrw();
|
||||
uint64_t r = f->get_buffer(w, len);
|
||||
f->close();
|
||||
memdelete(f);
|
||||
ERR_FAIL_COND_V(r != len, ERR_CANT_OPEN);
|
||||
w[len] = 0;
|
||||
|
||||
|
|
@ -2099,7 +2097,7 @@ bool GDScriptLanguage::handles_global_class_type(const String &p_type) const {
|
|||
String GDScriptLanguage::get_global_class_name(const String &p_path, String *r_base_type, String *r_icon_path) const {
|
||||
Vector<uint8_t> sourcef;
|
||||
Error err;
|
||||
FileAccessRef f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
if (err) {
|
||||
return String();
|
||||
}
|
||||
|
|
@ -2133,8 +2131,8 @@ String GDScriptLanguage::get_global_class_name(const String &p_path, String *r_b
|
|||
} else {
|
||||
Vector<StringName> extend_classes = subclass->extends;
|
||||
|
||||
FileAccessRef subfile = FileAccess::open(subclass->extends_path, FileAccess::READ);
|
||||
if (!subfile) {
|
||||
Ref<FileAccess> subfile = FileAccess::open(subclass->extends_path, FileAccess::READ);
|
||||
if (subfile.is_null()) {
|
||||
break;
|
||||
}
|
||||
String subsource = subfile->get_as_utf8_string();
|
||||
|
|
@ -2331,8 +2329,8 @@ String ResourceFormatLoaderGDScript::get_resource_type(const String &p_path) con
|
|||
}
|
||||
|
||||
void ResourceFormatLoaderGDScript::get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types) {
|
||||
FileAccessRef file = FileAccess::open(p_path, FileAccess::READ);
|
||||
ERR_FAIL_COND_MSG(!file, "Cannot open file '" + p_path + "'.");
|
||||
Ref<FileAccess> file = FileAccess::open(p_path, FileAccess::READ);
|
||||
ERR_FAIL_COND_MSG(file.is_null(), "Cannot open file '" + p_path + "'.");
|
||||
|
||||
String source = file->get_as_utf8_string();
|
||||
if (source.is_empty()) {
|
||||
|
|
@ -2356,17 +2354,14 @@ Error ResourceFormatSaverGDScript::save(const String &p_path, const RES &p_resou
|
|||
String source = sqscr->get_source_code();
|
||||
|
||||
Error err;
|
||||
FileAccess *file = FileAccess::open(p_path, FileAccess::WRITE, &err);
|
||||
Ref<FileAccess> file = FileAccess::open(p_path, FileAccess::WRITE, &err);
|
||||
|
||||
ERR_FAIL_COND_V_MSG(err, err, "Cannot save GDScript file '" + p_path + "'.");
|
||||
|
||||
file->store_string(source);
|
||||
if (file->get_error() != OK && file->get_error() != ERR_FILE_EOF) {
|
||||
memdelete(file);
|
||||
return ERR_CANT_CREATE;
|
||||
}
|
||||
file->close();
|
||||
memdelete(file);
|
||||
|
||||
if (ScriptServer::is_reload_scripts_on_save_enabled()) {
|
||||
GDScriptLanguage::get_singleton()->reload_tool_script(p_resource, false);
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ Ref<GDScriptParserRef> GDScriptCache::get_parser(const String &p_path, GDScriptP
|
|||
String GDScriptCache::get_source_code(const String &p_path) {
|
||||
Vector<uint8_t> source_file;
|
||||
Error err;
|
||||
FileAccessRef f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
if (err) {
|
||||
ERR_FAIL_COND_V(err, "");
|
||||
}
|
||||
|
|
@ -153,7 +153,6 @@ String GDScriptCache::get_source_code(const String &p_path) {
|
|||
uint64_t len = f->get_length();
|
||||
source_file.resize(len + 1);
|
||||
uint64_t r = f->get_buffer(source_file.ptrw(), len);
|
||||
f->close();
|
||||
ERR_FAIL_COND_V(r != len, "");
|
||||
source_file.write[len] = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ void ExtendGDScriptParser::update_document_links(const String &p_code) {
|
|||
document_links.clear();
|
||||
|
||||
GDScriptTokenizer tokenizer;
|
||||
FileAccessRef fs = FileAccess::create(FileAccess::ACCESS_RESOURCES);
|
||||
Ref<FileAccess> fs = FileAccess::create(FileAccess::ACCESS_RESOURCES);
|
||||
tokenizer.set_source_code(p_code);
|
||||
while (true) {
|
||||
GDScriptTokenizer::Token token = tokenizer.scan();
|
||||
|
|
|
|||
|
|
@ -424,10 +424,6 @@ GDScriptTextDocument::GDScriptTextDocument() {
|
|||
file_checker = FileAccess::create(FileAccess::ACCESS_RESOURCES);
|
||||
}
|
||||
|
||||
GDScriptTextDocument::~GDScriptTextDocument() {
|
||||
memdelete(file_checker);
|
||||
}
|
||||
|
||||
void GDScriptTextDocument::sync_script_content(const String &p_path, const String &p_content) {
|
||||
String path = GDScriptLanguageProtocol::get_singleton()->get_workspace()->get_file_path(p_path);
|
||||
GDScriptLanguageProtocol::get_singleton()->get_workspace()->parse_script(path, p_content);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ class GDScriptTextDocument : public RefCounted {
|
|||
protected:
|
||||
static void _bind_methods();
|
||||
|
||||
FileAccess *file_checker = nullptr;
|
||||
Ref<FileAccess> file_checker;
|
||||
|
||||
void didOpen(const Variant &p_param);
|
||||
void didClose(const Variant &p_param);
|
||||
|
|
@ -75,7 +75,6 @@ public:
|
|||
void initialize();
|
||||
|
||||
GDScriptTextDocument();
|
||||
virtual ~GDScriptTextDocument();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ void GDScriptWorkspace::reload_all_workspace_scripts() {
|
|||
|
||||
void GDScriptWorkspace::list_script_files(const String &p_root_dir, List<String> &r_files) {
|
||||
Error err;
|
||||
DirAccessRef dir = DirAccess::open(p_root_dir, &err);
|
||||
Ref<DirAccess> dir = DirAccess::open(p_root_dir, &err);
|
||||
if (OK == err) {
|
||||
dir->list_dir_begin();
|
||||
String file_name = dir->get_next();
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ bool GDScriptTestRunner::generate_outputs() {
|
|||
|
||||
bool GDScriptTestRunner::make_tests_for_dir(const String &p_dir) {
|
||||
Error err = OK;
|
||||
DirAccessRef dir(DirAccess::open(p_dir, &err));
|
||||
Ref<DirAccess> dir(DirAccess::open(p_dir, &err));
|
||||
|
||||
if (err != OK) {
|
||||
return false;
|
||||
|
|
@ -254,7 +254,7 @@ bool GDScriptTestRunner::make_tests_for_dir(const String &p_dir) {
|
|||
#ifndef DEBUG_ENABLED
|
||||
// On release builds, skip tests marked as debug only.
|
||||
Error open_err = OK;
|
||||
FileAccessRef script_file(FileAccess::open(current_dir.plus_file(next), FileAccess::READ, &open_err));
|
||||
Ref<FileAccess> script_file(FileAccess::open(current_dir.plus_file(next), FileAccess::READ, &open_err));
|
||||
if (open_err != OK) {
|
||||
ERR_PRINT(vformat(R"(Couldn't open test file "%s".)", next));
|
||||
next = dir->get_next();
|
||||
|
|
@ -286,7 +286,7 @@ bool GDScriptTestRunner::make_tests_for_dir(const String &p_dir) {
|
|||
|
||||
bool GDScriptTestRunner::make_tests() {
|
||||
Error err = OK;
|
||||
DirAccessRef dir(DirAccess::open(source_dir, &err));
|
||||
Ref<DirAccess> dir(DirAccess::open(source_dir, &err));
|
||||
|
||||
ERR_FAIL_COND_V_MSG(err != OK, false, "Could not open specified test directory.");
|
||||
|
||||
|
|
@ -611,7 +611,7 @@ bool GDScriptTest::generate_output() {
|
|||
}
|
||||
|
||||
Error err = OK;
|
||||
FileAccessRef out_file = FileAccess::open(output_file, FileAccess::WRITE, &err);
|
||||
Ref<FileAccess> out_file = FileAccess::open(output_file, FileAccess::WRITE, &err);
|
||||
if (err != OK) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -620,7 +620,6 @@ bool GDScriptTest::generate_output() {
|
|||
output += "\n"; // Make sure to insert newline for CI static checks.
|
||||
|
||||
out_file->store_string(output);
|
||||
out_file->close();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -204,8 +204,8 @@ void test(TestType p_type) {
|
|||
return;
|
||||
}
|
||||
|
||||
FileAccessRef fa = FileAccess::open(test, FileAccess::READ);
|
||||
ERR_FAIL_COND_MSG(!fa, "Could not open file: " + test);
|
||||
Ref<FileAccess> fa = FileAccess::open(test, FileAccess::READ);
|
||||
ERR_FAIL_COND_MSG(fa.is_null(), "Could not open file: " + test);
|
||||
|
||||
// Initialize the language for the test routine.
|
||||
init_language(fa->get_path_absolute().get_base_dir());
|
||||
|
|
|
|||
|
|
@ -256,8 +256,8 @@ Error GLTFDocument::_serialize_scenes(Ref<GLTFState> state) {
|
|||
|
||||
Error GLTFDocument::_parse_json(const String &p_path, Ref<GLTFState> state) {
|
||||
Error err;
|
||||
FileAccessRef f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
if (!f) {
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
if (f.is_null()) {
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
@ -278,7 +278,7 @@ Error GLTFDocument::_parse_json(const String &p_path, Ref<GLTFState> state) {
|
|||
return OK;
|
||||
}
|
||||
|
||||
Error GLTFDocument::_parse_glb(FileAccess *f, Ref<GLTFState> state) {
|
||||
Error GLTFDocument::_parse_glb(Ref<FileAccess> f, Ref<GLTFState> state) {
|
||||
ERR_FAIL_NULL_V(f, ERR_INVALID_PARAMETER);
|
||||
ERR_FAIL_NULL_V(state, ERR_INVALID_PARAMETER);
|
||||
ERR_FAIL_COND_V(f->get_position() != 0, ERR_FILE_CANT_READ);
|
||||
|
|
@ -696,8 +696,8 @@ Error GLTFDocument::_encode_buffer_glb(Ref<GLTFState> state, const String &p_pat
|
|||
String filename = p_path.get_basename().get_file() + itos(i) + ".bin";
|
||||
String path = p_path.get_base_dir() + "/" + filename;
|
||||
Error err;
|
||||
FileAccessRef f = FileAccess::open(path, FileAccess::WRITE, &err);
|
||||
if (!f) {
|
||||
Ref<FileAccess> f = FileAccess::open(path, FileAccess::WRITE, &err);
|
||||
if (f.is_null()) {
|
||||
return err;
|
||||
}
|
||||
if (buffer_data.size() == 0) {
|
||||
|
|
@ -705,7 +705,6 @@ Error GLTFDocument::_encode_buffer_glb(Ref<GLTFState> state, const String &p_pat
|
|||
}
|
||||
f->create(FileAccess::ACCESS_RESOURCES);
|
||||
f->store_buffer(buffer_data.ptr(), buffer_data.size());
|
||||
f->close();
|
||||
gltf_buffer["uri"] = filename;
|
||||
gltf_buffer["byteLength"] = buffer_data.size();
|
||||
buffers.push_back(gltf_buffer);
|
||||
|
|
@ -729,8 +728,8 @@ Error GLTFDocument::_encode_buffer_bins(Ref<GLTFState> state, const String &p_pa
|
|||
String filename = p_path.get_basename().get_file() + itos(i) + ".bin";
|
||||
String path = p_path.get_base_dir() + "/" + filename;
|
||||
Error err;
|
||||
FileAccessRef f = FileAccess::open(path, FileAccess::WRITE, &err);
|
||||
if (!f) {
|
||||
Ref<FileAccess> f = FileAccess::open(path, FileAccess::WRITE, &err);
|
||||
if (f.is_null()) {
|
||||
return err;
|
||||
}
|
||||
if (buffer_data.size() == 0) {
|
||||
|
|
@ -738,7 +737,6 @@ Error GLTFDocument::_encode_buffer_bins(Ref<GLTFState> state, const String &p_pa
|
|||
}
|
||||
f->create(FileAccess::ACCESS_RESOURCES);
|
||||
f->store_buffer(buffer_data.ptr(), buffer_data.size());
|
||||
f->close();
|
||||
gltf_buffer["uri"] = filename;
|
||||
gltf_buffer["byteLength"] = buffer_data.size();
|
||||
buffers.push_back(gltf_buffer);
|
||||
|
|
@ -3021,7 +3019,7 @@ Error GLTFDocument::_serialize_images(Ref<GLTFState> state, const String &p_path
|
|||
String texture_dir = "textures";
|
||||
String path = p_path.get_base_dir();
|
||||
String new_texture_dir = path + "/" + texture_dir;
|
||||
DirAccessRef da = DirAccess::open(path);
|
||||
Ref<DirAccess> da = DirAccess::open(path);
|
||||
if (!da->dir_exists(new_texture_dir)) {
|
||||
da->make_dir(new_texture_dir);
|
||||
}
|
||||
|
|
@ -6588,9 +6586,9 @@ void GLTFDocument::_convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
|
|||
}
|
||||
}
|
||||
|
||||
Error GLTFDocument::_parse(Ref<GLTFState> state, String p_path, FileAccess *f, int p_bake_fps) {
|
||||
Error GLTFDocument::_parse(Ref<GLTFState> state, String p_path, Ref<FileAccess> f, int p_bake_fps) {
|
||||
Error err;
|
||||
if (!f) {
|
||||
if (f.is_null()) {
|
||||
return FAILED;
|
||||
}
|
||||
f->seek(0);
|
||||
|
|
@ -6614,7 +6612,6 @@ Error GLTFDocument::_parse(Ref<GLTFState> state, String p_path, FileAccess *f, i
|
|||
ERR_FAIL_COND_V(err != OK, ERR_PARSE_ERROR);
|
||||
state->json = json.get_data();
|
||||
}
|
||||
f->close();
|
||||
|
||||
if (!state->json.has("asset")) {
|
||||
return ERR_PARSE_ERROR;
|
||||
|
|
@ -6703,8 +6700,8 @@ Error GLTFDocument::_serialize_file(Ref<GLTFState> state, const String p_path) {
|
|||
if (p_path.to_lower().ends_with("glb")) {
|
||||
err = _encode_buffer_glb(state, p_path);
|
||||
ERR_FAIL_COND_V(err != OK, err);
|
||||
FileAccessRef f = FileAccess::open(p_path, FileAccess::WRITE, &err);
|
||||
ERR_FAIL_COND_V(!f, FAILED);
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::WRITE, &err);
|
||||
ERR_FAIL_COND_V(f.is_null(), FAILED);
|
||||
|
||||
String json = Variant(state->json).to_json_string();
|
||||
|
||||
|
|
@ -6741,18 +6738,15 @@ Error GLTFDocument::_serialize_file(Ref<GLTFState> state, const String p_path) {
|
|||
for (uint32_t pad_i = binary_data_length; pad_i < binary_chunk_length; pad_i++) {
|
||||
f->store_8(0);
|
||||
}
|
||||
|
||||
f->close();
|
||||
} else {
|
||||
err = _encode_buffer_bins(state, p_path);
|
||||
ERR_FAIL_COND_V(err != OK, err);
|
||||
FileAccessRef f = FileAccess::open(p_path, FileAccess::WRITE, &err);
|
||||
ERR_FAIL_COND_V(!f, FAILED);
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::WRITE, &err);
|
||||
ERR_FAIL_COND_V(f.is_null(), FAILED);
|
||||
|
||||
f->create(FileAccess::ACCESS_RESOURCES);
|
||||
String json = Variant(state->json).to_json_string();
|
||||
f->store_string(json);
|
||||
f->close();
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
|
@ -6927,9 +6921,10 @@ Error GLTFDocument::append_from_buffer(PackedByteArray p_bytes, String p_base_pa
|
|||
ERR_FAIL_COND_V(state.is_null(), FAILED);
|
||||
// TODO Add missing texture and missing .bin file paths to r_missing_deps 2021-09-10 fire
|
||||
Error err = FAILED;
|
||||
state->use_named_skin_binds =
|
||||
p_flags & GLTF_IMPORT_USE_NAMED_SKIN_BINDS;
|
||||
FileAccessMemory *file_access = memnew(FileAccessMemory);
|
||||
state->use_named_skin_binds = p_flags & GLTF_IMPORT_USE_NAMED_SKIN_BINDS;
|
||||
|
||||
Ref<FileAccessMemory> file_access;
|
||||
file_access.instantiate();
|
||||
file_access->open_custom(p_bytes.ptr(), p_bytes.size());
|
||||
err = _parse(state, p_base_path.get_base_dir(), file_access, p_bake_fps);
|
||||
ERR_FAIL_COND_V(err != OK, FAILED);
|
||||
|
|
@ -7032,7 +7027,7 @@ Error GLTFDocument::append_from_file(String p_path, Ref<GLTFState> r_state, uint
|
|||
r_state->filename = p_path.get_file().get_basename();
|
||||
r_state->use_named_skin_binds = p_flags & GLTF_IMPORT_USE_NAMED_SKIN_BINDS;
|
||||
Error err;
|
||||
FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
ERR_FAIL_COND_V(err != OK, ERR_FILE_CANT_OPEN);
|
||||
ERR_FAIL_NULL_V(f, ERR_FILE_CANT_OPEN);
|
||||
String base_path = p_base_path;
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@ private:
|
|||
Ref<Texture2D> _get_texture(Ref<GLTFState> state,
|
||||
const GLTFTextureIndex p_texture);
|
||||
Error _parse_json(const String &p_path, Ref<GLTFState> state);
|
||||
Error _parse_glb(FileAccess *f, Ref<GLTFState> state);
|
||||
Error _parse_glb(Ref<FileAccess> f, Ref<GLTFState> state);
|
||||
void _compute_node_heights(Ref<GLTFState> state);
|
||||
Error _parse_buffers(Ref<GLTFState> state, const String &p_base_path);
|
||||
Error _parse_buffer_views(Ref<GLTFState> state);
|
||||
|
|
@ -457,7 +457,7 @@ public:
|
|||
void _convert_animation(Ref<GLTFState> state, AnimationPlayer *ap,
|
||||
String p_animation_track_name);
|
||||
Error _serialize(Ref<GLTFState> state, const String &p_path);
|
||||
Error _parse(Ref<GLTFState> state, String p_path, FileAccess *f, int p_bake_fps);
|
||||
Error _parse(Ref<GLTFState> state, String p_path, Ref<FileAccess> f, int p_bake_fps);
|
||||
};
|
||||
|
||||
#endif // GLTF_DOCUMENT_H
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ static void _editor_init() {
|
|||
EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING,
|
||||
"filesystem/import/fbx/fbx2gltf_path", PROPERTY_HINT_GLOBAL_FILE));
|
||||
if (fbx_enabled) {
|
||||
DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
if (fbx2gltf_path.is_empty()) {
|
||||
WARN_PRINT("FBX file import is enabled, but no FBX2glTF path is configured. FBX files will not be imported.");
|
||||
} else if (!da->file_exists(fbx2gltf_path)) {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
#include "core/os/os.h"
|
||||
#include "core/string/print_string.h"
|
||||
|
||||
Error ImageLoaderHDR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
|
||||
Error ImageLoaderHDR::load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale) {
|
||||
String header = f->get_token();
|
||||
|
||||
ERR_FAIL_COND_V_MSG(header != "#?RADIANCE" && header != "#?RGBE", ERR_FILE_UNRECOGNIZED, "Unsupported header information in HDR: " + header + ".");
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
class ImageLoaderHDR : public ImageFormatLoader {
|
||||
public:
|
||||
virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
|
||||
virtual Error load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale);
|
||||
virtual void get_recognized_extensions(List<String> *p_extensions) const;
|
||||
ImageLoaderHDR();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ Error jpeg_load_image_from_buffer(Image *p_image, const uint8_t *p_buffer, int p
|
|||
return OK;
|
||||
}
|
||||
|
||||
Error ImageLoaderJPG::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
|
||||
Error ImageLoaderJPG::load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale) {
|
||||
Vector<uint8_t> src_image;
|
||||
uint64_t src_image_len = f->get_length();
|
||||
ERR_FAIL_COND_V(src_image_len == 0, ERR_FILE_CORRUPT);
|
||||
|
|
@ -113,8 +113,6 @@ Error ImageLoaderJPG::load_image(Ref<Image> p_image, FileAccess *f, bool p_force
|
|||
|
||||
f->get_buffer(&w[0], src_image_len);
|
||||
|
||||
f->close();
|
||||
|
||||
Error err = jpeg_load_image_from_buffer(p_image.ptr(), w, src_image_len);
|
||||
|
||||
return err;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
class ImageLoaderJPG : public ImageFormatLoader {
|
||||
public:
|
||||
virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
|
||||
virtual Error load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale);
|
||||
virtual void get_recognized_extensions(List<String> *p_extensions) const;
|
||||
ImageLoaderJPG();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -55,14 +55,13 @@ Error CryptoKeyMbedTLS::load(String p_path, bool p_public_only) {
|
|||
ERR_FAIL_COND_V_MSG(locks, ERR_ALREADY_IN_USE, "Key is in use");
|
||||
|
||||
PackedByteArray out;
|
||||
FileAccess *f = FileAccess::open(p_path, FileAccess::READ);
|
||||
ERR_FAIL_COND_V_MSG(!f, ERR_INVALID_PARAMETER, "Cannot open CryptoKeyMbedTLS file '" + p_path + "'.");
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ);
|
||||
ERR_FAIL_COND_V_MSG(f.is_null(), ERR_INVALID_PARAMETER, "Cannot open CryptoKeyMbedTLS file '" + p_path + "'.");
|
||||
|
||||
uint64_t flen = f->get_length();
|
||||
out.resize(flen + 1);
|
||||
f->get_buffer(out.ptrw(), flen);
|
||||
out.write[flen] = 0; // string terminator
|
||||
memdelete(f);
|
||||
|
||||
int ret = 0;
|
||||
if (p_public_only) {
|
||||
|
|
@ -79,8 +78,8 @@ Error CryptoKeyMbedTLS::load(String p_path, bool p_public_only) {
|
|||
}
|
||||
|
||||
Error CryptoKeyMbedTLS::save(String p_path, bool p_public_only) {
|
||||
FileAccess *f = FileAccess::open(p_path, FileAccess::WRITE);
|
||||
ERR_FAIL_COND_V_MSG(!f, ERR_INVALID_PARAMETER, "Cannot save CryptoKeyMbedTLS file '" + p_path + "'.");
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::WRITE);
|
||||
ERR_FAIL_COND_V_MSG(f.is_null(), ERR_INVALID_PARAMETER, "Cannot save CryptoKeyMbedTLS file '" + p_path + "'.");
|
||||
|
||||
unsigned char w[16000];
|
||||
memset(w, 0, sizeof(w));
|
||||
|
|
@ -92,14 +91,12 @@ Error CryptoKeyMbedTLS::save(String p_path, bool p_public_only) {
|
|||
ret = mbedtls_pk_write_key_pem(&pkey, w, sizeof(w));
|
||||
}
|
||||
if (ret != 0) {
|
||||
memdelete(f);
|
||||
mbedtls_platform_zeroize(w, sizeof(w)); // Zeroize anything we might have written.
|
||||
ERR_FAIL_V_MSG(FAILED, "Error writing key '" + itos(ret) + "'.");
|
||||
}
|
||||
|
||||
size_t len = strlen((char *)w);
|
||||
f->store_buffer(w, len);
|
||||
memdelete(f);
|
||||
mbedtls_platform_zeroize(w, sizeof(w)); // Zeroize temporary buffer.
|
||||
return OK;
|
||||
}
|
||||
|
|
@ -143,14 +140,13 @@ Error X509CertificateMbedTLS::load(String p_path) {
|
|||
ERR_FAIL_COND_V_MSG(locks, ERR_ALREADY_IN_USE, "Certificate is in use");
|
||||
|
||||
PackedByteArray out;
|
||||
FileAccess *f = FileAccess::open(p_path, FileAccess::READ);
|
||||
ERR_FAIL_COND_V_MSG(!f, ERR_INVALID_PARAMETER, "Cannot open X509CertificateMbedTLS file '" + p_path + "'.");
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ);
|
||||
ERR_FAIL_COND_V_MSG(f.is_null(), ERR_INVALID_PARAMETER, "Cannot open X509CertificateMbedTLS file '" + p_path + "'.");
|
||||
|
||||
uint64_t flen = f->get_length();
|
||||
out.resize(flen + 1);
|
||||
f->get_buffer(out.ptrw(), flen);
|
||||
out.write[flen] = 0; // string terminator
|
||||
memdelete(f);
|
||||
|
||||
int ret = mbedtls_x509_crt_parse(&cert, out.ptr(), out.size());
|
||||
ERR_FAIL_COND_V_MSG(ret, FAILED, "Error parsing some certificates: " + itos(ret));
|
||||
|
|
@ -167,8 +163,8 @@ Error X509CertificateMbedTLS::load_from_memory(const uint8_t *p_buffer, int p_le
|
|||
}
|
||||
|
||||
Error X509CertificateMbedTLS::save(String p_path) {
|
||||
FileAccess *f = FileAccess::open(p_path, FileAccess::WRITE);
|
||||
ERR_FAIL_COND_V_MSG(!f, ERR_INVALID_PARAMETER, "Cannot save X509CertificateMbedTLS file '" + p_path + "'.");
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::WRITE);
|
||||
ERR_FAIL_COND_V_MSG(f.is_null(), ERR_INVALID_PARAMETER, "Cannot save X509CertificateMbedTLS file '" + p_path + "'.");
|
||||
|
||||
mbedtls_x509_crt *crt = &cert;
|
||||
while (crt) {
|
||||
|
|
@ -176,14 +172,12 @@ Error X509CertificateMbedTLS::save(String p_path) {
|
|||
size_t wrote = 0;
|
||||
int ret = mbedtls_pem_write_buffer(PEM_BEGIN_CRT, PEM_END_CRT, cert.raw.p, cert.raw.len, w, sizeof(w), &wrote);
|
||||
if (ret != 0 || wrote == 0) {
|
||||
memdelete(f);
|
||||
ERR_FAIL_V_MSG(FAILED, "Error writing certificate '" + itos(ret) + "'.");
|
||||
}
|
||||
|
||||
f->store_buffer(w, wrote - 1); // don't write the string terminator
|
||||
crt = crt->next;
|
||||
}
|
||||
memdelete(f);
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,9 +75,8 @@ Error ResourceImporterMP3::import(const String &p_source_file, const String &p_s
|
|||
bool loop = p_options["loop"];
|
||||
float loop_offset = p_options["loop_offset"];
|
||||
|
||||
FileAccess *f = FileAccess::open(p_source_file, FileAccess::READ);
|
||||
|
||||
ERR_FAIL_COND_V(!f, ERR_CANT_OPEN);
|
||||
Ref<FileAccess> f = FileAccess::open(p_source_file, FileAccess::READ);
|
||||
ERR_FAIL_COND_V(f.is_null(), ERR_CANT_OPEN);
|
||||
|
||||
uint64_t len = f->get_length();
|
||||
|
||||
|
|
@ -87,8 +86,6 @@ Error ResourceImporterMP3::import(const String &p_source_file, const String &p_s
|
|||
|
||||
f->get_buffer(w, len);
|
||||
|
||||
memdelete(f);
|
||||
|
||||
Ref<AudioStreamMP3> mp3_stream;
|
||||
mp3_stream.instantiate();
|
||||
|
||||
|
|
|
|||
|
|
@ -238,11 +238,10 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
|
|||
}
|
||||
}
|
||||
|
||||
FileAccessRef f = FileAccess::open(p_output_file, FileAccess::WRITE);
|
||||
ERR_FAIL_COND_MSG(!f, "Cannot open file '" + p_output_file + "'.");
|
||||
Ref<FileAccess> f = FileAccess::open(p_output_file, FileAccess::WRITE);
|
||||
ERR_FAIL_COND_MSG(f.is_null(), "Cannot open file '" + p_output_file + "'.");
|
||||
JSON json;
|
||||
f->store_string(json.stringify(classes_dict, "\t"));
|
||||
f->close();
|
||||
|
||||
print_line(String() + "ClassDB API JSON written to: " + ProjectSettings::get_singleton()->globalize_path(p_output_file));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3642,19 +3642,15 @@ Error ResourceFormatSaverCSharpScript::save(const String &p_path, const RES &p_r
|
|||
#endif
|
||||
|
||||
Error err;
|
||||
FileAccess *file = FileAccess::open(p_path, FileAccess::WRITE, &err);
|
||||
Ref<FileAccess> file = FileAccess::open(p_path, FileAccess::WRITE, &err);
|
||||
ERR_FAIL_COND_V_MSG(err != OK, err, "Cannot save C# script file '" + p_path + "'.");
|
||||
|
||||
file->store_string(source);
|
||||
|
||||
if (file->get_error() != OK && file->get_error() != ERR_FILE_EOF) {
|
||||
memdelete(file);
|
||||
return ERR_CANT_CREATE;
|
||||
}
|
||||
|
||||
file->close();
|
||||
memdelete(file);
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
if (ScriptServer::is_reload_scripts_on_save_enabled()) {
|
||||
CSharpLanguage::get_singleton()->reload_tool_script(p_resource, false);
|
||||
|
|
|
|||
|
|
@ -1035,8 +1035,8 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) {
|
|||
Error BindingsGenerator::generate_cs_core_project(const String &p_proj_dir) {
|
||||
ERR_FAIL_COND_V(!initialized, ERR_UNCONFIGURED);
|
||||
|
||||
DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V(!da, ERR_CANT_CREATE);
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V(da.is_null(), ERR_CANT_CREATE);
|
||||
|
||||
if (!DirAccess::exists(p_proj_dir)) {
|
||||
Error err = da->make_dir_recursive(p_proj_dir);
|
||||
|
|
@ -1170,8 +1170,8 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_proj_dir) {
|
|||
Error BindingsGenerator::generate_cs_editor_project(const String &p_proj_dir) {
|
||||
ERR_FAIL_COND_V(!initialized, ERR_UNCONFIGURED);
|
||||
|
||||
DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V(!da, ERR_CANT_CREATE);
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V(da.is_null(), ERR_CANT_CREATE);
|
||||
|
||||
if (!DirAccess::exists(p_proj_dir)) {
|
||||
Error err = da->make_dir_recursive(p_proj_dir);
|
||||
|
|
@ -1280,8 +1280,8 @@ Error BindingsGenerator::generate_cs_api(const String &p_output_dir) {
|
|||
|
||||
String output_dir = path::abspath(path::realpath(p_output_dir));
|
||||
|
||||
DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V(!da, ERR_CANT_CREATE);
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V(da.is_null(), ERR_CANT_CREATE);
|
||||
|
||||
if (!DirAccess::exists(output_dir)) {
|
||||
Error err = da->make_dir_recursive(output_dir);
|
||||
|
|
@ -2255,12 +2255,10 @@ uint32_t BindingsGenerator::get_version() {
|
|||
}
|
||||
|
||||
Error BindingsGenerator::_save_file(const String &p_path, const StringBuilder &p_content) {
|
||||
FileAccessRef file = FileAccess::open(p_path, FileAccess::WRITE);
|
||||
|
||||
ERR_FAIL_COND_V_MSG(!file, ERR_FILE_CANT_WRITE, "Cannot open file: '" + p_path + "'.");
|
||||
Ref<FileAccess> file = FileAccess::open(p_path, FileAccess::WRITE);
|
||||
ERR_FAIL_COND_V_MSG(file.is_null(), ERR_FILE_CANT_WRITE, "Cannot open file: '" + p_path + "'.");
|
||||
|
||||
file->store_string(p_content.as_string());
|
||||
file->close();
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr
|
|||
}
|
||||
} break;
|
||||
case CompletionKind::SCENE_PATHS: {
|
||||
DirAccessRef dir_access = DirAccess::create(DirAccess::ACCESS_RESOURCES);
|
||||
Ref<DirAccess> dir_access = DirAccess::create(DirAccess::ACCESS_RESOURCES);
|
||||
List<String> directories;
|
||||
directories.push_back(dir_access->get_current_dir());
|
||||
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ String _get_mono_user_dir() {
|
|||
exe_dir = exe_dir.plus_file("../../..").simplify_path();
|
||||
}
|
||||
|
||||
DirAccessRef d = DirAccess::create_for_path(exe_dir);
|
||||
Ref<DirAccess> d = DirAccess::create_for_path(exe_dir);
|
||||
|
||||
if (d->file_exists("._sc_") || d->file_exists("_sc_")) {
|
||||
// contain yourself
|
||||
|
|
|
|||
|
|
@ -643,7 +643,7 @@ bool GDMono::copy_prebuilt_api_assembly(ApiAssemblyInfo::Type p_api_type, const
|
|||
|
||||
// Create destination directory if needed
|
||||
if (!DirAccess::exists(dst_dir)) {
|
||||
DirAccessRef da = DirAccess::create_for_path(dst_dir);
|
||||
Ref<DirAccess> da = DirAccess::create_for_path(dst_dir);
|
||||
Error err = da->make_dir_recursive(dst_dir);
|
||||
|
||||
if (err != OK) {
|
||||
|
|
@ -652,7 +652,7 @@ bool GDMono::copy_prebuilt_api_assembly(ApiAssemblyInfo::Type p_api_type, const
|
|||
}
|
||||
}
|
||||
|
||||
DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
|
||||
String xml_file = assembly_name + ".xml";
|
||||
if (da->copy(src_dir.plus_file(xml_file), dst_dir.plus_file(xml_file)) != OK) {
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ static String make_text(const char *log_domain, const char *log_level, const cha
|
|||
}
|
||||
|
||||
void GDMonoLog::mono_log_callback(const char *log_domain, const char *log_level, const char *message, mono_bool fatal, void *) {
|
||||
FileAccess *f = GDMonoLog::get_singleton()->log_file;
|
||||
Ref<FileAccess> f = GDMonoLog::get_singleton()->log_file;
|
||||
|
||||
if (GDMonoLog::get_singleton()->log_level_id >= get_log_level_id(log_level)) {
|
||||
String text = make_text(log_domain, log_level, message);
|
||||
|
|
@ -93,7 +93,6 @@ void GDMonoLog::mono_log_callback(const char *log_domain, const char *log_level,
|
|||
// Make sure to flush before aborting
|
||||
f->flush();
|
||||
f->close();
|
||||
memdelete(f);
|
||||
|
||||
abort();
|
||||
}
|
||||
|
|
@ -101,8 +100,8 @@ void GDMonoLog::mono_log_callback(const char *log_domain, const char *log_level,
|
|||
|
||||
bool GDMonoLog::_try_create_logs_dir(const String &p_logs_dir) {
|
||||
if (!DirAccess::exists(p_logs_dir)) {
|
||||
DirAccessRef diraccess = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V(!diraccess, false);
|
||||
Ref<DirAccess> diraccess = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND_V(diraccess.is_null(), false);
|
||||
Error logs_mkdir_err = diraccess->make_dir_recursive(p_logs_dir);
|
||||
ERR_FAIL_COND_V_MSG(logs_mkdir_err != OK, false, "Failed to create mono logs directory.");
|
||||
}
|
||||
|
|
@ -113,8 +112,8 @@ bool GDMonoLog::_try_create_logs_dir(const String &p_logs_dir) {
|
|||
void GDMonoLog::_delete_old_log_files(const String &p_logs_dir) {
|
||||
static const uint64_t MAX_SECS = 5 * 86400; // 5 days
|
||||
|
||||
DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND(!da);
|
||||
Ref<DirAccess> da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
|
||||
ERR_FAIL_COND(da.is_null());
|
||||
|
||||
Error err = da->change_dir(p_logs_dir);
|
||||
ERR_FAIL_COND_MSG(err != OK, "Cannot change directory to '" + p_logs_dir + "'.");
|
||||
|
|
@ -170,7 +169,7 @@ void GDMonoLog::initialize() {
|
|||
log_file_path = logs_dir.plus_file(log_file_name);
|
||||
|
||||
log_file = FileAccess::open(log_file_path, FileAccess::WRITE);
|
||||
if (!log_file) {
|
||||
if (log_file.is_null()) {
|
||||
ERR_PRINT("Mono: Cannot create log file at: " + log_file_path);
|
||||
}
|
||||
}
|
||||
|
|
@ -178,7 +177,7 @@ void GDMonoLog::initialize() {
|
|||
mono_trace_set_level_string(log_level.get_data());
|
||||
log_level_id = get_log_level_id(log_level.get_data());
|
||||
|
||||
if (log_file) {
|
||||
if (log_file.is_valid()) {
|
||||
OS::get_singleton()->print("Mono: Log file is: '%s'\n", log_file_path.utf8().get_data());
|
||||
mono_trace_set_log_handler(mono_log_callback, this);
|
||||
} else {
|
||||
|
|
@ -192,11 +191,6 @@ GDMonoLog::GDMonoLog() {
|
|||
|
||||
GDMonoLog::~GDMonoLog() {
|
||||
singleton = nullptr;
|
||||
|
||||
if (log_file) {
|
||||
log_file->close();
|
||||
memdelete(log_file);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class GDMonoLog {
|
|||
#ifdef GD_MONO_LOG_ENABLED
|
||||
int log_level_id = -1;
|
||||
|
||||
FileAccess *log_file = nullptr;
|
||||
Ref<FileAccess> log_file;
|
||||
String log_file_path;
|
||||
|
||||
bool _try_create_logs_dir(const String &p_logs_dir);
|
||||
|
|
|
|||
|
|
@ -167,15 +167,13 @@ String escape_csharp_keyword(const String &p_name) {
|
|||
Error read_all_file_utf8(const String &p_path, String &r_content) {
|
||||
Vector<uint8_t> sourcef;
|
||||
Error err;
|
||||
FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ, &err);
|
||||
ERR_FAIL_COND_V_MSG(err != OK, err, "Cannot open file '" + p_path + "'.");
|
||||
|
||||
uint64_t len = f->get_length();
|
||||
sourcef.resize(len + 1);
|
||||
uint8_t *w = sourcef.ptrw();
|
||||
uint64_t r = f->get_buffer(w, len);
|
||||
f->close();
|
||||
memdelete(f);
|
||||
ERR_FAIL_COND_V(r != len, ERR_CANT_OPEN);
|
||||
w[len] = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ void ImageLoaderSVG::get_recognized_extensions(List<String> *p_extensions) const
|
|||
p_extensions->push_back("svg");
|
||||
}
|
||||
|
||||
Error ImageLoaderSVG::load_image(Ref<Image> p_image, FileAccess *p_fileaccess, bool p_force_linear, float p_scale) {
|
||||
Error ImageLoaderSVG::load_image(Ref<Image> p_image, Ref<FileAccess> p_fileaccess, bool p_force_linear, float p_scale) {
|
||||
String svg = p_fileaccess->get_as_utf8_string();
|
||||
create_image_from_string(p_image, svg, p_scale, false, false);
|
||||
ERR_FAIL_COND_V(p_image->is_empty(), FAILED);
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public:
|
|||
void set_replace_colors(Dictionary p_replace_colors) { replace_colors = p_replace_colors; }
|
||||
void create_image_from_string(Ref<Image> p_image, String p_string, float p_scale, bool p_upsample, bool p_convert_color);
|
||||
|
||||
virtual Error load_image(Ref<Image> p_image, FileAccess *p_fileaccess, bool p_force_linear, float p_scale) override;
|
||||
virtual Error load_image(Ref<Image> p_image, Ref<FileAccess> p_fileaccess, bool p_force_linear, float p_scale) override;
|
||||
virtual void get_recognized_extensions(List<String> *p_extensions) const override;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -410,7 +410,6 @@ bool TextServerAdvanced::load_support_data(const String &p_filename) {
|
|||
}
|
||||
uint64_t len = f->get_length();
|
||||
PackedByteArray icu_data = f->get_buffer(len);
|
||||
f->close();
|
||||
|
||||
UErrorCode err = U_ZERO_ERROR;
|
||||
udata_setCommonData(icu_data.ptr(), &err);
|
||||
|
|
@ -461,9 +460,8 @@ bool TextServerAdvanced::save_support_data(const String &p_filename) const {
|
|||
icu_data.resize(U_ICUDATA_SIZE);
|
||||
memcpy(icu_data.ptrw(), U_ICUDATA_ENTRY_POINT, U_ICUDATA_SIZE);
|
||||
f->store_buffer(icu_data);
|
||||
f->close();
|
||||
return true;
|
||||
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -230,7 +230,7 @@ Error ImageLoaderTGA::convert_to_image(Ref<Image> p_image, const uint8_t *p_buff
|
|||
return OK;
|
||||
}
|
||||
|
||||
Error ImageLoaderTGA::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
|
||||
Error ImageLoaderTGA::load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale) {
|
||||
Vector<uint8_t> src_image;
|
||||
uint64_t src_image_len = f->get_length();
|
||||
ERR_FAIL_COND_V(src_image_len == 0, ERR_FILE_CORRUPT);
|
||||
|
|
@ -330,7 +330,6 @@ Error ImageLoaderTGA::load_image(Ref<Image> p_image, FileAccess *f, bool p_force
|
|||
}
|
||||
}
|
||||
|
||||
f->close();
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
@ -339,12 +338,14 @@ void ImageLoaderTGA::get_recognized_extensions(List<String> *p_extensions) const
|
|||
}
|
||||
|
||||
static Ref<Image> _tga_mem_loader_func(const uint8_t *p_tga, int p_size) {
|
||||
FileAccessMemory memfile;
|
||||
Error open_memfile_error = memfile.open_custom(p_tga, p_size);
|
||||
Ref<FileAccessMemory> memfile;
|
||||
memfile.instantiate();
|
||||
Error open_memfile_error = memfile->open_custom(p_tga, p_size);
|
||||
ERR_FAIL_COND_V_MSG(open_memfile_error, Ref<Image>(), "Could not create memfile for TGA image buffer.");
|
||||
|
||||
Ref<Image> img;
|
||||
img.instantiate();
|
||||
Error load_error = ImageLoaderTGA().load_image(img, &memfile, false, 1.0f);
|
||||
Error load_error = ImageLoaderTGA().load_image(img, memfile, false, 1.0f);
|
||||
ERR_FAIL_COND_V_MSG(load_error, Ref<Image>(), "Failed to load TGA image.");
|
||||
return img;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class ImageLoaderTGA : public ImageFormatLoader {
|
|||
static Error convert_to_image(Ref<Image> p_image, const uint8_t *p_buffer, const tga_header_s &p_header, const uint8_t *p_palette, const bool p_is_monochrome, size_t p_input_size);
|
||||
|
||||
public:
|
||||
virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
|
||||
virtual Error load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale);
|
||||
virtual void get_recognized_extensions(List<String> *p_extensions) const;
|
||||
ImageLoaderTGA();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ void VideoStreamPlaybackTheora::video_write() {
|
|||
}
|
||||
|
||||
void VideoStreamPlaybackTheora::clear() {
|
||||
if (!file) {
|
||||
if (file.is_null()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -152,10 +152,7 @@ void VideoStreamPlaybackTheora::clear() {
|
|||
theora_eos = false;
|
||||
vorbis_eos = false;
|
||||
|
||||
if (file) {
|
||||
memdelete(file);
|
||||
}
|
||||
file = nullptr;
|
||||
file = Ref<FileAccess>();
|
||||
playing = false;
|
||||
};
|
||||
|
||||
|
|
@ -165,11 +162,8 @@ void VideoStreamPlaybackTheora::set_file(const String &p_file) {
|
|||
th_setup_info *ts = nullptr;
|
||||
|
||||
file_name = p_file;
|
||||
if (file) {
|
||||
memdelete(file);
|
||||
}
|
||||
file = FileAccess::open(p_file, FileAccess::READ);
|
||||
ERR_FAIL_COND_MSG(!file, "Cannot open file '" + p_file + "'.");
|
||||
ERR_FAIL_COND_MSG(file.is_null(), "Cannot open file '" + p_file + "'.");
|
||||
|
||||
#ifdef THEORA_USE_THREAD_STREAMING
|
||||
thread_exit = false;
|
||||
|
|
@ -375,7 +369,7 @@ Ref<Texture2D> VideoStreamPlaybackTheora::get_texture() const {
|
|||
}
|
||||
|
||||
void VideoStreamPlaybackTheora::update(float p_delta) {
|
||||
if (!file) {
|
||||
if (file.is_null()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -506,9 +500,9 @@ void VideoStreamPlaybackTheora::update(float p_delta) {
|
|||
}
|
||||
|
||||
#ifdef THEORA_USE_THREAD_STREAMING
|
||||
if (file && thread_eof && no_theora && theora_eos && ring_buffer.data_left() == 0) {
|
||||
if (file.is_valid() && thread_eof && no_theora && theora_eos && ring_buffer.data_left() == 0) {
|
||||
#else
|
||||
if (file && /*!videobuf_ready && */ no_theora && theora_eos) {
|
||||
if (file.is_valid() && /*!videobuf_ready && */ no_theora && theora_eos) {
|
||||
#endif
|
||||
//printf("video done, stopping\n");
|
||||
stop();
|
||||
|
|
@ -664,10 +658,6 @@ VideoStreamPlaybackTheora::~VideoStreamPlaybackTheora() {
|
|||
memdelete(thread_sem);
|
||||
#endif
|
||||
clear();
|
||||
|
||||
if (file) {
|
||||
memdelete(file);
|
||||
}
|
||||
};
|
||||
|
||||
void VideoStreamTheora::_bind_methods() {
|
||||
|
|
@ -680,8 +670,8 @@ void VideoStreamTheora::_bind_methods() {
|
|||
////////////
|
||||
|
||||
RES ResourceFormatLoaderTheora::load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads, float *r_progress, CacheMode p_cache_mode) {
|
||||
FileAccess *f = FileAccess::open(p_path, FileAccess::READ);
|
||||
if (!f) {
|
||||
Ref<FileAccess> f = FileAccess::open(p_path, FileAccess::READ);
|
||||
if (f.is_null()) {
|
||||
if (r_error) {
|
||||
*r_error = ERR_CANT_OPEN;
|
||||
}
|
||||
|
|
@ -697,8 +687,6 @@ RES ResourceFormatLoaderTheora::load(const String &p_path, const String &p_origi
|
|||
*r_error = OK;
|
||||
}
|
||||
|
||||
f->close();
|
||||
memdelete(f);
|
||||
return ogv_stream;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ class VideoStreamPlaybackTheora : public VideoStreamPlayback {
|
|||
Image::Format format = Image::Format::FORMAT_L8;
|
||||
Vector<uint8_t> frame_data;
|
||||
int frames_pending = 0;
|
||||
FileAccess *file = nullptr;
|
||||
Ref<FileAccess> file;
|
||||
String file_name;
|
||||
int audio_frames_wrote = 0;
|
||||
Point2i size;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
#include "thirdparty/tinyexr/tinyexr.h"
|
||||
|
||||
Error ImageLoaderTinyEXR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
|
||||
Error ImageLoaderTinyEXR::load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale) {
|
||||
Vector<uint8_t> src_image;
|
||||
uint64_t src_image_len = f->get_length();
|
||||
ERR_FAIL_COND_V(src_image_len == 0, ERR_FILE_CORRUPT);
|
||||
|
|
@ -47,8 +47,6 @@ Error ImageLoaderTinyEXR::load_image(Ref<Image> p_image, FileAccess *f, bool p_f
|
|||
|
||||
f->get_buffer(&w[0], src_image_len);
|
||||
|
||||
f->close();
|
||||
|
||||
// Re-implementation of tinyexr's LoadEXRFromMemory using Godot types to store the Image data
|
||||
// and Godot's error codes.
|
||||
// When debugging after updating the thirdparty library, check that we're still in sync with
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
class ImageLoaderTinyEXR : public ImageFormatLoader {
|
||||
public:
|
||||
virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
|
||||
virtual Error load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale);
|
||||
virtual void get_recognized_extensions(List<String> *p_extensions) const;
|
||||
ImageLoaderTinyEXR();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -275,8 +275,8 @@ Error save_exr(const String &p_path, const Ref<Image> &p_img, bool p_grayscale)
|
|||
print_error(String("Saving EXR failed. Error: {0}").format(varray(err)));
|
||||
return ERR_FILE_CANT_WRITE;
|
||||
} else {
|
||||
FileAccessRef ref = FileAccess::open(p_path, FileAccess::WRITE);
|
||||
ERR_FAIL_COND_V(!ref, ERR_FILE_CANT_WRITE);
|
||||
Ref<FileAccess> ref = FileAccess::open(p_path, FileAccess::WRITE);
|
||||
ERR_FAIL_COND_V(ref.is_null(), ERR_FILE_CANT_WRITE);
|
||||
ref->store_buffer(mem, bytes);
|
||||
free(mem);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,9 +78,8 @@ Error ResourceImporterOGGVorbis::import(const String &p_source_file, const Strin
|
|||
bool loop = p_options["loop"];
|
||||
float loop_offset = p_options["loop_offset"];
|
||||
|
||||
FileAccess *f = FileAccess::open(p_source_file, FileAccess::READ);
|
||||
|
||||
ERR_FAIL_COND_V_MSG(!f, ERR_CANT_OPEN, "Cannot open file '" + p_source_file + "'.");
|
||||
Ref<FileAccess> f = FileAccess::open(p_source_file, FileAccess::READ);
|
||||
ERR_FAIL_COND_V_MSG(f.is_null(), ERR_CANT_OPEN, "Cannot open file '" + p_source_file + "'.");
|
||||
|
||||
uint64_t len = f->get_length();
|
||||
|
||||
|
|
@ -90,8 +89,6 @@ Error ResourceImporterOGGVorbis::import(const String &p_source_file, const Strin
|
|||
|
||||
f->get_buffer(w, len);
|
||||
|
||||
memdelete(f);
|
||||
|
||||
Ref<AudioStreamOGGVorbis> ogg_vorbis_stream;
|
||||
ogg_vorbis_stream.instantiate();
|
||||
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ static Ref<Image> _webp_mem_loader_func(const uint8_t *p_png, int p_size) {
|
|||
return img;
|
||||
}
|
||||
|
||||
Error ImageLoaderWEBP::load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale) {
|
||||
Error ImageLoaderWEBP::load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale) {
|
||||
Vector<uint8_t> src_image;
|
||||
uint64_t src_image_len = f->get_length();
|
||||
ERR_FAIL_COND_V(src_image_len == 0, ERR_FILE_CORRUPT);
|
||||
|
|
@ -221,8 +221,6 @@ Error ImageLoaderWEBP::load_image(Ref<Image> p_image, FileAccess *f, bool p_forc
|
|||
|
||||
f->get_buffer(&w[0], src_image_len);
|
||||
|
||||
f->close();
|
||||
|
||||
Error err = webp_load_image_from_buffer(p_image.ptr(), w, src_image_len);
|
||||
|
||||
return err;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
class ImageLoaderWEBP : public ImageFormatLoader {
|
||||
public:
|
||||
virtual Error load_image(Ref<Image> p_image, FileAccess *f, bool p_force_linear, float p_scale);
|
||||
virtual Error load_image(Ref<Image> p_image, Ref<FileAccess> f, bool p_force_linear, float p_scale);
|
||||
virtual void get_recognized_extensions(List<String> *p_extensions) const;
|
||||
ImageLoaderWEBP();
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue