Files
mcpe/source/client/common/CThread.cpp
iProgramInCpp 9a24abc603 Improve Survival Mode + others (#56)
* * Undo some of the changes done in the "* Work on survival mode." commit.
* TEST_SURVIVAL_MODE is now on by default.

* * Dying no longer crashes the game.

* * Death seems to work ok.

* * Improve some of the damage code.

* x

* work

* Fixed the Makefile (#54)

* * Finally fix the crack texture appearing to flicker/restart

* * Add VS2010 as an optional target.

Fix build with VS2010 (both windows_vs and xenon_vs).

* * Disable survival mode. Getting ready to merge now!

---------

Co-authored-by: Alexander Argentakis <38327951+MFDGaming@users.noreply.github.com>
2023-08-16 22:32:09 +03:00

64 lines
1.4 KiB
C++

/********************************************************************
Minecraft: Pocket Edition - Decompilation Project
Copyright (C) 2023 iProgramInCpp
The following code is licensed under the BSD 1 clause license.
SPDX-License-Identifier: BSD-1-Clause
********************************************************************/
#include "CThread.hpp"
#include "client/common/Utils.hpp"
#if defined(_WIN32)
#define WIN32_LEAN_AND_MEAN
#include <Windows.h> // for Sleep()
#else
#include <unistd.h>
#endif
void CThread::sleep(uint32_t ms)
{
#ifdef _WIN32
Sleep(ms);
#else
usleep(1000 * ms);
#endif
}
CThread::CThread(CThreadFunction func, void* param)
{
m_func = func;
#ifdef USE_CPP11_THREADS
std::thread thr(func, param);
m_thrd.swap(thr);
#elif defined(USE_WIN32_THREADS)
DWORD dwThreadId = 0;
m_thrd = CreateThread(
NULL, // not used
0, // initial stack size
func, // thread function
param, // thread argument
0, // creation option
&dwThreadId // thread identifier (but does it really matter if I'm the one managing them...?)
);
#else
pthread_attr_init(&m_thrd_attr);
pthread_attr_setdetachstate(&m_thrd_attr, 1);
pthread_create(&m_thrd, &m_thrd_attr, m_func, param);
#endif
}
CThread::~CThread()
{
#ifdef USE_CPP11_THREADS
m_thrd.join();
#elif defined(USE_WIN32_THREADS)
WaitForSingleObject(m_thrd, INFINITE);
CloseHandle(m_thrd);
#else
pthread_join(m_thrd, 0);
pthread_attr_destroy(&m_thrd_attr);
#endif
}