aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--iemnet.c35
-rw-r--r--iemnet.h6
2 files changed, 33 insertions, 8 deletions
diff --git a/iemnet.c b/iemnet.c
index 048c2a2..8f3ba53 100644
--- a/iemnet.c
+++ b/iemnet.c
@@ -24,6 +24,10 @@
#include "iemnet.h"
#include <stdlib.h>
+
+#include <pthread.h>
+
+
void iemnet__addrout(t_outlet*status_outlet, t_outlet*address_outlet,
long address, unsigned short port) {
@@ -133,19 +137,38 @@ void udpsend_setup(void);
void udpserver_setup(void);
#endif
-int iemnet_debuglevel_=0;
+static int iemnet_debuglevel_=0;
+static pthread_mutex_t debug_mtx = PTHREAD_MUTEX_INITIALIZER;
+
void iemnet_debuglevel(void*x, t_float f) {
+ static int firsttime=1;
#ifdef IEMNET_HAVE_DEBUG
- iemnet_debuglevel_=(int)f;
- post("iemnet: setting debuglevel to %d",iemnet_debuglevel_);
+ int debuglevel=(int)f;
+
+ pthread_mutex_lock(&debug_mtx);
+ iemnet_debuglevel_=debuglevel;
+ pthread_mutex_unlock(&debug_mtx);
+
+ post("iemnet: setting debuglevel to %d", debuglevel);
#else
- static int firsttime=1;
if(firsttime)post("iemnet compiled without debug!");
- firsttime=0;
#endif
+ firsttime=0;
}
-
+int iemnet_debug(int debuglevel, const char*file, unsigned int line, const char*function) {
+#ifdef IEMNET_HAVE_DEBUG
+ int debuglevel_=0;
+ pthread_mutex_lock(&debug_mtx);
+ debuglevel_=iemnet_debuglevel_;
+ pthread_mutex_unlock(&debug_mtx);
+ if(debuglevel_ & debuglevel) {
+ startpost("[%s:%d#%d] ", function, line, debuglevel);
+ return 1;
+ }
+#endif
+ return 0;
+}
IEMNET_EXTERN void iemnet_setup(void) {
#ifdef _MSC_VER
diff --git a/iemnet.h b/iemnet.h
index 4aab051..93204cf 100644
--- a/iemnet.h
+++ b/iemnet.h
@@ -244,13 +244,15 @@ int iemnet__register(const char*name);
# define IEMNET_HAVE_DEBUG 1
#endif
-extern int iemnet_debuglevel_;
void iemnet_debuglevel(void*,t_float);
+int iemnet_debug(int debuglevel, const char*file, unsigned int line, const char*function);
#define DEBUGMETHOD(c) class_addmethod(c, (t_method)iemnet_debuglevel, gensym("debug"), A_FLOAT, 0)
+
+
#ifdef DEBUG
# undef DEBUG
-# define DEBUG if(iemnet_debuglevel_&DEBUGLEVEL)startpost("[%s:%d#%d]", __FUNCTION__, __LINE__, iemnet_debuglevel_), post
+# define DEBUG if(iemnet_debug(DEBUGLEVEL, __FILE__, __LINE__, __FUNCTION__))post
#else
static void debug_dummy(const char *format, ...) {;}
# define DEBUG debug_dummy