PageRenderTime 27ms CodeModel.GetById 23ms app.highlight 3ms RepoModel.GetById 0ms app.codeStats 0ms

/extlibs/SFML/src/SFML/System/Thread.cpp

https://bitbucket.org/hugoruscitti/pilascpp
C++ | 110 lines | 53 code | 24 blank | 33 comment | 3 complexity | 1dd8acf76b371ee5bfae00d6a69790ed MD5 | raw file
  1////////////////////////////////////////////////////////////
  2//
  3// SFML - Simple and Fast Multimedia Library
  4// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
  5//
  6// This software is provided 'as-is', without any express or implied warranty.
  7// In no event will the authors be held liable for any damages arising from the use of this software.
  8//
  9// Permission is granted to anyone to use this software for any purpose,
 10// including commercial applications, and to alter it and redistribute it freely,
 11// subject to the following restrictions:
 12//
 13// 1. The origin of this software must not be misrepresented;
 14//    you must not claim that you wrote the original software.
 15//    If you use this software in a product, an acknowledgment
 16//    in the product documentation would be appreciated but is not required.
 17//
 18// 2. Altered source versions must be plainly marked as such,
 19//    and must not be misrepresented as being the original software.
 20//
 21// 3. This notice may not be removed or altered from any source distribution.
 22//
 23////////////////////////////////////////////////////////////
 24
 25////////////////////////////////////////////////////////////
 26// Headers
 27////////////////////////////////////////////////////////////
 28#include <SFML/System/Thread.hpp>
 29
 30
 31#if defined(SFML_SYSTEM_WINDOWS)
 32
 33    #include <SFML/System/Win32/ThreadImpl.hpp>
 34
 35#else
 36
 37    #include <SFML/System/Unix/ThreadImpl.hpp>
 38
 39#endif
 40
 41
 42namespace sf
 43{
 44////////////////////////////////////////////////////////////
 45Thread::Thread() :
 46myThreadImpl(NULL),
 47myFunction  (NULL),
 48myUserData  (NULL)
 49{
 50
 51}
 52
 53
 54////////////////////////////////////////////////////////////
 55Thread::Thread(Thread::FuncType function, void* userData) :
 56myThreadImpl(NULL),
 57myFunction  (function),
 58myUserData  (userData)
 59{
 60
 61}
 62
 63
 64////////////////////////////////////////////////////////////
 65Thread::~Thread()
 66{
 67    Wait();
 68}
 69
 70
 71////////////////////////////////////////////////////////////
 72void Thread::Launch()
 73{
 74    Wait();
 75    myThreadImpl = new priv::ThreadImpl(this);
 76}
 77
 78
 79////////////////////////////////////////////////////////////
 80void Thread::Wait()
 81{
 82    if (myThreadImpl)
 83    {
 84        myThreadImpl->Wait();
 85        delete myThreadImpl;
 86        myThreadImpl = NULL;
 87    }
 88}
 89
 90
 91////////////////////////////////////////////////////////////
 92void Thread::Terminate()
 93{
 94    if (myThreadImpl)
 95    {
 96        myThreadImpl->Terminate();
 97        delete myThreadImpl;
 98        myThreadImpl = NULL;
 99    }
100}
101
102
103////////////////////////////////////////////////////////////
104void Thread::Run()
105{
106    if (myFunction)
107        myFunction(myUserData);
108}
109
110} // namespace sf