~ubuntu-branches/ubuntu/oneiric/lmms/oneiric

« back to all changes in this revision

Viewing changes to plugins/ladspa_effect/calf/src/calf/utils.h

  • Committer: Bazaar Package Importer
  • Author(s): Артём Попов
  • Date: 2011-02-14 20:58:36 UTC
  • mfrom: (1.1.10 upstream) (3.1.9 sid)
  • Revision ID: james.westby@ubuntu.com-20110214205836-2u41xus1d2mj8nfz
Tags: 0.4.10-1ubuntu1
* Merge from debian unstable (LP: #718801).  Remaining changes:
  - Replace build-dep on libwine-dev with wine1.2-dev to build
    against the newer Wine.

Show diffs side-by-side

added added

removed removed

Lines of Context:
65
65
    }
66
66
};
67
67
 
68
 
/// Exception-safe mutex lock
69
 
class ptlock
 
68
class ptlock_base
70
69
{
 
70
protected:
71
71
    ptmutex &mutex;
72
72
    bool locked;
 
73
 
 
74
    ptlock_base(ptmutex &_m)
 
75
    : mutex(_m)
 
76
    , locked(false)
 
77
    {
 
78
    }
73
79
    
74
80
public:
75
 
    ptlock(ptmutex &_m) : mutex(_m), locked(true)
 
81
    bool is_locked()
76
82
    {
77
 
        mutex.lock();
 
83
        return locked;
78
84
    }
79
85
    void unlock()
80
86
    {
85
91
    {
86
92
        locked = false;
87
93
    }
88
 
    ~ptlock()
 
94
    ~ptlock_base()
89
95
    {
90
96
        if (locked)
91
97
            mutex.unlock();
92
98
    }
93
99
};
94
100
 
 
101
/// Exception-safe mutex lock
 
102
class ptlock: public ptlock_base
 
103
{
 
104
public:
 
105
    ptlock(ptmutex &_m) : ptlock_base(_m)
 
106
    {
 
107
        locked = mutex.lock();
 
108
    }
 
109
};
 
110
 
 
111
/// Exception-safe polling mutex lock
 
112
class pttrylock: public ptlock_base
 
113
{
 
114
public:
 
115
    pttrylock(ptmutex &_m) : ptlock_base(_m)
 
116
    {
 
117
        locked = mutex.trylock();
 
118
    }
 
119
};
 
120
 
95
121
/// Exception-safe temporary assignment
96
122
template<class T, class Tref = T&>
97
123
class scope_assign