Index: trunk/psModules/src/detrend/pmFlatField.c
===================================================================
--- trunk/psModules/src/detrend/pmFlatField.c	(revision 19299)
+++ trunk/psModules/src/detrend/pmFlatField.c	(revision 19432)
@@ -17,8 +17,8 @@
     PS_ASSERT_THREAD_JOB_NON_NULL(job, false);
 
-    psImage *inImage   = job->args->data[0];
-    psImage *inMask    = job->args->data[1];
-    psImage *flatImage = job->args->data[2];
-    psImage *flatMask  = job->args->data[3];
+    psImage *inImage   = job->args->data[0]; // Input image
+    psImage *inMask    = job->args->data[1]; // Input mask
+    const psImage *flatImage = job->args->data[2]; // Flat-field image
+    const psImage *flatMask  = job->args->data[3]; // Flat-field mask
 
     psMaskType badFlat = PS_SCALAR_VALUE(job->args->data[4],U8);
@@ -27,6 +27,6 @@
     int rowStart       = PS_SCALAR_VALUE(job->args->data[7],S32);
     int rowStop        = PS_SCALAR_VALUE(job->args->data[8],S32);
-    bool status = pmFlatFieldScan (inImage, inMask, flatImage, flatMask, badFlat, xOffset, yOffset, rowStart, rowStop);
-    return status;
+    return pmFlatFieldScan(inImage, inMask, flatImage, flatMask, badFlat,
+                           xOffset, yOffset, rowStart, rowStop);
 }
 
@@ -50,6 +50,7 @@
     break;
 
-bool pmFlatFieldScan (psImage *inImage, psImage *inMask, psImage *flatImage, psImage *flatMask, psMaskType badFlat, int xOffset, int yOffset, int rowStart, int rowStop) {
-
+bool pmFlatFieldScan(psImage *inImage, psImage *inMask, const psImage *flatImage, const psImage *flatMask,
+                     psMaskType badFlat, int xOffset, int yOffset, int rowStart, int rowStop)
+{
     switch (inImage->type.type) {
         FLAT_DIVISION_CASE(U8,  0);
@@ -138,27 +139,28 @@
 
     for (int rowStart = 0; rowStart < inImage->numRows; rowStart += scanRows) {
-      int rowStop = PS_MIN (rowStart + scanRows, inImage->numRows);
+      int rowStop = PS_MIN(rowStart + scanRows, inImage->numRows);
 
       if (threaded) {
           // allocate a job, construct the arguments for this job
-          psThreadJob *job = psThreadJobAlloc ("PSMODULES_DETREND_FLAT");
-          psArrayAdd (job->args, 1, inImage);
-          psArrayAdd (job->args, 1, inMask);
-          psArrayAdd (job->args, 1, flatImage);
-          psArrayAdd (job->args, 1, flatMask);
-          PS_ARRAY_ADD_SCALAR (job->args, badFlat, PS_TYPE_U8);
-          PS_ARRAY_ADD_SCALAR (job->args, xOffset, PS_TYPE_S32);
-          PS_ARRAY_ADD_SCALAR (job->args, yOffset, PS_TYPE_S32);
-          PS_ARRAY_ADD_SCALAR (job->args, rowStart, PS_TYPE_S32);
-          PS_ARRAY_ADD_SCALAR (job->args, rowStop, PS_TYPE_S32);
+          psThreadJob *job = psThreadJobAlloc("PSMODULES_DETREND_FLAT");
+          psArrayAdd(job->args, 1, inImage);
+          psArrayAdd(job->args, 1, inMask);
+          psArrayAdd(job->args, 1, flatImage);
+          psArrayAdd(job->args, 1, flatMask);
+          PS_ARRAY_ADD_SCALAR(job->args, badFlat, PS_TYPE_U8);
+          PS_ARRAY_ADD_SCALAR(job->args, xOffset, PS_TYPE_S32);
+          PS_ARRAY_ADD_SCALAR(job->args, yOffset, PS_TYPE_S32);
+          PS_ARRAY_ADD_SCALAR(job->args, rowStart, PS_TYPE_S32);
+          PS_ARRAY_ADD_SCALAR(job->args, rowStop, PS_TYPE_S32);
 
-          // ppImageDetrendReadout(config, options, view)
-          if (!psThreadJobAddPending (job)) {
+          if (!psThreadJobAddPending(job)) {
               psFree(job);
               return false;
           }
           psFree(job);
-      } else {
-          pmFlatFieldScan (inImage, inMask, flatImage, flatMask, badFlat, xOffset, yOffset, rowStart, rowStop);
+      } else if (!pmFlatFieldScan(inImage, inMask, flatImage, flatMask, badFlat,
+                                  xOffset, yOffset, rowStart, rowStop)) {
+          psError(PS_ERR_UNKNOWN, false, "Unable to flat-field image.");
+          return false;
       }
     }
@@ -166,14 +168,7 @@
     if (threaded) {
         // wait here for the threaded jobs to finish
-        if (!psThreadPoolWait(false)) {
-            psError(PS_ERR_UNKNOWN, false, "Unable to interpolate image.");
+        if (!psThreadPoolWait(true)) {
+            psError(PS_ERR_UNKNOWN, false, "Unable to flat-field image.");
             return false;
-        }
-        fprintf (stderr, "success for threaded jobs\n");
-
-        // free done jobs
-        psThreadJob *job = NULL;
-        while ((job = psThreadJobGetDone()) != NULL) {
-            psFree (job);
         }
     }
@@ -187,5 +182,4 @@
     psFree(timeString);
 
-
     return true;
 }
