From 15c958e32fe65cee077672439c1c51d071c853e8 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 2 Dec 2015 16:09:51 +0100 Subject: [PATCH] consolidate semaphore implementation (part three) --- libs/pbd/glib_semaphore.cc | 68 ----------------------------------- libs/pbd/pbd/glib_semaphore.h | 57 ----------------------------- libs/pbd/wscript | 1 - 3 files changed, 126 deletions(-) delete mode 100644 libs/pbd/glib_semaphore.cc delete mode 100644 libs/pbd/pbd/glib_semaphore.h diff --git a/libs/pbd/glib_semaphore.cc b/libs/pbd/glib_semaphore.cc deleted file mode 100644 index 7565e0c069..0000000000 --- a/libs/pbd/glib_semaphore.cc +++ /dev/null @@ -1,68 +0,0 @@ -/* - Copyright (C) 2010 Tim Mayberry - - This program 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 program 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. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#include "pbd/glib_semaphore.h" - -namespace PBD { - -GlibSemaphore::GlibSemaphore (gint initial_val) - : - m_counter(initial_val) -{ } - -void -GlibSemaphore::wait () -{ - Glib::Threads::Mutex::Lock guard (m_mutex); - - while (m_counter.get() < 1) { - m_cond.wait(m_mutex); - } - - // this shouldn't need to be inside the lock - --m_counter; -} - -bool -GlibSemaphore::try_wait () -{ - if (!m_mutex.trylock()) - { - return false; - } - // lock successful - while (m_counter.get() < 1) { - m_cond.wait(m_mutex); - } - - // the order of these should not matter - --m_counter; - m_mutex.unlock(); - return true; -} - -void -GlibSemaphore::post () -{ - // atomic, no locking required - ++m_counter; - m_cond.signal(); -} - -} // namespace PBD diff --git a/libs/pbd/pbd/glib_semaphore.h b/libs/pbd/pbd/glib_semaphore.h deleted file mode 100644 index 7f96120d7d..0000000000 --- a/libs/pbd/pbd/glib_semaphore.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - Copyright (C) 2010 Tim Mayberry - - This program 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 program 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. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#ifndef PBD_GLIB_SEMAPHORE_H -#define PBD_GLIB_SEMAPHORE_H - -#include - -#include "pbd/libpbd_visibility.h" -#include "atomic_counter.h" - -namespace PBD { - -class LIBPBD_API GlibSemaphore -{ - - // prevent copying and assignment - GlibSemaphore(const GlibSemaphore& sema); - GlibSemaphore& operator= (const GlibSemaphore& sema); - -public: - - GlibSemaphore (gint initial_val = 1); - - void wait (); - - bool try_wait (); - - void post (); - -private: - - atomic_counter m_counter; - Glib::Threads::Cond m_cond; - Glib::Threads::Mutex m_mutex; - -}; - -} // namespace PBD - -#endif // PBD_SEMAPHORE_H diff --git a/libs/pbd/wscript b/libs/pbd/wscript index 00cc6634eb..0d52004432 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -50,7 +50,6 @@ libpbd_sources = [ 'ffs.cc', 'file_utils.cc', 'fpu.cc', - 'glib_semaphore.cc', 'id.cc', 'locale_guard.cc', 'localtime_r.cc',