Browse Source

[0.99.20] messagebuffer fixes

git-svn-id: svn+ssh://jackaudio.org/trunk/jack@817 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.109.0
joq 21 years ago
parent
commit
0247554f10
6 changed files with 21 additions and 16 deletions
  1. +1
    -1
      configure.ac
  2. +1
    -1
      jack/Makefile.am
  3. +1
    -1
      jack/messagebuffer.h
  4. +4
    -0
      jackd/engine.c
  5. +0
    -3
      jackd/jackd.c
  6. +14
    -10
      libjack/messagebuffer.c

+ 1
- 1
configure.ac View File

@@ -15,7 +15,7 @@ dnl changes are made
dnl ---
JACK_MAJOR_VERSION=0
JACK_MINOR_VERSION=99
JACK_MICRO_VERSION=19
JACK_MICRO_VERSION=20

dnl ---
dnl HOWTO: updating the jack protocol version


+ 1
- 1
jack/Makefile.am View File

@@ -21,7 +21,7 @@ noinst_HEADERS = \
internal.h \
jslist.h \
memops.h \
f messagebuffer.h \
messagebuffer.h \
pool.h \
port.h \
ringbuffer.h \


+ 1
- 1
jack/messagebuffer.h View File

@@ -36,7 +36,7 @@
jack_messagebuffer_add(msg); \
}

void jack_messagebuffer_init(const char *prefix);
void jack_messagebuffer_init();
void jack_messagebuffer_exit();

void jack_messagebuffer_add(const char *msg);


+ 4
- 0
jackd/engine.c View File

@@ -1543,6 +1543,10 @@ jack_engine_new (int realtime, int rtpriority, int do_mlock, int do_unlock,
uid_t uid = getuid ();
uid_t euid = geteuid ();
#endif /* USE_CAPABILITIES */

/* start a thread to display messages from realtime threads */
jack_messagebuffer_init();

jack_init_time ();

engine = (jack_engine_t *) malloc (sizeof (jack_engine_t));


+ 0
- 3
jackd/jackd.c View File

@@ -174,9 +174,6 @@ jack_main (jack_driver_desc_t * driver_desc, JSList * driver_params)
}
}
/* start a thread to display messages from realtime threads */
jack_messagebuffer_init("");

if (verbose) {
fprintf (stderr, "%d waiting for signals\n", getpid());
}


+ 14
- 10
libjack/messagebuffer.c View File

@@ -26,39 +26,42 @@

#include <jack/messagebuffer.h>

#define MB_BUFFERS 32 /* must be 2^n */
#define MB_BUFFERS 32 /* must be 2^n */

static char mb_buffers[MB_BUFFERS][MB_BUFFERSIZE];
static const char *mb_prefix;
static unsigned int mb_initialized = 0;
static unsigned int mb_inbuffer = 0;
static unsigned int mb_outbuffer = 0;
static pthread_t mb_writer_thread;

static void
mb_flush()
{
while (mb_outbuffer != mb_inbuffer) {
fputs(mb_buffers[mb_outbuffer], stderr);
mb_outbuffer = (mb_outbuffer + 1) & (MB_BUFFERS - 1);
}
}

static void *
mb_thread_func(void *arg)
{
while (mb_initialized) {
usleep(1000);
while (mb_outbuffer != mb_inbuffer) {
fprintf(stderr, "%s%s", mb_prefix,
mb_buffers[mb_outbuffer]);
mb_outbuffer = (mb_outbuffer + 1) & (MB_BUFFERS - 1);
}
mb_flush();
}

return NULL;
}

void
jack_messagebuffer_init (const char *prefix)
jack_messagebuffer_init ()
{
if (mb_initialized)
return;

mb_initialized = 1;

mb_prefix = prefix;
if (pthread_create(&mb_writer_thread, NULL, &mb_thread_func, NULL) != 0)
mb_initialized = 0;
}
@@ -71,7 +74,8 @@ jack_messagebuffer_exit ()

mb_initialized = 0;

pthread_join(&mb_writer_thread, NULL);
pthread_join(mb_writer_thread, NULL);
mb_flush();
}




Loading…
Cancel
Save