r4148 - trunk/bse
- From: timj svn gnome org
- To: svn-commits-list gnome org
- Subject: r4148 - trunk/bse
- Date: Wed, 13 Dec 2006 17:56:17 -0500 (EST)
Author: timj
Date: 2006-12-13 17:56:16 -0500 (Wed, 13 Dec 2006)
New Revision: 4148
Modified:
trunk/bse/ChangeLog
trunk/bse/bseenginemaster.c
Log:
Wed Dec 13 23:55:15 2006 Tim Janik <timj gtk org>
* bseenginemaster.c (master_process_locked_node): set buffer start
fragments to zero for nodes that are partially suspended and have
pending probe jobs, so probes don't contain outdated junk data.
Modified: trunk/bse/ChangeLog
===================================================================
--- trunk/bse/ChangeLog 2006-12-13 20:34:07 UTC (rev 4147)
+++ trunk/bse/ChangeLog 2006-12-13 22:56:16 UTC (rev 4148)
@@ -1,3 +1,9 @@
+Wed Dec 13 23:55:15 2006 Tim Janik <timj gtk org>
+
+ * bseenginemaster.c (master_process_locked_node): set buffer start
+ fragments to zero for nodes that are partially suspended and have
+ pending probe jobs, so probes don't contain outdated junk data.
+
Wed Dec 13 21:30:39 2006 Tim Janik <timj gtk org>
* bseenginemaster.c (master_take_probes): fixup ostreams[].value
Modified: trunk/bse/bseenginemaster.c
===================================================================
--- trunk/bse/bseenginemaster.c 2006-12-13 20:34:07 UTC (rev 4147)
+++ trunk/bse/bseenginemaster.c 2006-12-13 22:56:16 UTC (rev 4148)
@@ -807,7 +807,8 @@
const guint64 current_stamp = GSL_TICK_STAMP;
guint64 next_counter, new_counter, final_counter = current_stamp + n_values;
guint i, j, diff;
-
+ bool needs_probe_reset = node->probe_jobs != NULL;
+
g_return_if_fail (node->integrated && node->sched_tag);
while (node->counter < final_counter)
@@ -851,7 +852,11 @@
}
/* update obuffer pointer */
for (i = 0; i < ENGINE_NODE_N_OSTREAMS (node); i++)
- node->module.ostreams[i].values = node->outputs[i].buffer + diff;
+ node->module.ostreams[i].values = node->outputs[i].buffer + diff;
+ if (diff && needs_probe_reset)
+ for (i = 0; i < ENGINE_NODE_N_OSTREAMS (node); i++)
+ memset (node->outputs[i].buffer, 0, diff * sizeof (node->outputs[0].buffer[0]));
+ needs_probe_reset = false;
/* process() node */
if (UNLIKELY (ENGINE_NODE_IS_SUSPENDED (node, node->counter)))
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]