Index: trunk/psModules/src/objects/pmSource.c
===================================================================
--- trunk/psModules/src/objects/pmSource.c	(revision 7283)
+++ trunk/psModules/src/objects/pmSource.c	(revision 7311)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-06-02 02:16:05 $
+ *  @version $Revision: 1.6 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-06-03 01:02:08 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -46,5 +46,7 @@
 {
     psTrace(__func__, 3, "---- %s() begin ----\n", __func__);
+    static int id = 1;
     pmSource *tmp = (pmSource *) psAlloc(sizeof(pmSource));
+    *(int *)&tmp->id = id++;
     tmp->peak = NULL;
     tmp->pixels = NULL;
@@ -69,4 +71,9 @@
 }
 
+bool pmIsSource(const psPtr ptr)
+{
+    return (psMemGetDeallocator(ptr) == (psFreeFunc)sourceFree);
+}
+
 // x,y are defined in the parent image coords of readout->image
 bool pmSourceDefinePixels(pmSource *mySource,
@@ -82,7 +89,7 @@
     srcRegion = psRegionForImage (readout->image, srcRegion);
 
-    mySource->pixels = psImageSubset(readout->image, srcRegion);
-    mySource->weight = psImageSubset(readout->weight, srcRegion);
-    mySource->mask   = psImageSubset(readout->mask,  srcRegion);
+    mySource->pixels = psMemIncrRefCounter(psImageSubset(readout->image, srcRegion));
+    mySource->weight = psMemIncrRefCounter(psImageSubset(readout->weight, srcRegion));
+    mySource->mask   = psMemIncrRefCounter(psImageSubset(readout->mask,  srcRegion));
     mySource->region = srcRegion;
 
@@ -123,7 +130,7 @@
         psFree (mySource->mask);
 
-        mySource->pixels = psImageSubset(readout->image,  newRegion);
-        mySource->weight = psImageSubset(readout->weight, newRegion);
-        mySource->mask   = psImageSubset(readout->mask,   newRegion);
+        mySource->pixels = psMemIncrRefCounter(psImageSubset(readout->image,  newRegion));
+        mySource->weight = psMemIncrRefCounter(psImageSubset(readout->weight, newRegion));
+        mySource->mask   = psMemIncrRefCounter(psImageSubset(readout->mask,   newRegion));
         mySource->region = newRegion;
     }
