1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-05-31 11:15:31 +03:00
occt/src/Standard/Standard_Mutex.cxx
kgv 1ce0716bb1 0027811: Configuration - allow building TKOpenGl with OpenGL ES on Windows
OpenGl_ShaderManager::prepareStdProgramFboBlit() now tries using extension
GL_EXT_frag_depth within OpenGL ES 2.0 when OpenGL ES 3.0 is not available.
OpenGl_View::blitBuffers() now disables Depth test
when copying depth values is not supported by OpenGL ES 2.0 hardware.

Fixed building for UWP with SDK 10.0.10240.0
Fixed building TKService, TKV3d and TKOpenGl for UWP.

OSD_Environment now defines global environment map
for emulating desktop behavior on UWP.
2016-09-08 10:46:58 +03:00

86 lines
2.3 KiB
C++

// Created on: 2006-04-13
// Created by: Andrey BETENEV
// Copyright (c) 2006-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <Standard_Mutex.hxx>
#include <Standard_OStream.hxx>
#include <errno.h>
//=============================================
// Standard_Mutex::Standard_Mutex
//=============================================
Standard_Mutex::Standard_Mutex ()
{
#if (defined(_WIN32) || defined(__WIN32__))
InitializeCriticalSection (&myMutex);
#else
pthread_mutexattr_t anAttr;
pthread_mutexattr_init (&anAttr);
pthread_mutexattr_settype (&anAttr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init (&myMutex, &anAttr);
pthread_mutexattr_destroy (&anAttr);
#endif
}
//=============================================
// Standard_Mutex::~Standard_Mutex
//=============================================
Standard_Mutex::~Standard_Mutex ()
{
#if (defined(_WIN32) || defined(__WIN32__))
DeleteCriticalSection (&myMutex);
#else
pthread_mutex_destroy (&myMutex);
#endif
}
//=============================================
// Standard_Mutex::Lock
//=============================================
void Standard_Mutex::Lock ()
{
#if (defined(_WIN32) || defined(__WIN32__))
EnterCriticalSection (&myMutex);
#else
pthread_mutex_lock (&myMutex);
#endif
}
//=============================================
// Standard_Mutex::TryLock
//=============================================
Standard_Boolean Standard_Mutex::TryLock ()
{
#if (defined(_WIN32) || defined(__WIN32__))
return (TryEnterCriticalSection (&myMutex) != 0);
#else
return (pthread_mutex_trylock (&myMutex) != EBUSY);
#endif
}
//=============================================
// Standard_Mutex::DestroyCallback
//=============================================
void Standard_Mutex::DestroyCallback ()
{
UnregisterCallback();
Unlock();
}