[Bf-blender-cvs] [4e95807] master: fix T47484: Added proper error reporting for Collada Exporter
Gaia Clary
noreply at git.blender.org
Sat Feb 20 21:42:59 CET 2016
Commit: 4e95807db3e17c647001ba4112371217d0d2506b
Author: Gaia Clary
Date: Sat Feb 20 21:42:12 2016 +0100
Branches: master
https://developer.blender.org/rB4e95807db3e17c647001ba4112371217d0d2506b
fix T47484: Added proper error reporting for Collada Exporter
===================================================================
M source/blender/collada/DocumentExporter.cpp
M source/blender/collada/DocumentExporter.h
M source/blender/collada/collada.cpp
M source/blender/editors/io/io_collada.c
===================================================================
diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp
index 71c9391..90e53fe 100644
--- a/source/blender/collada/DocumentExporter.cpp
+++ b/source/blender/collada/DocumentExporter.cpp
@@ -178,7 +178,7 @@ static COLLADABU::NativeString make_temp_filepath(const char *name, const char *
// COLLADA allows this through multiple <channel>s in <animation>.
// For this to work, we need to know objects that use a certain action.
-void DocumentExporter::exportCurrentScene(Scene *sce)
+int DocumentExporter::exportCurrentScene(Scene *sce)
{
PointerRNA sceneptr, unit_settings;
PropertyRNA *system; /* unused , *scale; */
@@ -331,8 +331,13 @@ void DocumentExporter::exportCurrentScene(Scene *sce)
// Finally move the created document into place
int status = BLI_rename(native_filename.c_str(), this->export_settings->filepath);
- fprintf(stdout, "Collada moved buffer : %s (Status: %d)\n", this->export_settings->filepath, status);
-
+ if (status != 0)
+ {
+ fprintf(stdout, "Collada: Can't move buffer %s\n", native_filename.c_str());
+ fprintf(stdout, " to its destination %s\n", this->export_settings->filepath);
+ fprintf(stdout, "Reason : %s\n", errno ? strerror(errno) : "unknown error");
+ }
+ return status;
}
void DocumentExporter::exportScenes(const char *filename)
diff --git a/source/blender/collada/DocumentExporter.h b/source/blender/collada/DocumentExporter.h
index 84c0610..6e3c1ec 100644
--- a/source/blender/collada/DocumentExporter.h
+++ b/source/blender/collada/DocumentExporter.h
@@ -39,7 +39,7 @@ class DocumentExporter
{
public:
DocumentExporter(const ExportSettings *export_settings);
- void exportCurrentScene(Scene *sce);
+ int exportCurrentScene(Scene *sce);
void exportScenes(const char *filename);
private:
const ExportSettings *export_settings;
diff --git a/source/blender/collada/collada.cpp b/source/blender/collada/collada.cpp
index 4ca2186..b1cbc01 100644
--- a/source/blender/collada/collada.cpp
+++ b/source/blender/collada/collada.cpp
@@ -133,11 +133,11 @@ int collada_export(Scene *sce,
}
DocumentExporter exporter(&export_settings);
- exporter.exportCurrentScene(sce);
+ int status = exporter.exportCurrentScene(sce);
BLI_linklist_free(export_settings.export_set, NULL);
- return export_count;
+ return (status) ? -1:export_count;
}
/* end extern C */
diff --git a/source/blender/editors/io/io_collada.c b/source/blender/editors/io/io_collada.c
index d8f33dc..d4c976f 100644
--- a/source/blender/editors/io/io_collada.c
+++ b/source/blender/editors/io/io_collada.c
@@ -175,6 +175,10 @@ static int wm_collada_export_exec(bContext *C, wmOperator *op)
BKE_report(op->reports, RPT_WARNING, "Export file is empty");
return OPERATOR_CANCELLED;
}
+ else if (export_count < 0) {
+ BKE_report(op->reports, RPT_WARNING, "Error during export (see Console)");
+ return OPERATOR_CANCELLED;
+ }
else {
char buff[100];
sprintf(buff, "Exported %d Objects", export_count);
More information about the Bf-blender-cvs
mailing list