Alembic: fix updating of GUI when export progress is made
authorSybren A. Stüvel <sybren@blender.org>
Tue, 17 Sep 2019 12:10:47 +0000 (14:10 +0200)
committerSybren A. Stüvel <sybren@blender.org>
Tue, 17 Sep 2019 12:10:47 +0000 (14:10 +0200)
The `do_update` variable wasn't set after changing the `progress`
variable, causing the GUI only to update on redraw (f.e. when the user
was waving the mouse around).

source/blender/alembic/intern/abc_exporter.cc
source/blender/alembic/intern/abc_exporter.h
source/blender/alembic/intern/alembic_capi.cc

index 94263f615181c7d06a9ba9edc3d24f815410e993..69a376d00b0e2030b7fd0b5b179810365e102609 100644 (file)
@@ -263,7 +263,7 @@ void AbcExporter::getFrameSet(unsigned int nr_of_samples, std::set<double> &fram
   }
 }
 
-void AbcExporter::operator()(float *progress, bool *was_canceled)
+void AbcExporter::operator()(short *do_update, float *progress, bool *was_canceled)
 {
   std::string scene_name;
 
@@ -333,6 +333,7 @@ void AbcExporter::operator()(float *progress, bool *was_canceled)
 
   for (; begin != end; ++begin) {
     *progress = (++i / size);
+    *do_update = 1;
 
     if (G.is_break) {
       *was_canceled = true;
index cc8d9a757654ce41a1795db8ff22898bc31b397e..a73289fcf952b9329a7d66268cdf4629e1968cd2 100644 (file)
@@ -104,7 +104,7 @@ class AbcExporter {
   AbcExporter(Main *bmain, const char *filename, ExportSettings &settings);
   ~AbcExporter();
 
-  void operator()(float *progress, bool *was_canceled);
+  void operator()(short *do_update, float *progress, bool *was_canceled);
 
  protected:
   void getShutterSamples(unsigned int nr_of_samples,
index f9dc688c15947ac68e15c5282f4ef18ae8056730..6547ce54a007d4b06db431e7818a52084f16a01f 100644 (file)
@@ -261,7 +261,7 @@ static void export_startjob(void *customdata, short *stop, short *do_update, flo
     const int orig_frame = CFRA;
 
     data->was_canceled = false;
-    exporter(progress, &data->was_canceled);
+    exporter(do_update, progress, &data->was_canceled);
 
     if (CFRA != orig_frame) {
       CFRA = orig_frame;