source: trunk/src/HaliteUpdateLock.hpp @ 424

Revision 424, 1.3 KB checked in by Eoin, 12 years ago (diff)

Web seed and Dht node add dialog half done.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2008.
3// Distributed under the Boost Software License, Version 1.0.
4//    (See accompanying file LICENSE_1_0.txt or copy at
5//          http://www.boost.org/LICENSE_1_0.txt)
6
7#pragma once
8
9namespace hal
10{
11
12template<class T>
13class mutex_update_lock
14{
15public:
16        mutex_update_lock(T& window) :
17                window_(window),
18                lock_(window_.mutex_)
19        {
20                ++window_.update_lock_;
21
22//              window_.LockWindowUpdate(true);
23        }
24       
25        ~mutex_update_lock()
26        {
27                if (!--window_.update_lock_)
28                        unlock();
29        }
30       
31        void unlock()
32        {
33//              window_.LockWindowUpdate(false);
34//              window_.InvalidateRect(NULL, true);
35        }
36       
37private:
38        T& window_;
39
40        mutex_t::scoped_lock lock_;
41};
42
43template<class T>
44class try_update_lock
45{
46public:
47        try_update_lock(T& window) :
48                window_(window),
49                lock_(window_.mutex_),
50                locked_(false)
51        {
52                if (0 == window_.update_lock_)
53                {
54                        locked_ =  true;
55                        ++window_.update_lock_;
56
57//                      window_.LockWindowUpdate(true);
58                }
59        }
60       
61        ~try_update_lock()
62        {
63                if (locked_ && !--window_.update_lock_)
64                        unlock();
65        }
66       
67        void unlock()
68        {
69//              window_.LockWindowUpdate(false);
70//              window_.InvalidateRect(NULL, true);
71        }
72       
73        operator bool() const { return locked_; }
74       
75private:
76        T& window_;
77
78        mutex_t::scoped_lock lock_;
79        bool locked_;
80};
81
82}
Note: See TracBrowser for help on using the repository browser.