r4147 - trunk/bse



Author: timj
Date: 2006-12-13 15:34:07 -0500 (Wed, 13 Dec 2006)
New Revision: 4147

Modified:
   trunk/bse/ChangeLog
   trunk/bse/bseengine.c
   trunk/bse/bseenginemaster.c
   trunk/bse/bseengineutils.c
   trunk/bse/bseprobe.cc
Log:
Wed Dec 13 21:30:39 2006  Tim Janik  <timj gtk org>

        * bseenginemaster.c (master_take_probes): fixup ostreams[].value 
        pointers before returning a probe, since those may have been altered
        by process() routines.

        * bseprobe.cc: added debugging field and a few assertions.




Modified: trunk/bse/ChangeLog
===================================================================
--- trunk/bse/ChangeLog	2006-12-13 00:16:47 UTC (rev 4146)
+++ trunk/bse/ChangeLog	2006-12-13 20:34:07 UTC (rev 4147)
@@ -1,3 +1,11 @@
+Wed Dec 13 21:30:39 2006  Tim Janik  <timj gtk org>
+
+	* bseenginemaster.c (master_take_probes): fixup ostreams[].value 
+	pointers before returning a probe, since those may have been altered
+	by process() routines.
+
+	* bseprobe.cc: added debugging field and a few assertions.
+
 Tue Dec 12 08:50:45 2006  Tim Janik  <timj gtk org>
 
 	* bseundostack.c: fix possible flat copies of pointers to deeply

Modified: trunk/bse/bseengine.c
===================================================================
--- trunk/bse/bseengine.c	2006-12-13 00:16:47 UTC (rev 4146)
+++ trunk/bse/bseengine.c	2006-12-13 20:34:07 UTC (rev 4147)
@@ -548,7 +548,7 @@
   tjob->probe.probe_func = probe_func;
   tjob->probe.n_ostreams = ENGINE_NODE_N_OSTREAMS (node);
   tjob->probe.ostreams = _engine_alloc_ostreams (ENGINE_NODE_N_OSTREAMS (node));
-
+  
   BseJob *job = sfi_new_struct0 (BseJob, 1);
   job->job_id = ENGINE_JOB_PROBE_JOB;
   job->timed_job.node = ENGINE_NODE (module);

Modified: trunk/bse/bseenginemaster.c
===================================================================
--- trunk/bse/bseenginemaster.c	2006-12-13 00:16:47 UTC (rev 4146)
+++ trunk/bse/bseenginemaster.c	2006-12-13 20:34:07 UTC (rev 4147)
@@ -741,7 +741,11 @@
       tjob->probe.ostreams = ostreams;
       for (i = 0; i < ENGINE_NODE_N_OSTREAMS (node); i++)
         {
+          /* restore real ostream buffer pointers */
+          ostreams[i].values = node->outputs[i].buffer;
+          /* store real ostream buffer pointers */
           node->outputs[i].buffer = node->module.ostreams[i].values;
+          /* preserve connection flags */
           node->module.ostreams[i].connected = ostreams[i].connected;
         }
     }
@@ -755,7 +759,7 @@
           if (input->real_node && input->real_node->module.ostreams[input->real_stream].connected)
             {
               tjob->probe.ostreams[i].connected = true;
-              bse_block_copy_float (n_values, tjob->probe.ostreams[i].values, input->real_node->module.ostreams[input->real_stream].values);
+              bse_block_copy_float (n_values, tjob->probe.ostreams[i].values, input->real_node->outputs[input->real_stream].buffer);
             }
         }
     }

Modified: trunk/bse/bseengineutils.c
===================================================================
--- trunk/bse/bseengineutils.c	2006-12-13 00:16:47 UTC (rev 4146)
+++ trunk/bse/bseengineutils.c	2006-12-13 20:34:07 UTC (rev 4147)
@@ -32,7 +32,6 @@
 static inline void      engine_fetch_process_queue_trash_jobs_U (EngineTimedJob **trash_tjobs_head,
                                                                  EngineTimedJob **trash_tjobs_tail);
 
-
 /* --- UserThread --- */
 BseOStream*
 _engine_alloc_ostreams (guint n)

Modified: trunk/bse/bseprobe.cc
===================================================================
--- trunk/bse/bseprobe.cc	2006-12-13 00:16:47 UTC (rev 4146)
+++ trunk/bse/bseprobe.cc	2006-12-13 20:34:07 UTC (rev 4147)
@@ -411,16 +411,18 @@
   struct ProbeData {
     BseSource  *source;
     BseOStream *ostreams;
-    guint       n_pending;
-    guint64     debug_stamp;
+    uint64      debug_stamp;
+    uint        debug_n_values;
+    uint        n_pending;
     ProbeData (BseSource *_source,
                guint      n_streams) :
-      source (_source), ostreams (NULL), n_pending (0), debug_stamp (0)
+      source (_source), ostreams (NULL), debug_stamp (0), debug_n_values (0), n_pending (0)
     {}
     ~ProbeData()
     {
       g_assert (ostreams == NULL);
     }
+    BIRNET_PRIVATE_CLASS_COPY (ProbeData);
   };
   void
   handle_probe (ProbeData   &pdata,
@@ -439,12 +441,14 @@
         g_assert (pdata.debug_stamp == 0);
         pdata.ostreams = *ostreams_p;
         *ostreams_p = NULL;
+        pdata.debug_n_values = n_values;
         pdata.debug_stamp = tick_stamp;
       }
     else                                        /* successive modules */
       {
         /* add up all successive blocks */
         g_assert (pdata.debug_stamp == tick_stamp);
+        g_assert (pdata.debug_n_values == n_values);
         BseOStream *ostreams = *ostreams_p;
         for (uint j = 0; j < n_ostreams; j++)
           if (ostreams[j].connected && channel_sets[j].size() > 0)




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]