~cosme/ubuntu/precise/freeimage/freeimage-3.15.1

« back to all changes in this revision

Viewing changes to Source/OpenEXR/IlmThread/IlmThreadSemaphore.h

  • Committer: Bazaar Package Importer
  • Author(s): Cosme Domínguez Díaz
  • Date: 2010-07-20 13:42:15 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20100720134215-xt1454zaedv3b604
Tags: 3.13.1-0ubuntu1
* New upstream release. Closes: (LP: #607800)
 - Updated debian/freeimage-get-orig-source script.
 - Removing no longer necessary debian/patches/* and
   the patch system in debian/rules.
 - Updated debian/rules to work with the new Makefiles.
 - Drop from -O3 to -O2 and use lzma compression saves
   ~10 MB of free space. 
* lintian stuff
 - fixed debhelper-but-no-misc-depends
 - fixed ldconfig-symlink-missing-for-shlib

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
///////////////////////////////////////////////////////////////////////////
2
 
//
3
 
// Copyright (c) 2005, Industrial Light & Magic, a division of Lucas
4
 
// Digital Ltd. LLC
5
 
// 
6
 
// All rights reserved.
7
 
// 
8
 
// Redistribution and use in source and binary forms, with or without
9
 
// modification, are permitted provided that the following conditions are
10
 
// met:
11
 
// *       Redistributions of source code must retain the above copyright
12
 
// notice, this list of conditions and the following disclaimer.
13
 
// *       Redistributions in binary form must reproduce the above
14
 
// copyright notice, this list of conditions and the following disclaimer
15
 
// in the documentation and/or other materials provided with the
16
 
// distribution.
17
 
// *       Neither the name of Industrial Light & Magic nor the names of
18
 
// its contributors may be used to endorse or promote products derived
19
 
// from this software without specific prior written permission. 
20
 
// 
21
 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
 
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
 
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
 
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
 
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
 
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
 
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
 
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
 
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
 
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
 
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
 
//
33
 
///////////////////////////////////////////////////////////////////////////
34
 
 
35
 
#ifndef INCLUDED_ILM_THREAD_SEMAPHORE_H
36
 
#define INCLUDED_ILM_THREAD_SEMAPHORE_H
37
 
 
38
 
//-----------------------------------------------------------------------------
39
 
//
40
 
//      class Semaphore -- a wrapper class for
41
 
//      system-dependent counting semaphores
42
 
//
43
 
//-----------------------------------------------------------------------------
44
 
 
45
 
#include "IlmBaseConfig.h"
46
 
 
47
 
#if defined _WIN32 || defined _WIN64
48
 
    #ifdef NOMINMAX
49
 
        #undef NOMINMAX
50
 
    #endif
51
 
    #define NOMINMAX
52
 
    #include <windows.h>
53
 
#elif HAVE_PTHREAD && !HAVE_POSIX_SEMAPHORES
54
 
    #include <pthread.h>
55
 
#elif HAVE_PTHREAD && HAVE_POSIX_SEMAPHORES
56
 
    #include <semaphore.h>
57
 
#endif
58
 
 
59
 
namespace IlmThread {
60
 
 
61
 
 
62
 
class Semaphore
63
 
{
64
 
  public:
65
 
 
66
 
    Semaphore (unsigned int value = 0);
67
 
    virtual ~Semaphore();
68
 
 
69
 
    void        wait();
70
 
    bool        tryWait();
71
 
    void        post();
72
 
    int         value() const;
73
 
 
74
 
  private:
75
 
 
76
 
    #if defined _WIN32 || defined _WIN64
77
 
 
78
 
        mutable HANDLE _semaphore;
79
 
 
80
 
    #elif HAVE_PTHREAD && !HAVE_POSIX_SEMAPHORES
81
 
 
82
 
        //
83
 
        // If the platform has Posix threads but no semapohores,
84
 
        // then we implement them ourselves using condition variables
85
 
        //
86
 
 
87
 
        struct sema_t
88
 
        {
89
 
            unsigned int count;
90
 
            unsigned long numWaiting;
91
 
            pthread_mutex_t mutex;
92
 
            pthread_cond_t nonZero;
93
 
        };
94
 
 
95
 
        mutable sema_t _semaphore;
96
 
 
97
 
    #elif HAVE_PTHREAD && HAVE_POSIX_SEMAPHORES
98
 
 
99
 
        mutable sem_t _semaphore;
100
 
 
101
 
    #endif
102
 
 
103
 
    void operator = (const Semaphore& s);       // not implemented
104
 
    Semaphore (const Semaphore& s);             // not implemented
105
 
};
106
 
 
107
 
 
108
 
} // namespace IlmThread
109
 
 
110
 
#endif
 
1
///////////////////////////////////////////////////////////////////////////
 
2
//
 
3
// Copyright (c) 2005, Industrial Light & Magic, a division of Lucas
 
4
// Digital Ltd. LLC
 
5
// 
 
6
// All rights reserved.
 
7
// 
 
8
// Redistribution and use in source and binary forms, with or without
 
9
// modification, are permitted provided that the following conditions are
 
10
// met:
 
11
// *       Redistributions of source code must retain the above copyright
 
12
// notice, this list of conditions and the following disclaimer.
 
13
// *       Redistributions in binary form must reproduce the above
 
14
// copyright notice, this list of conditions and the following disclaimer
 
15
// in the documentation and/or other materials provided with the
 
16
// distribution.
 
17
// *       Neither the name of Industrial Light & Magic nor the names of
 
18
// its contributors may be used to endorse or promote products derived
 
19
// from this software without specific prior written permission. 
 
20
// 
 
21
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 
22
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 
23
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 
24
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 
25
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 
26
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 
27
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
28
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
29
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
30
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
31
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
32
//
 
33
///////////////////////////////////////////////////////////////////////////
 
34
 
 
35
#ifndef INCLUDED_ILM_THREAD_SEMAPHORE_H
 
36
#define INCLUDED_ILM_THREAD_SEMAPHORE_H
 
37
 
 
38
//-----------------------------------------------------------------------------
 
39
//
 
40
//      class Semaphore -- a wrapper class for
 
41
//      system-dependent counting semaphores
 
42
//
 
43
//-----------------------------------------------------------------------------
 
44
 
 
45
#include "IlmBaseConfig.h"
 
46
 
 
47
#if defined _WIN32 || defined _WIN64
 
48
    #ifdef NOMINMAX
 
49
        #undef NOMINMAX
 
50
    #endif
 
51
    #define NOMINMAX
 
52
    #include <windows.h>
 
53
#elif HAVE_PTHREAD && !HAVE_POSIX_SEMAPHORES
 
54
    #include <pthread.h>
 
55
#elif HAVE_PTHREAD && HAVE_POSIX_SEMAPHORES
 
56
    #include <semaphore.h>
 
57
#endif
 
58
 
 
59
namespace IlmThread {
 
60
 
 
61
 
 
62
class Semaphore
 
63
{
 
64
  public:
 
65
 
 
66
    Semaphore (unsigned int value = 0);
 
67
    virtual ~Semaphore();
 
68
 
 
69
    void        wait();
 
70
    bool        tryWait();
 
71
    void        post();
 
72
    int         value() const;
 
73
 
 
74
  private:
 
75
 
 
76
    #if defined _WIN32 || defined _WIN64
 
77
 
 
78
        mutable HANDLE _semaphore;
 
79
 
 
80
    #elif HAVE_PTHREAD && !HAVE_POSIX_SEMAPHORES
 
81
 
 
82
        //
 
83
        // If the platform has Posix threads but no semapohores,
 
84
        // then we implement them ourselves using condition variables
 
85
        //
 
86
 
 
87
        struct sema_t
 
88
        {
 
89
            unsigned int count;
 
90
            unsigned long numWaiting;
 
91
            pthread_mutex_t mutex;
 
92
            pthread_cond_t nonZero;
 
93
        };
 
94
 
 
95
        mutable sema_t _semaphore;
 
96
 
 
97
    #elif HAVE_PTHREAD && HAVE_POSIX_SEMAPHORES
 
98
 
 
99
        mutable sem_t _semaphore;
 
100
 
 
101
    #endif
 
102
 
 
103
    void operator = (const Semaphore& s);       // not implemented
 
104
    Semaphore (const Semaphore& s);             // not implemented
 
105
};
 
106
 
 
107
 
 
108
} // namespace IlmThread
 
109
 
 
110
#endif