IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 8, 2008, 8:09:07 AM (18 years ago)
Author:
Paul Price
Message:

Fixing to match slight differences in psThread

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/detrend/pmFlatField.c

    r18893 r18960  
    1313#include "pmDetrendThreads.h"
    1414
    15 bool pmFlatFieldScan_Threaded (psThreadJob *job) {
     15bool pmFlatFieldScan_Threaded(const psThreadJob *job)
     16{
     17    PS_ASSERT_THREAD_JOB_NON_NULL(job, false);
     18
    1619    psImage *inImage   = job->args->data[0];
    1720    psImage *inMask    = job->args->data[1];
     
    2932
    3033// Macro for all PS types
    31 #define FLAT_DIVISION_CASE(TYPE, SPECIAL)       \
    32     case PS_TYPE_##TYPE:                        \
     34#define FLAT_DIVISION_CASE(TYPE, SPECIAL)       \
     35    case PS_TYPE_##TYPE:                        \
    3336    for (int j = rowStart; j < rowStop; j++) { \
    3437        for (int i = 0; i < inImage->numCols; i++) { \
     
    129132    bool threaded = true;
    130133    int scanRows = pmDetrendGetScanRows();
    131     if (scanRows == 0) { 
    132         threaded = false;
    133         scanRows = inImage->numRows;
     134    if (scanRows == 0) {
     135        threaded = false;
     136        scanRows = inImage->numRows;
    134137    }
    135138
     
    137140      int rowStop = PS_MIN (rowStart + scanRows, inImage->numRows);
    138141
    139 # define PS_ARRAY_ADD_SCALAR(ARRAY, VALUE, TYPE) { \
    140       psScalar *scalar = psScalarAlloc(VALUE, TYPE); \
    141       psArrayAdd(ARRAY, 1, scalar); \
    142       psFree (scalar); }
    143      
    144142      if (threaded) {
    145           // allocate a job, construct the arguments for this job
    146           psThreadJob *job = psThreadJobAlloc ("PSMODULES_DETREND_FLAT");
    147           psArrayAdd (job->args, 1, inImage);
    148           psArrayAdd (job->args, 1, inMask);
    149           psArrayAdd (job->args, 1, flatImage);
    150           psArrayAdd (job->args, 1, flatMask);
    151           PS_ARRAY_ADD_SCALAR (job->args, badFlat, PS_TYPE_U8);
    152           PS_ARRAY_ADD_SCALAR (job->args, xOffset, PS_TYPE_S32);
    153           PS_ARRAY_ADD_SCALAR (job->args, yOffset, PS_TYPE_S32);
    154           PS_ARRAY_ADD_SCALAR (job->args, rowStart, PS_TYPE_S32);
    155           PS_ARRAY_ADD_SCALAR (job->args, rowStop, PS_TYPE_S32);
     143          // allocate a job, construct the arguments for this job
     144          psThreadJob *job = psThreadJobAlloc ("PSMODULES_DETREND_FLAT");
     145          psArrayAdd (job->args, 1, inImage);
     146          psArrayAdd (job->args, 1, inMask);
     147          psArrayAdd (job->args, 1, flatImage);
     148          psArrayAdd (job->args, 1, flatMask);
     149          PS_ARRAY_ADD_SCALAR (job->args, badFlat, PS_TYPE_U8);
     150          PS_ARRAY_ADD_SCALAR (job->args, xOffset, PS_TYPE_S32);
     151          PS_ARRAY_ADD_SCALAR (job->args, yOffset, PS_TYPE_S32);
     152          PS_ARRAY_ADD_SCALAR (job->args, rowStart, PS_TYPE_S32);
     153          PS_ARRAY_ADD_SCALAR (job->args, rowStop, PS_TYPE_S32);
    156154
    157           // ppImageDetrendReadout(config, options, view)
    158           if (!psThreadJobAddPending (job)) {
    159               return false;
    160           }
     155          // ppImageDetrendReadout(config, options, view)
     156          if (!psThreadJobAddPending (job)) {
     157              psFree(job);
     158              return false;
     159          }
     160          psFree(job);
    161161      } else {
    162           pmFlatFieldScan (inImage, inMask, flatImage, flatMask, badFlat, xOffset, yOffset, rowStart, rowStop);
     162          pmFlatFieldScan (inImage, inMask, flatImage, flatMask, badFlat, xOffset, yOffset, rowStart, rowStop);
    163163      }
    164164    }
    165165
    166166    if (threaded) {
    167         // wait here for the threaded jobs to finish
    168         if (!psThreadPoolWait ()) {
    169             psError(PS_ERR_UNKNOWN, false, "Unable to interpolate image.");
    170             return false;
    171         }
    172         fprintf (stderr, "success for threaded jobs\n");
     167        // wait here for the threaded jobs to finish
     168        if (!psThreadPoolWait(false)) {
     169            psError(PS_ERR_UNKNOWN, false, "Unable to interpolate image.");
     170            return false;
     171        }
     172        fprintf (stderr, "success for threaded jobs\n");
    173173
    174         // free done jobs
    175         psThreadJob *job = NULL;
    176         while ((job = psThreadJobGetDone()) != NULL) {
    177             psFree (job);
    178         }
     174        // free done jobs
     175        psThreadJob *job = NULL;
     176        while ((job = psThreadJobGetDone()) != NULL) {
     177            psFree (job);
     178        }
    179179    }
    180180
Note: See TracChangeset for help on using the changeset viewer.