From c2e1e65c0f837dcdd34cf39a097ea85a4741c149 Mon Sep 17 00:00:00 2001 From: dooglus Date: Sat, 23 Feb 2008 11:09:53 +0000 Subject: [PATCH] Use _mutex_win32.h on Windows. git-svn-id: http://svn.voria.com/code@1807 1f10aa63-cdf2-0310-b900-c93c546f37ac --- ETL/trunk/ETL/Makefile.am | 2 +- ETL/trunk/ETL/_handle.h | 9 +---- ETL/trunk/ETL/_mutex_pthreads_simple.h | 64 ++++++++++++++++++++++++++++++++++ ETL/trunk/ETL/_mutex_simple.h | 64 ---------------------------------- ETL/trunk/ETL/handle | 8 +++++ ETL/trunk/ETL/mutex | 8 ++++- 6 files changed, 81 insertions(+), 74 deletions(-) create mode 100644 ETL/trunk/ETL/_mutex_pthreads_simple.h delete mode 100644 ETL/trunk/ETL/_mutex_simple.h diff --git a/ETL/trunk/ETL/Makefile.am b/ETL/trunk/ETL/Makefile.am index 997054a..68ccdda 100644 --- a/ETL/trunk/ETL/Makefile.am +++ b/ETL/trunk/ETL/Makefile.am @@ -6,7 +6,7 @@ CLEANFILES=$(top_builddir)/ETL/etl_profile.h etldir = $(includedir)/ETL -etl_HEADERS= value _value.h rect _rect.h misc _misc.h ref_count _ref_count.h angle fastangle handle ipc thread fixed random clock hermite calculus stringf trivial spline _stringf.h _bspline.h _calculus.h _mutex_null.h _hermite.h _curve_func.h _clock_base.h _clock_system.h _clock_gettimeofday.h _random.h _angle.h _fastangle.h _curve.h _handle.h _thread.h _mutex_pthreads.h _mutex_win32.h _condition.h _rwlock.h smach _smach.h _trivial.h _fixed.h etl_config.h $(top_builddir)/ETL/etl_profile.h _fastangle_tables.h bezier _bezier.h _bezier_angle.h _status.h status pen _pen.h boxblur _boxblur.h gaussian _gaussian.h surface _surface.h smart_ptr _smart_ptr.h _clock_win32hpcount.h mutex _mutex_simple.h +etl_HEADERS= value _value.h rect _rect.h misc _misc.h ref_count _ref_count.h angle fastangle handle ipc thread fixed random clock hermite calculus stringf trivial spline _stringf.h _bspline.h _calculus.h _mutex_null.h _hermite.h _curve_func.h _clock_base.h _clock_system.h _clock_gettimeofday.h _random.h _angle.h _fastangle.h _curve.h _handle.h _thread.h _mutex_pthreads.h _mutex_win32.h _condition.h _rwlock.h smach _smach.h _trivial.h _fixed.h etl_config.h $(top_builddir)/ETL/etl_profile.h _fastangle_tables.h bezier _bezier.h _bezier_angle.h _status.h status pen _pen.h boxblur _boxblur.h gaussian _gaussian.h surface _surface.h smart_ptr _smart_ptr.h _clock_win32hpcount.h mutex _mutex_pthreads_simple.h $(top_builddir)/ETL/etl_profile.h:$(top_builddir)/ETL/etl_profile_.h sed "s/PACKAGE/ETL/g;" < $(top_builddir)/ETL/etl_profile_.h > $(top_builddir)/ETL/etl_profile.h diff --git a/ETL/trunk/ETL/_handle.h b/ETL/trunk/ETL/_handle.h index 862c914..0137f8f 100644 --- a/ETL/trunk/ETL/_handle.h +++ b/ETL/trunk/ETL/_handle.h @@ -6,7 +6,7 @@ ** ** \legal ** Copyright (c) 2002 Robert B. Quattlebaum Jr. -** Copyright (c) 2007 Chris Moore +** Copyright (c) 2007, 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -32,15 +32,8 @@ /* === H E A D E R S ======================================================= */ -// include the next line in an attempt to increase stability -#define ETL_LOCK_REFCOUNTS - #include -#ifdef ETL_LOCK_REFCOUNTS -# include "_mutex_simple.h" -#endif - /* === M A C R O S ========================================================= */ /* === T Y P E D E F S ===================================================== */ diff --git a/ETL/trunk/ETL/_mutex_pthreads_simple.h b/ETL/trunk/ETL/_mutex_pthreads_simple.h new file mode 100644 index 0000000..d95b327 --- /dev/null +++ b/ETL/trunk/ETL/_mutex_pthreads_simple.h @@ -0,0 +1,64 @@ +/*! ======================================================================== +** Extended Template and Library +** Mutex Abstraction Class Implementation +** $Id$ +** +** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2008 Chris Moore +** +** This package is free software; you can redistribute it and/or +** modify it under the terms of the GNU General Public License as +** published by the Free Software Foundation; either version 2 of +** the License, or (at your option) any later version. +** +** This package is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** General Public License for more details. +** +** === N O T E S =========================================================== +** +** This is an internal header file, included by other ETL headers. +** You should not attempt to use it directly. +** +** ========================================================================= */ + +/* === S T A R T =========================================================== */ + +#ifndef __ETL__MUTEX_PTHREADS_SIMPLE_H_ +#define __ETL__MUTEX_PTHREADS_SIMPLE_H_ + +/* === H E A D E R S ======================================================= */ + +#include + +/* === M A C R O S ========================================================= */ + +/* === C L A S S E S & S T R U C T S ======================================= */ + +_ETL_BEGIN_NAMESPACE + +class mutex +{ + pthread_mutex_t mtx; +public: + mutex() { pthread_mutex_init(&mtx,NULL); } + ~mutex() { pthread_mutex_destroy(&mtx); } + void lock_mutex() { pthread_mutex_lock(&mtx); } + void unlock_mutex() { pthread_mutex_unlock(&mtx); } + + //! Exception-safe mutex lock class + class lock + { + mutex *_mtx; + public: + lock(mutex &x):_mtx(&x) { _mtx->lock_mutex(); } + ~lock() { _mtx->unlock_mutex(); } + }; +}; + +_ETL_END_NAMESPACE + +/* === E N D =============================================================== */ + +#endif diff --git a/ETL/trunk/ETL/_mutex_simple.h b/ETL/trunk/ETL/_mutex_simple.h deleted file mode 100644 index b7500ba..0000000 --- a/ETL/trunk/ETL/_mutex_simple.h +++ /dev/null @@ -1,64 +0,0 @@ -/*! ======================================================================== -** Extended Template and Library -** Mutex Abstraction Class Implementation -** $Id$ -** -** Copyright (c) 2002 Robert B. Quattlebaum Jr. -** Copyright (c) 2008 Chris Moore -** -** This package is free software; you can redistribute it and/or -** modify it under the terms of the GNU General Public License as -** published by the Free Software Foundation; either version 2 of -** the License, or (at your option) any later version. -** -** This package is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -** General Public License for more details. -** -** === N O T E S =========================================================== -** -** This is an internal header file, included by other ETL headers. -** You should not attempt to use it directly. -** -** ========================================================================= */ - -/* === S T A R T =========================================================== */ - -#ifndef __ETL__MUTEX_SIMPLE_H_ -#define __ETL__MUTEX_SIMPLE_H_ - -/* === H E A D E R S ======================================================= */ - -#include - -/* === M A C R O S ========================================================= */ - -/* === C L A S S E S & S T R U C T S ======================================= */ - -_ETL_BEGIN_NAMESPACE - -class mutex -{ - pthread_mutex_t mtx; -public: - mutex() { pthread_mutex_init(&mtx,NULL); } - ~mutex() { pthread_mutex_destroy(&mtx); } - void lock_mutex() { pthread_mutex_lock(&mtx); } - void unlock_mutex() { pthread_mutex_unlock(&mtx); } - - //! Exception-safe mutex lock class - class lock - { - mutex *_mtx; - public: - lock(mutex &x):_mtx(&x) { _mtx->lock_mutex(); } - ~lock() { _mtx->unlock_mutex(); } - }; -}; - -_ETL_END_NAMESPACE - -/* === E N D =============================================================== */ - -#endif diff --git a/ETL/trunk/ETL/handle b/ETL/trunk/ETL/handle index 9c3347e..010f5c2 100644 --- a/ETL/trunk/ETL/handle +++ b/ETL/trunk/ETL/handle @@ -6,6 +6,7 @@ ** ** \legal ** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -29,6 +30,13 @@ #include "etl_config.h" +// include the next line in an attempt to increase stability +#define ETL_LOCK_REFCOUNTS + +#ifdef ETL_LOCK_REFCOUNTS +# include "mutex" +#endif + #include "_handle.h" /* === E N D =============================================================== */ diff --git a/ETL/trunk/ETL/mutex b/ETL/trunk/ETL/mutex index 4bc5d54..f7a9939 100644 --- a/ETL/trunk/ETL/mutex +++ b/ETL/trunk/ETL/mutex @@ -29,7 +29,13 @@ #include "etl_config.h" -#include "_mutex_simple.h" +#ifdef HAVE_LIBPTHREAD +# include "_mutex_pthreads_simple.h" +#else +#ifdef _WIN32 +# include "_mutex_win32.h" +#endif +#endif /* === E N D =============================================================== */ -- 2.7.4