fix locking in dvb file player
[enigma2.git] / lib / base / elock.h
index 6a47f8c9cec9f7541f544d9f349553f8c740bec8..f886473b1baa36f8eb831abb564d46c2682df49a 100644 (file)
@@ -7,7 +7,7 @@ class singleLock
 {
        pthread_mutex_t &lock;
 public:
-       singleLock( pthread_mutex_t &m )
+       singleLock(pthread_mutex_t &m )
                :lock(m)
        {
                pthread_mutex_lock(&lock);
@@ -18,6 +18,36 @@ public:
        }
 };
 
+class eSingleLock
+{
+       friend class eSingleLocker;
+       pthread_mutex_t m_lock;
+public:
+       eSingleLock()
+       {
+               pthread_mutex_init(&m_lock, 0);
+       }
+       ~eSingleLock()
+       {
+               pthread_mutex_destroy(&m_lock);
+       }
+};
+
+class eSingleLocker
+{
+       eSingleLock &m_lock;
+public:
+       eSingleLocker(eSingleLock &m)
+               : m_lock(m)
+       {
+               pthread_mutex_lock(&m_lock.m_lock);
+       }
+       ~eSingleLocker()
+       {
+               pthread_mutex_unlock(&m_lock.m_lock);
+       }
+};
+
 class eLock
 {
        pthread_mutex_t mutex;