aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Henry <nusmuk@users.sourceforge.net>2013-05-16 18:32:17 +0000
committerCyrille Henry <nusmuk@users.sourceforge.net>2013-05-16 18:32:17 +0000
commit622799a3f78a580e31028c35afb29623101bce44 (patch)
tree4e59d2c775bf7067a5496e86a641c645922efb88
parent5598312393f26977e06d1159d1a77fbf2008da14 (diff)
debug new sharemam fonctionality and update help file
svn path=/trunk/externals/share_mem/; revision=17131
-rw-r--r--shmem-help.pd109
-rw-r--r--shmem.c18
2 files changed, 64 insertions, 63 deletions
diff --git a/shmem-help.pd b/shmem-help.pd
index 7999463..8eca76c 100644
--- a/shmem-help.pd
+++ b/shmem-help.pd
@@ -1,50 +1,41 @@
-#N canvas 120 82 1232 469 10;
+#N canvas 532 488 1232 513 10;
#N canvas 1 89 450 300 (subpatch) 0;
#X array array2 100 float 3;
-#A 0 -0.857141 -0.799998 -0.72857 -0.657141 -0.585713 -0.542856 -0.499999
--0.457142 -0.414285 -0.342856 -0.271428 -0.228571 -0.171428 -0.0857141
--0.0285714 0.0142857 0.0571427 0.0999998 0.171428 0.257142 0.314285
-0.342856 0.371428 0.399999 0.414285 0.442856 0.457142 0.485713 0.514285
-0.52857 0.542856 0.571427 0.585713 0.614284 0.657141 0.685713 0.714284
-0.72857 0.742856 0.771427 0.771427 0.771427 0.785713 0.799998 0.799998
-0.799998 0.799998 0.799998 0.799998 0.799998 0.799998 0.799998 0.799998
-0.799998 0.799998 0.799998 0.785713 0.785713 0.77857 0.771427 0.757141
-0.742856 0.72857 0.707141 0.685713 0.671427 0.657141 0.62857 0.607142
-0.585713 0.542856 0.521427 0.499999 0.457142 0.428571 0.357142 0.242857
-0.157143 0.0999998 0.0285714 -0.0285714 -0.0571427 -0.142857 -0.185714
--0.242857 -0.285714 -0.342856 -0.371428 -0.428571 -0.485713 -0.52857
--0.585713 -0.671427 -0.785713 -0.814284 -0.899998 -0.999998 -1.04285
--1.02857 -1.04285;
+#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0;
#X coords 0 1 99 -1 200 140 1;
#X restore 680 26 graph;
-#X msg 53 288 memset 0 1 1 1 1 1;
-#X text 185 282 write a list (or a float) to the shared memory : 1st
+#X msg 83 358 memset 0 1 1 1 1 1;
+#X text 215 352 write a list (or a float) to the shared memory : 1st
value is index \, other are data to store;
-#X msg 22 223 memset 0 array1;
+#X msg 52 283 memset 0 array1;
#N canvas 0 50 450 300 (subpatch) 0;
#X array array1 100 float 3;
-#A 0 -0.87857 -0.864284 -0.849998 -0.835713 -0.835713 -0.807141 -0.792856
--0.77857 -0.749998 -0.749998 -0.735713 -0.707141 -0.692856 -0.67857
--0.664284 -0.649999 -0.621427 -0.592856 -0.592856 -0.564285 -0.549999
--0.535713 -0.521428 -0.492856 -0.47857 -0.464285 -0.449999 -0.435713
--0.421428 -0.407142 -0.378571 -0.349999 -0.349999 -0.335714 -0.307142
--0.307142 -0.278571 -0.278571 -0.264285 -0.235714 -0.221428 -0.207142
--0.192857 -0.178571 -0.15 -0.135714 -0.121428 -0.107143 -0.092857 -0.05
--0.0357143 -0.0214286 -0.0071429 0.0214285 0.0357141 0.0499998 0.0499998
-0.0785712 0.0928569 0.121428 0.135714 0.164285 0.164285 0.192857 0.207142
-0.235714 0.249999 0.264285 0.292856 0.307142 0.335714 0.349999 0.378571
-0.392856 0.421428 0.435713 0.47857 0.492856 0.521427 0.549999 0.592856
-0.592856 0.607141 0.635713 0.649999 0.664284 0.692856 0.707141 0.749998
-0.749998 0.77857 0.807141 0.821427 0.849998 0.878569 0.878569 0.907141
-0.907141 0.921427 0.964284;
+#A 0 -0.235714 -0.25 -0.264285 -0.278571 -0.292857 -0.292857 -0.292857
+-0.307142 -0.321428 -0.335714 -0.335714 -0.349999 -0.349999 -0.349999
+-0.364285 -0.371428 -0.378571 -0.378571 -0.378571 -0.378571 -0.385714
+-0.392856 -0.399999 -0.407142 -0.414285 -0.421428 -0.421428 -0.421428
+-0.421428 -0.421428 -0.42619 -0.430952 -0.435713 -0.445237 -0.454761
+-0.464285 -0.464285 -0.464285 -0.464285 -0.464285 -0.464285 -0.464285
+-0.471428 -0.47857 -0.47857 -0.47857 -0.47857 -0.47857 -0.47857 -0.47857
+-0.492856 -0.507142 -0.507142 -0.507142 -0.507142 -0.507142 -0.507142
+-0.507142 -0.507142 -0.521428 -0.535713 -0.535713 -0.535713 -0.535713
+-0.535713 -0.535713 -0.535713 -0.549999 -0.549999 -0.549999 -0.549999
+-0.549999 -0.549999 -0.549999 -0.549999 -0.549999 -0.549999 -0.549999
+-0.549999 -0.549999 -0.549999 -0.564285 -0.564285 -0.57857 -0.57857
+-0.57857 -0.57857 -0.57857 -0.592856 -0.592856 -0.592856 -0.592856
+-0.592856 -0.592856 -0.592856 -0.592856 -0.592856 -0.592856 -0.592856
+-0.607142;
#X coords 0 1 99 -1 200 140 1;
#X restore 475 26 graph;
-#X text 136 223 set shared memory from index 0 with array1;
-#X msg 38 245 memset 0 array1 50;
-#X text 166 245 set shared memory from index 0 with array1 from index
+#X text 166 283 set shared memory from index 0 with array1;
+#X msg 68 305 memset 0 array1 50;
+#X text 196 305 set shared memory from index 0 with array1 from index
50;
-#X obj 22 405 shmem 1214 250;
-#X text 132 405 1st argument : Identifiant of the memory segment;
+#X obj 36 445 shmem 1214 250;
+#X text 162 445 1st argument : Identifiant of the memory segment;
#X text 21 15 shmem - shared memory manipulation;
#X text 22 37 The shmem object allow to use shared memory in Pd. It
is useful for example to exchange array between two instances of Pd.
@@ -53,29 +44,36 @@ is identified by its Id.;
#X text 21 95 When you create a shmem object \, it checks its Id. If
the id is not used \, it allows a new segment \, otherwise it address
the exisiting segment.;
-#X floatatom 584 318 5 0 0 0 - - -;
-#X obj 568 371 shmem 1214 250;
-#X text 655 343 read one float of the table send value to the outlet
+#X floatatom 614 358 5 0 0 0 - - -;
+#X obj 598 411 shmem 1214 250;
+#X text 685 383 read one float of the table send value to the outlet
;
-#X msg 568 252 memdump 0 array2;
-#X text 567 214 READING MEMORY;
-#X floatatom 568 395 5 0 0 0 - - -;
-#X text 688 252 dump shared memory from index 0 to array2;
+#X msg 598 292 memdump 0 array2;
+#X text 567 204 READING MEMORY;
+#X floatatom 598 435 5 0 0 0 - - -;
+#X text 718 292 dump shared memory from index 0 to array2;
#X text 21 146 Work only on Linux / and Unix.;
-#X text 132 421 2nd argument : size of the segment (number of float)
+#X text 162 461 2nd argument : size of the segment (number of float)
;
-#X msg 584 343 memread \$1;
-#X msg 76 365 memclear;
-#X text 139 367 reset memory to 0;
+#X msg 614 383 memread \$1;
+#X msg 106 415 memclear;
+#X text 169 417 reset memory to 0;
#X text 475 168 array1 and array 2 are size 100;
-#X msg 69 318 memset 50 5 5 5 1 1 0.1 0.2 0.3 0.4 0.5 0.6 0.7;
-#X text 21 192 WRITING INTO MEMORY;
-#X msg 578 274 memdump 0 array2 50;
-#X text 698 274 dump shared memory from index 0 to array2 from index
+#X msg 99 388 memset 50 5 5 5 1 1 0.1 0.2 0.3 0.4 0.5 0.6 0.7;
+#X text 21 202 WRITING INTO MEMORY;
+#X msg 608 314 memdump 0 array2 50;
+#X text 728 314 dump shared memory from index 0 to array2 from index
50;
-#X msg 588 294 memdump 0 array2 50 10;
-#X text 738 294 dump shared memory from index 0 to array2 from index
+#X msg 618 334 memdump 0 array2 50 10;
+#X text 768 334 dump shared memory from index 0 to array2 from index
50 to index 60 (50 + 10);
+#X text 206 329 set shared memory from index 50 with array1 from index
+0;
+#X msg 78 331 memset 50 array1 0;
+#X msg 46 261 memset array1 array1 array1;
+#X msg 36 241 memset array1;
+#X text 149 240 set array in to shared memory;
+#X text 223 261 set diferent array in to shared memory;
#X connect 1 0 8 0;
#X connect 3 0 8 0;
#X connect 6 0 8 0;
@@ -87,3 +85,6 @@ the exisiting segment.;
#X connect 26 0 8 0;
#X connect 28 0 14 0;
#X connect 30 0 14 0;
+#X connect 33 0 8 0;
+#X connect 34 0 8 0;
+#X connect 35 0 8 0;
diff --git a/shmem.c b/shmem.c
index 1bb1037..836c991 100644
--- a/shmem.c
+++ b/shmem.c
@@ -37,7 +37,7 @@ int shmem_set_tab(t_shmem *x, t_symbol *table, int src_offset, int dest_offset)
for (i=0; i < index_max; i++)
x->share_memory[i+dest_offset] = vec[i+src_offset].w_float;
}
- post("copiƩ=%d", i);
+ // post("copied=%d", i);
return(i);
}
@@ -45,7 +45,7 @@ void shmem_set(t_shmem *x, t_symbol *unused, int argc, t_atom *argv)
{
int i, j, index_max, shmem_offset, array_offset;
- if (argc <= 1) {
+ if (argc < 1) {
pd_error(x, "shmem usage : [memset table_name [table_name []]< or [memset src_offset data [dest_offset]< (data can be a float, a list, or a table name)");
return;
}
@@ -55,6 +55,7 @@ void shmem_set(t_shmem *x, t_symbol *unused, int argc, t_atom *argv)
j = 0;
while (argv[i].a_type == A_SYMBOL) {
j += shmem_set_tab(x, atom_getsymbolarg(i,argc,argv), 0, j);
+ i++;
}
}
else if ((argc > 1) && (argv[0].a_type == A_FLOAT) ) {
@@ -69,13 +70,12 @@ void shmem_set(t_shmem *x, t_symbol *unused, int argc, t_atom *argv)
shmem_set_tab(x, atom_getsymbolarg(1,argc,argv), array_offset, shmem_offset);
}
- }
- else if ((argc > 1) && (argv[1].a_type == A_FLOAT)) { // argument is a float
- shmem_offset = atom_getfloatarg(0,argc,argv);
- index_max = x->segment_size - shmem_offset;
- if (index_max > argc-1) index_max = argc-1;
- for (i=0; i<index_max ; i++)
- x->share_memory[i+shmem_offset]=atom_getfloatarg(i+1, argc, argv);
+ else if (argv[1].a_type == A_FLOAT) { // argument is a float
+ index_max = x->segment_size - shmem_offset;
+ if (index_max > argc-1) index_max = argc-1;
+ for (i=0; i<index_max ; i++)
+ x->share_memory[i+shmem_offset]=atom_getfloatarg(i+1, argc, argv);
+ }
}
}