From e33693d763d2aeb350b87ca6468cdd5515a8382d Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Fri, 06 Mar 2009 08:29:03 +0000 Subject: Rename string_* to text_*; move text_* related code to text.h --- diff --git a/src/spin.c b/src/spin.c index 8d03ca9..a879ae4 100644 --- a/src/spin.c +++ b/src/spin.c @@ -140,7 +140,7 @@ spin_in(Econtext *self, const gchar *str_) if (str_ == NULL || *str_ == 0) return; - Text *str = string_new(str_); + Text *str = text_new(str_); if (self->in_queue) { @@ -148,42 +148,28 @@ spin_in(Econtext *self, const gchar *str_) return; } - gsize orig_frame_len = str->frame_len; + gboolean chunked = FALSE; pthread_mutex_lock(&self->lock); - while (str->frame_len && self->in->state == IN) + while (!text_eot(str) && self->in->state == IN) { Espin *spin = self->in; - - GST_DEBUG("[%p] str->offset=%ld str->frame_len=%ld " - "spin->text.offset=%ld spin->text.frame_len=%ld", self, - str->offset, str->frame_len, - spin->text.offset, spin->text.frame_len); - - string_chunk(str, &spin->text, SPIN_FRAME_SIZE); + text_chunk(str, &spin->text, SPIN_FRAME_SIZE); spin->state = PROCESS; - - GST_DEBUG("[%p] str->offset=%ld str->frame_len=%ld " - "spin->text.offset=%ld spin->text.frame_len=%ld", self, - str->offset, str->frame_len, - spin->text.offset, spin->text.frame_len); - spinning(self->queue, &self->in); + chunked = TRUE; } - if ((orig_frame_len != str->frame_len) && (self->state & INPROCESS) == 0) + if (chunked && (self->state & INPROCESS) == 0) { - GST_DEBUG("[%p] orig_frame_len=%ld str->len=%ld", self, orig_frame_len, - str->len); - self->state |= INPROCESS; process_push(self); } pthread_mutex_unlock(&self->lock); - if (!string_nil(str)) + if (!text_eot(str)) self->in_queue = g_slist_append(self->in_queue, str); } @@ -267,9 +253,11 @@ process(void *data) gboolean next = FALSE; pthread_mutex_unlock(&process_lock); - gchar *text = spin->text.body + spin->text.offset; - gchar last_char = text[spin->text.frame_len]; - text[spin->text.frame_len] = 0; + gchar *text = text_first(&spin->text); + gchar *last = text_last(&spin->text); + + gchar last_char = *last; + *last = 0; GST_DEBUG("[%p] text=%s", context, text); @@ -278,7 +266,7 @@ process(void *data) process_espeak_cb(text, spin->sound, context->closure); spin->sound_pos = 0; - text[spin->text.frame_len] = last_char; + *last = last_char; pthread_mutex_lock(&context->lock); spin->state = OUT; diff --git a/src/text.h b/src/text.h index 0261848..1983a70 100644 --- a/src/text.h +++ b/src/text.h @@ -29,7 +29,7 @@ typedef struct } Text; inline Text* -string_new(const gchar *src) +text_new(const gchar *src) { if (!src) return NULL; @@ -52,7 +52,7 @@ string_new(const gchar *src) } inline void -string_chunk(Text *src, Text *dst, gsize len) +text_chunk(Text *src, Text *dst, gsize len) { memcpy(dst, src, sizeof(Text)); @@ -76,32 +76,45 @@ string_chunk(Text *src, Text *dst, gsize len) src->offset += dst->frame_len; src->frame_len -= dst->frame_len; - GST_DEBUG("[%p] len=%ld dst_len=%ld dst_last=%ld", src, len, dst_len, - dst_last-dst->body); + GST_DEBUG("[%p] len=%ld dst_len=%ld dst_last=%ld " + "src->offset=%ld src->frame_len=%ld", src, len, dst_len, + dst_last-dst->body, src->offset, src->frame_len); +} + +inline gchar* +text_first(Text *self) +{ + return self->body + self->offset; +} + +inline gchar* +text_last(Text *self) +{ + return text_first(self) + self->frame_len; } inline gboolean -string_nil(Text *str) +text_eot(Text *str) { - return str->frame_len == 0; +return str->frame_len == 0; } inline void string_unref(Text *str) { - if (string_nil(str)) - return; +if (text_eot(str)) + return; - gpointer data = NULL; +gpointer data = NULL; - if (str->offset + str->frame_len >= str->len) - data = str->body - sizeof(Text); +if (str->offset + str->frame_len >= str->len) + data = str->body - sizeof(Text); - memset(str, 0, sizeof(Text)); +memset(str, 0, sizeof(Text)); - GST_DEBUG("[%p]", data); +GST_DEBUG("[%p]", data); - g_free(data); +g_free(data); } #endif -- cgit v0.9.1