Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20843
Modified Files:
Tag: devel_0_37
g_array.c
Log Message:
fixed array lock for msvc
Index: g_array.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_array.c,v
retrieving revision 1.1.1.3.2.9
retrieving revision 1.1.1.3.2.10
diff -C2 -d -r1.1.1.3.2.9 -r1.1.1.3.2.10
*** g_array.c 17 Jun 2004 21:03:54 -0000 1.1.1.3.2.9
--- g_array.c 2 Sep 2004 08:32:47 -0000 1.1.1.3.2.10
***************
*** 174,177 ****
--- 174,182 ----
t_template *template;
char *str;
+
+ #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
+ pthread_mutexattr_t mutex_attr;
+ #endif /* GARRAY_THREAD_LOCK */
+
if (s == &s_)
{
***************
*** 224,228 ****
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
x->x_mutex=getbytes(sizeof(pthread_mutex_t));
- pthread_mutexattr_t mutex_attr;
pthread_mutexattr_init (&mutex_attr);
pthread_mutexattr_settype(&mutex_attr,PTHREAD_MUTEX_RECURSIVE);
--- 229,232 ----
***************
*** 315,318 ****
--- 319,323 ----
static void garray_free(t_garray *x)
{
+ t_pd *x2;
#ifdef GARRAY_THREAD_LOCK
garray_lock(x);/* TB: thread lock */
***************
*** 320,324 ****
freebytes(x->x_mutex,sizeof(pthread_mutex_t));
#endif
- t_pd *x2;
gfxstub_deleteforkey(x);
pd_unbind(&x->x_gobj.g_pd, x->x_realname);
--- 325,328 ----
***************
*** 852,859 ****
t_template *garray_template(t_garray *x)
{
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! t_template *template = template_findbyname(x->x_templatesym);
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_unlock(x);
--- 856,864 ----
t_template *garray_template(t_garray *x)
{
+ t_template *template;
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! template = template_findbyname(x->x_templatesym);
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_unlock(x);
***************
*** 881,890 ****
int garray_getfloatarray(t_garray *x, int *size, t_float **vec)
{
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! t_template *template = garray_template(x);
! int yonset, type;
! t_symbol *arraytype;
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
--- 886,897 ----
int garray_getfloatarray(t_garray *x, int *size, t_float **vec)
{
+ t_template *template;
+ int yonset, type;
+ t_symbol *arraytype;
+
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! template = garray_template(x);
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
***************
*** 911,921 ****
float garray_get(t_garray *x, t_symbol *s, t_int indx)
{
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! t_template *template = garray_template(x);
! int yonset, type;
! t_symbol *arraytype;
! float ret;
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
--- 918,930 ----
float garray_get(t_garray *x, t_symbol *s, t_int indx)
{
+ t_template *template;
+ int yonset, type;
+ t_symbol *arraytype;
+ float ret;
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
!
! template = garray_template(x);
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
***************
*** 953,962 ****
static void garray_const(t_garray *x, t_floatarg g)
{
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! t_template *template = garray_template(x);
! int yonset, type, i;
! t_symbol *arraytype;
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
--- 962,972 ----
static void garray_const(t_garray *x, t_floatarg g)
{
+ int yonset, type, i;
+ t_symbol *arraytype;
+ t_template *template;
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! template = garray_template(x);
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
***************
*** 975,985 ****
int nsin, t_float *vsin, int sineflag)
{
! #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
! garray_lock(x);
! #endif
! t_template *template = garray_template(x);
int yonset, type, i, j;
t_symbol *arraytype;
double phase, phaseincr, fj;
if (npoints == 0)
npoints = 512; /* dunno what a good default would be... */
--- 985,996 ----
int nsin, t_float *vsin, int sineflag)
{
! t_template *template;
int yonset, type, i, j;
t_symbol *arraytype;
double phase, phaseincr, fj;
+ #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
+ garray_lock(x);
+ #endif
+ template = garray_template(x);
if (npoints == 0)
npoints = 512; /* dunno what a good default would be... */
***************
*** 1015,1025 ****
static void garray_sinesum(t_garray *x, t_symbol *s, int argc, t_atom *argv)
{
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! t_template *template = garray_template(x);
! t_float *svec = (t_float *)t_getbytes(sizeof(t_float) * argc);
! int npoints, i;
if (argc < 2)
{
--- 1026,1038 ----
static void garray_sinesum(t_garray *x, t_symbol *s, int argc, t_atom *argv)
{
+ t_template *template;
+ t_float *svec;
+ int npoints, i;
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! template = garray_template(x);
! svec = (t_float *)t_getbytes(sizeof(t_float) * argc);
if (argc < 2)
{
***************
*** 1046,1056 ****
static void garray_cosinesum(t_garray *x, t_symbol *s, int argc, t_atom *argv)
{
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! t_template *template = garray_template(x);
!
! t_float *svec = (t_float *)t_getbytes(sizeof(t_float) * argc);
! int npoints, i;
if (argc < 2)
{
--- 1059,1070 ----
static void garray_cosinesum(t_garray *x, t_symbol *s, int argc, t_atom *argv)
{
+ t_template *template;
+ t_float *svec;
+ int npoints, i;
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! template = garray_template(x);
! svec = (t_float *)t_getbytes(sizeof(t_float) * argc);
if (argc < 2)
{
***************
*** 1078,1088 ****
static void garray_normalize(t_garray *x, t_float f)
{
! #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
! garray_lock(x);
! #endif
! t_template *template = garray_template(x);
int yonset, type, npoints, i;
double maxv, renormer;
t_symbol *arraytype;
if (f <= 0)
--- 1092,1103 ----
static void garray_normalize(t_garray *x, t_float f)
{
! t_template *template;
int yonset, type, npoints, i;
double maxv, renormer;
t_symbol *arraytype;
+ #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
+ garray_lock(x);
+ #endif
+ template = garray_template(x);
if (f <= 0)
***************
*** 1123,1133 ****
static void garray_list(t_garray *x, t_symbol *s, int argc, t_atom *argv)
{
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! t_template *template = garray_template(x);
! int yonset, type, i;
! t_symbol *arraytype;
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
--- 1138,1149 ----
static void garray_list(t_garray *x, t_symbol *s, int argc, t_atom *argv)
{
+ t_template *template;
+ int yonset, type, i;
+ t_symbol *arraytype;
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
! template = garray_template(x);
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
***************
*** 1240,1252 ****
static void garray_read(t_garray *x, t_symbol *filename)
{
! #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
! garray_lock(x);
! #endif
! int nelem = x->x_n, filedesc;
FILE *fd;
char buf[MAXPDSTRING], *bufptr;
! t_template *template = garray_template(x);
int yonset, type, i;
t_symbol *arraytype;
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
--- 1256,1270 ----
static void garray_read(t_garray *x, t_symbol *filename)
{
! int nelem, filedesc;
FILE *fd;
char buf[MAXPDSTRING], *bufptr;
! t_template *template;
int yonset, type, i;
t_symbol *arraytype;
+ #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
+ garray_lock(x);
+ #endif
+ nelem = x->x_n;
+ template = garray_template(x);
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
***************
*** 1302,1309 ****
t_symbol *endian, t_floatarg fskip)
{
- #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
- garray_lock(x);
- #endif
-
int skip = fskip, filedesc;
int i, nelem;
--- 1320,1323 ----
***************
*** 1314,1317 ****
--- 1328,1334 ----
int cpubig = garray_ambigendian(), swap = 0;
char c = endian->s_name[0];
+ #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
+ garray_lock(x);
+ #endif
if (c == 'b')
{
***************
*** 1381,1393 ****
static void garray_write(t_garray *x, t_symbol *filename)
{
- #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
- garray_lock(x);
- #endif
-
FILE *fd;
char buf[MAXPDSTRING];
! t_template *template = garray_template(x);
int yonset, type, i;
t_symbol *arraytype;
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
--- 1398,1411 ----
static void garray_write(t_garray *x, t_symbol *filename)
{
FILE *fd;
char buf[MAXPDSTRING];
! t_template *template;
int yonset, type, i;
t_symbol *arraytype;
+ #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
+ garray_lock(x);
+ #endif
+
+ template = garray_template(x);
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
***************
*** 1444,1452 ****
static void garray_write16(t_garray *x, t_symbol *filename, t_symbol *format)
{
! #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
! garray_lock(x);
! #endif
!
! t_template *template = garray_template(x);
int yonset, type, i;
t_symbol *arraytype;
--- 1462,1466 ----
static void garray_write16(t_garray *x, t_symbol *filename, t_symbol *format)
{
! t_template *template;
int yonset, type, i;
t_symbol *arraytype;
***************
*** 1456,1459 ****
--- 1470,1479 ----
int swap = garray_ambigendian(); /* wave is only little endian */
int intbuf;
+
+ #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
+ garray_lock(x);
+ #endif
+
+ template = garray_template(x);
strncpy(filenamebuf, filename->s_name, MAXPDSTRING-10);
filenamebuf[MAXPDSTRING-10] = 0;
***************
*** 1537,1548 ****
void garray_resize(t_garray *x, t_floatarg f)
{
! #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
! garray_lock(x);
! #endif
! int was = x->x_n, elemsize;
t_glist *gl;
int dspwas;
int n = f;
char *nvec;
if (n < 1) n = 1;
--- 1557,1569 ----
void garray_resize(t_garray *x, t_floatarg f)
{
! int was, elemsize;
t_glist *gl;
int dspwas;
int n = f;
char *nvec;
+ #ifdef GARRAY_THREAD_LOCK /* TB: array lock */
+ garray_lock(x);
+ #endif
+ was = x->x_n;
if (n < 1) n = 1;