Home | History | Annotate | Download | only in decpp
      1 /*-------------------------------------------------------------------------
      2  * drawElements C++ Base Library
      3  * -----------------------------
      4  *
      5  * Copyright 2014 The Android Open Source Project
      6  *
      7  * Licensed under the Apache License, Version 2.0 (the "License");
      8  * you may not use this file except in compliance with the License.
      9  * You may obtain a copy of the License at
     10  *
     11  *      http://www.apache.org/licenses/LICENSE-2.0
     12  *
     13  * Unless required by applicable law or agreed to in writing, software
     14  * distributed under the License is distributed on an "AS IS" BASIS,
     15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16  * See the License for the specific language governing permissions and
     17  * limitations under the License.
     18  *
     19  *//*!
     20  * \file
     21  * \brief deMutex C++ wrapper.
     22  *//*--------------------------------------------------------------------*/
     23 
     24 #include "deMutex.hpp"
     25 #include "deMemory.h"
     26 
     27 #include <new>
     28 
     29 namespace de
     30 {
     31 
     32 /*--------------------------------------------------------------------*//*!
     33  * \brief Construct mutual exclusion lock.
     34  * \param flags Mutex flags as described in deMutex.h.
     35  *				DE_MUTEX_RECURSIVE flag enables recursive mutex.
     36  *//*--------------------------------------------------------------------*/
     37 Mutex::Mutex (deUint32 flags)
     38 	: m_mutex(0)
     39 {
     40 	deMutexAttributes attribs;
     41 	deMemset(&attribs, 0, sizeof(attribs));
     42 	attribs.flags = flags;
     43 
     44 	m_mutex = deMutex_create(&attribs);
     45 	if (!m_mutex)
     46 		throw std::bad_alloc();
     47 }
     48 
     49 Mutex::~Mutex (void)
     50 {
     51 	deMutex_destroy(m_mutex);
     52 }
     53 
     54 } // de
     55