31 typedef struct xmms_ringbuf_priv_St {
44 static gpointer xmms_ringbuf_xform_thread (gpointer data);
56 priv->buffer_lock = g_mutex_new ();
58 priv->state_cond = g_cond_new ();
59 priv->state_lock = g_mutex_new ();
60 priv->thread = g_thread_create (xmms_ringbuf_xform_thread, xform, TRUE, NULL);
73 g_mutex_lock (priv->state_lock);
77 g_cond_wait (priv->state_cond, priv->state_lock);
79 g_mutex_unlock (priv->state_lock);
81 g_thread_join (priv->thread);
102 methods.
init = xmms_ringbuf_plugin_init;
103 methods.
destroy = xmms_ringbuf_plugin_destroy;
104 methods.
read = xmms_ringbuf_plugin_read;
111 ringbuf_plugin = xform_plugin;
136 }
else if (res == -1) {
138 g_mutex_lock (priv->state_lock);
147 xmms_ringbuf_xform_thread (gpointer data)
154 g_mutex_lock (priv->state_lock);
158 g_cond_signal (priv->state_cond);
160 g_mutex_unlock (priv->state_lock);
162 g_mutex_lock (priv->state_lock);
167 g_cond_signal (priv->state_cond);
169 g_cond_wait (priv->state_cond, priv->state_lock);
172 XMMS_DBG (
"thread: state: %d", priv->state);
175 g_cond_signal (priv->state_cond);
176 g_mutex_unlock (priv->state_lock);
185 xmms_ringbuf_plugin_setup);