[beast: 49/95] BSE: gsldatahandle: use Rapicorn Spinlock.
- From: Tim Janik <timj src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [beast: 49/95] BSE: gsldatahandle: use Rapicorn Spinlock.
- Date: Mon, 25 Mar 2013 00:40:37 +0000 (UTC)
commit f68b4699aff5cb24c4b02f7fa0ecdd7606462fe4
Author: Tim Janik <timj gnu org>
Date: Tue Mar 19 03:13:42 2013 +0100
BSE: gsldatahandle: use Rapicorn Spinlock.
bse/gsldatahandle.cc | 54 +++++++++++++++++++++++++-------------------------
bse/gsldatahandle.hh | 2 +-
2 files changed, 28 insertions(+), 28 deletions(-)
---
diff --git a/bse/gsldatahandle.cc b/bse/gsldatahandle.cc
index f3e4425..d94d885 100644
--- a/bse/gsldatahandle.cc
+++ b/bse/gsldatahandle.cc
@@ -22,7 +22,7 @@ gsl_data_handle_common_init (GslDataHandle *dhandle,
g_return_val_if_fail (dhandle->name == NULL, FALSE);
g_return_val_if_fail (dhandle->ref_count == 0, FALSE);
dhandle->name = g_strdup (file_name);
- sfi_mutex_init (&dhandle->mutex);
+ new (&dhandle->spinlock) Bse::Spinlock();
dhandle->ref_count = 1;
dhandle->open_count = 0;
memset (&dhandle->setup, 0, sizeof (dhandle->setup));
@@ -33,9 +33,9 @@ gsl_data_handle_ref (GslDataHandle *dhandle)
{
g_return_val_if_fail (dhandle != NULL, NULL);
g_return_val_if_fail (dhandle->ref_count > 0, NULL);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
dhandle->ref_count++;
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
return dhandle;
}
void
@@ -46,7 +46,7 @@ gsl_data_handle_common_free (GslDataHandle *dhandle)
g_return_if_fail (dhandle->ref_count == 0);
g_free (dhandle->name);
dhandle->name = NULL;
- sfi_mutex_destroy (&dhandle->mutex);
+ dhandle->spinlock.~Spinlock();
}
void
gsl_data_handle_unref (GslDataHandle *dhandle)
@@ -54,10 +54,10 @@ gsl_data_handle_unref (GslDataHandle *dhandle)
gboolean destroy;
g_return_if_fail (dhandle != NULL);
g_return_if_fail (dhandle->ref_count > 0);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
dhandle->ref_count--;
destroy = dhandle->ref_count == 0;
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
if (destroy)
{
g_return_if_fail (dhandle->open_count == 0);
@@ -69,7 +69,7 @@ gsl_data_handle_open (GslDataHandle *dhandle)
{
g_return_val_if_fail (dhandle != NULL, BSE_ERROR_INTERNAL);
g_return_val_if_fail (dhandle->ref_count > 0, BSE_ERROR_INTERNAL);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
if (dhandle->open_count == 0)
{
GslDataHandleSetup setup = { 0, };
@@ -84,7 +84,7 @@ gsl_data_handle_open (GslDataHandle *dhandle)
}
if (error)
{
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
if (setup.xinfos)
g_warning ("%s: leaking xinfos after open() (%p)", "GslDataHandle", dhandle->vtable->open);
return error;
@@ -95,7 +95,7 @@ gsl_data_handle_open (GslDataHandle *dhandle)
}
else
dhandle->open_count++;
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
return BSE_ERROR_NONE;
}
void
@@ -105,7 +105,7 @@ gsl_data_handle_close (GslDataHandle *dhandle)
g_return_if_fail (dhandle != NULL);
g_return_if_fail (dhandle->ref_count > 0);
g_return_if_fail (dhandle->open_count > 0);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
dhandle->open_count--;
need_unref = !dhandle->open_count;
if (!dhandle->open_count)
@@ -115,7 +115,7 @@ gsl_data_handle_close (GslDataHandle *dhandle)
g_warning ("%s: leaking xinfos after close() (%p)", "GslDataHandle", dhandle->vtable->close);
memset (&dhandle->setup, 0, sizeof (dhandle->setup));
}
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
if (need_unref)
gsl_data_handle_unref (dhandle);
}
@@ -134,18 +134,18 @@ gsl_data_handle_read (GslDataHandle *dhandle,
g_return_val_if_fail (values != NULL, -1);
g_return_val_if_fail (value_offset < dhandle->setup.n_values, -1);
n_values = MIN (n_values, dhandle->setup.n_values - value_offset);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
l = dhandle->vtable->read (dhandle, value_offset, n_values, values);
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
return l;
}
GslDataHandle*
gsl_data_handle_get_source (GslDataHandle *dhandle)
{
g_return_val_if_fail (dhandle != NULL, NULL);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
GslDataHandle *src_handle = dhandle->vtable->get_source ? dhandle->vtable->get_source (dhandle) : NULL;
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
return src_handle;
}
/**
@@ -176,9 +176,9 @@ gsl_data_handle_get_state_length (GslDataHandle *dhandle)
{
g_return_val_if_fail (dhandle != NULL, -1);
g_return_val_if_fail (dhandle->open_count > 0, -1);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
int64 state_length = dhandle->vtable->get_state_length ? dhandle->vtable->get_state_length (dhandle) : 0;
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
return state_length;
}
int64
@@ -187,9 +187,9 @@ gsl_data_handle_length (GslDataHandle *dhandle)
int64 l;
g_return_val_if_fail (dhandle != NULL, 0);
g_return_val_if_fail (dhandle->open_count > 0, 0);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
l = dhandle->open_count ? dhandle->setup.n_values : 0;
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
return l;
}
guint
@@ -198,9 +198,9 @@ gsl_data_handle_n_channels (GslDataHandle *dhandle)
guint n;
g_return_val_if_fail (dhandle != NULL, 0);
g_return_val_if_fail (dhandle->open_count > 0, 0);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
n = dhandle->open_count ? dhandle->setup.n_channels : 0;
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
return n;
}
guint
@@ -222,9 +222,9 @@ gsl_data_handle_osc_freq (GslDataHandle *dhandle)
{
g_return_val_if_fail (dhandle != NULL, 0);
g_return_val_if_fail (dhandle->open_count > 0, 0);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
gfloat f = bse_xinfos_get_float (dhandle->setup.xinfos, "osc-freq");
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
return f;
}
gfloat
@@ -232,9 +232,9 @@ gsl_data_handle_volume (GslDataHandle *dhandle)
{
g_return_val_if_fail (dhandle != NULL, 0);
g_return_val_if_fail (dhandle->open_count > 0, 0);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
gfloat f = bse_xinfos_get_float (dhandle->setup.xinfos, "volume");
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
/* no (or invalid) volume setting means that we replay without scaling */
if (f <= 0 || f > 1.0)
f = 1.0;
@@ -245,9 +245,9 @@ gsl_data_handle_fine_tune (GslDataHandle *dhandle)
{
g_return_val_if_fail (dhandle != NULL, 0);
g_return_val_if_fail (dhandle->open_count > 0, 0);
- GSL_SPIN_LOCK (&dhandle->mutex);
+ dhandle->spinlock.lock();
gfloat f = bse_xinfos_get_float (dhandle->setup.xinfos, "fine-tune");
- GSL_SPIN_UNLOCK (&dhandle->mutex);
+ dhandle->spinlock.unlock();
return f;
}
const gchar*
diff --git a/bse/gsldatahandle.hh b/bse/gsldatahandle.hh
index c113158..33f5eb1 100644
--- a/bse/gsldatahandle.hh
+++ b/bse/gsldatahandle.hh
@@ -21,7 +21,7 @@ struct _GslDataHandle
GslDataHandleFuncs *vtable;
gchar *name;
/* common members */
- BirnetMutex mutex;
+ Bse::Spinlock spinlock;
guint ref_count;
guint open_count;
/* opened data handle setup (open_count > 0) */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]