Skip to content

Commit

Permalink
Consistency in resource format saver/loader de-registration
Browse files Browse the repository at this point in the history
Some used 'is_valid()' checks, others not. Validity is already checked in 'unref()',
and 'remove_resource_format_*()' has an ERR_FAIL condition on 'is_null()' already
(which shouldn't happen since we're only unregistering things that we previously
registered.

Also add missing GDCLASS statement in ResourceFormatLoaderVideoStreamGDNative,
missed in godotengine#20552 which was last amended before godotengine#19501 was merged.
  • Loading branch information
akien-mga committed Jan 10, 2019
1 parent 940a2c5 commit e5f1d19
Show file tree
Hide file tree
Showing 9 changed files with 43 additions and 74 deletions.
33 changes: 12 additions & 21 deletions core/register_core_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,16 +68,15 @@
static Ref<ResourceFormatSaverBinary> resource_saver_binary;
static Ref<ResourceFormatLoaderBinary> resource_loader_binary;
static Ref<ResourceFormatImporter> resource_format_importer;

static Ref<ResourceFormatLoaderImage> resource_format_image;
static Ref<TranslationLoaderPO> resource_format_po;

static _ResourceLoader *_resource_loader = NULL;
static _ResourceSaver *_resource_saver = NULL;
static _OS *_os = NULL;
static _Engine *_engine = NULL;
static _ClassDB *_classdb = NULL;
static _Marshalls *_marshalls = NULL;
static Ref<TranslationLoaderPO> resource_format_po;
static _JSON *_json = NULL;

static IP *ip = NULL;
Expand Down Expand Up @@ -251,25 +250,17 @@ void unregister_core_types() {

memdelete(_geometry);

if (resource_format_image.is_valid()) {
ResourceLoader::remove_resource_format_loader(resource_format_image);
resource_format_image.unref();
}

if (resource_saver_binary.is_valid()) {
ResourceSaver::remove_resource_format_saver(resource_saver_binary);
resource_saver_binary.unref();
}

if (resource_loader_binary.is_valid()) {
ResourceLoader::remove_resource_format_loader(resource_loader_binary);
resource_loader_binary.unref();
}

if (resource_format_importer.is_valid()) {
ResourceLoader::remove_resource_format_loader(resource_format_importer);
resource_format_importer.unref();
}
ResourceLoader::remove_resource_format_loader(resource_format_image);
resource_format_image.unref();

ResourceSaver::remove_resource_format_saver(resource_saver_binary);
resource_saver_binary.unref();

ResourceLoader::remove_resource_format_loader(resource_loader_binary);
resource_loader_binary.unref();

ResourceLoader::remove_resource_format_loader(resource_format_importer);
resource_format_importer.unref();

ResourceLoader::remove_resource_format_loader(resource_format_po);
resource_format_po.unref();
Expand Down
6 changes: 2 additions & 4 deletions drivers/register_driver_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,8 @@ void unregister_core_driver_types() {
if (image_loader_png)
memdelete(image_loader_png);

if (resource_saver_png.is_valid()) {
ResourceSaver::remove_resource_format_saver(resource_saver_png);
resource_saver_png.unref();
}
ResourceSaver::remove_resource_format_saver(resource_saver_png);
resource_saver_png.unref();
}

void register_driver_types() {
Expand Down
8 changes: 4 additions & 4 deletions modules/gdnative/register_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -314,9 +314,9 @@ void register_gdnative_types() {
ClassDB::register_class<GDNative>();

resource_loader_gdnlib.instance();
resource_saver_gdnlib.instance();

ResourceLoader::add_resource_format_loader(resource_loader_gdnlib);

resource_saver_gdnlib.instance();
ResourceSaver::add_resource_format_saver(resource_saver_gdnlib);

GDNativeCallRegistry::singleton = memnew(GDNativeCallRegistry);
Expand Down Expand Up @@ -395,9 +395,9 @@ void unregister_gdnative_types() {
#endif

ResourceLoader::remove_resource_format_loader(resource_loader_gdnlib);
ResourceSaver::remove_resource_format_saver(resource_saver_gdnlib);

resource_loader_gdnlib.unref();

ResourceSaver::remove_resource_format_saver(resource_saver_gdnlib);
resource_saver_gdnlib.unref();

// This is for printing out the sizes of the core types
Expand Down
1 change: 1 addition & 0 deletions modules/gdnative/videodecoder/video_stream_gdnative.h
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ class VideoStreamGDNative : public VideoStream {
};

class ResourceFormatLoaderVideoStreamGDNative : public ResourceFormatLoader {
GDCLASS(ResourceFormatLoaderVideoStreamGDNative, ResourceFormatLoader)
public:
virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL);
virtual void get_recognized_extensions(List<String> *p_extensions) const;
Expand Down
12 changes: 4 additions & 8 deletions modules/gdscript/register_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,13 +161,9 @@ void unregister_gdscript_types() {
if (script_language_gd)
memdelete(script_language_gd);

if (resource_loader_gd.is_valid()) {
ResourceLoader::remove_resource_format_loader(resource_loader_gd);
resource_loader_gd.unref();
}
ResourceLoader::remove_resource_format_loader(resource_loader_gd);
resource_loader_gd.unref();

if (resource_saver_gd.is_valid()) {
ResourceSaver::remove_resource_format_saver(resource_saver_gd);
resource_saver_gd.unref();
}
ResourceSaver::remove_resource_format_saver(resource_saver_gd);
resource_saver_gd.unref();
}
14 changes: 5 additions & 9 deletions modules/mono/register_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,11 @@ void unregister_mono_types() {
if (script_language_cs)
memdelete(script_language_cs);

if (resource_loader_cs.is_valid()) {
ResourceLoader::remove_resource_format_loader(resource_loader_cs);
resource_loader_cs.unref();
}

if (resource_saver_cs.is_valid()) {
ResourceSaver::remove_resource_format_saver(resource_saver_cs);
resource_saver_cs.unref();
}
ResourceLoader::remove_resource_format_loader(resource_loader_cs);
resource_loader_cs.unref();

ResourceSaver::remove_resource_format_saver(resource_saver_cs);
resource_saver_cs.unref();

if (_godotsharp)
memdelete(_godotsharp);
Expand Down
5 changes: 1 addition & 4 deletions modules/theora/register_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,5 @@ void register_theora_types() {
void unregister_theora_types() {

ResourceLoader::remove_resource_format_loader(resource_loader_theora);

if (resource_loader_theora.is_valid()) {
resource_loader_theora.unref();
}
resource_loader_theora.unref();
}
5 changes: 1 addition & 4 deletions modules/webm/register_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,5 @@ void register_webm_types() {
void unregister_webm_types() {

ResourceLoader::remove_resource_format_loader(resource_loader_webm);

if (resource_loader_webm.is_valid()) {
resource_loader_webm.unref();
}
resource_loader_webm.unref();
}
33 changes: 13 additions & 20 deletions scene/register_scene_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -746,27 +746,20 @@ void unregister_scene_types() {

DynamicFont::finish_dynamic_fonts();

if (resource_saver_text.is_valid()) {
ResourceSaver::remove_resource_format_saver(resource_saver_text);
resource_saver_text.unref();
}
if (resource_loader_text.is_valid()) {
ResourceLoader::remove_resource_format_loader(resource_loader_text);
resource_loader_text.unref();
}
ResourceSaver::remove_resource_format_saver(resource_saver_text);
resource_saver_text.unref();

if (resource_saver_shader.is_valid()) {
ResourceSaver::remove_resource_format_saver(resource_saver_shader);
resource_saver_shader.unref();
}
if (resource_loader_shader.is_valid()) {
ResourceLoader::remove_resource_format_loader(resource_loader_shader);
resource_loader_shader.unref();
}
if (resource_loader_bmfont.is_valid()) {
ResourceLoader::remove_resource_format_loader(resource_loader_bmfont);
resource_loader_bmfont.unref();
}
ResourceLoader::remove_resource_format_loader(resource_loader_text);
resource_loader_text.unref();

ResourceSaver::remove_resource_format_saver(resource_saver_shader);
resource_saver_shader.unref();

ResourceLoader::remove_resource_format_loader(resource_loader_shader);
resource_loader_shader.unref();

ResourceLoader::remove_resource_format_loader(resource_loader_bmfont);
resource_loader_bmfont.unref();

SpatialMaterial::finish_shaders();
ParticlesMaterial::finish_shaders();
Expand Down

0 comments on commit e5f1d19

Please sign in to comment.