Merge branch '4jcraft:dev' into dev

This commit is contained in:
ffqq 2026-03-28 03:48:04 +03:00 committed by GitHub
commit 016a3ebfb4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 169 additions and 137 deletions

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../Platform/stdafx.h"
#include "ServerLevel.h"
#include "../MinecraftServer.h"
@ -1570,7 +1573,7 @@ int ServerLevel::runUpdate(void* lpParam) {
}
PIXEndNamedEvent();
#ifdef __PS3__
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
#endif //__PS3__
}

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "Platform/stdafx.h"
#include "Minecraft.h"
#include "GameState/GameMode.h"
@ -780,7 +783,7 @@ void Minecraft::run()
{
this->toggleFullScreen();
}
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
*/
@ -795,7 +798,7 @@ void Minecraft::run()
achievementPopup->render();
Sleep(0); // 4J - was Thread.yield()
std::this_thread::sleep_for(std::chrono::milliseconds(0)); // 4J - was Thread.yield())
// if (Keyboard::isKeyDown(Keyboard::KEY_F7)) Display.update(); // 4J - removed condition
Display::update();
@ -2110,7 +2113,7 @@ void Minecraft::run_middle() {
{
this->toggleFullScreen();
}
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
*/
@ -2139,7 +2142,10 @@ void Minecraft::run_middle() {
achievementPopup->render();
PIXBeginNamedEvent(0, "Sleeping");
Sleep(0); // 4J - was Thread.yield()
std::this_thread::yield(); // 4jcraft added now that we have
// portable thread yield.
// std::this_thread::sleep_for(
// std::chrono::milliseconds(0)); // 4J - was Thread.yield())
PIXEndNamedEvent();
// if (Keyboard::isKeyDown(Keyboard::KEY_F7))

View file

@ -2,6 +2,8 @@
// #include "Minecraft.h"
#include <ctime>
#include <thread>
#include <chrono>
#include "Input/ConsoleInput.h"
#include "Level/DerivedServerLevel.h"
@ -229,7 +231,7 @@ bool MinecraftServer::initServer(__int64 seed, NetworkGameInitData* initData,
// 4J-JEV: Need to wait for levelGenerationOptions to load.
while (app.getLevelGenerationOptions() != NULL &&
!app.getLevelGenerationOptions()->hasLoadedData())
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
if (app.getLevelGenerationOptions() != NULL &&
!app.getLevelGenerationOptions()->ready()) {
@ -335,7 +337,7 @@ int MinecraftServer::runPostUpdate(void* lpParam) {
} else {
LeaveCriticalSection(&server->m_postProcessCS);
}
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
} while (!server->m_postUpdateTerminate &&
ShutdownManager::ShouldRun(ShutdownManager::ePostProcessThread));
// #ifndef __PS3__
@ -356,7 +358,7 @@ int MinecraftServer::runPostUpdate(void* lpParam) {
printf("processing request %00d\n",
server->m_postProcessRequests.size());
#endif
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
#endif
EnterCriticalSection(&server->m_postProcessCS);
}
@ -1078,7 +1080,7 @@ void MinecraftServer::stopServer(bool didInit) {
// files have completed saving.
#if defined(_DURANGO) || defined(__ORBIS__) || defined(__PSVITA__)
while (StorageManager.GetSaveState() != C4JStorage::ESaveGame_Idle) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
#endif
@ -1580,7 +1582,7 @@ void MinecraftServer::run(int64_t seed, void* lpParameter) {
app.SetXuiServerAction(i, eXuiServerAction_Idle);
}
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
}
// else
@ -1588,7 +1590,7 @@ void MinecraftServer::run(int64_t seed, void* lpParameter) {
// while (running)
// {
// handleConsoleInputs();
// Sleep(10);
// std::this_thread::sleep_for(std::chrono::milliseconds(10));
// }
// }
#if 0

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../Platform/stdafx.h"
#include "ServerChunkCache.h"
#include "../Level/ServerLevel.h"
@ -277,7 +280,7 @@ LevelChunk* ServerChunkCache::create(
}
#ifdef __PS3__
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
#endif // __PS3__
return chunk;
}

View file

@ -1,5 +1,4 @@

#include "../Minecraft.World/Platform/stdafx.h"
#include "../Minecraft.World/Platform/stdafx.h"
#include "../Minecraft.World/Recipes/Recipy.h"
#include "../Minecraft.Client/GameState/Options.h"
@ -69,6 +68,9 @@
#include <save_data_dialog.h>
#endif
#include <thread>
#include <chrono>
#include "Leaderboards/LeaderboardManager.h"
// CMinecraftApp app;
@ -4831,7 +4833,7 @@ int CMinecraftApp::SignoutExitWorldThreadProc(void* lpParameter) {
// We can't start/join a new game until the session is destroyed, so wait
// for it to be idle again
while (g_NetworkManager.IsInSession()) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
return S_OK;
@ -7724,7 +7726,7 @@ int CMinecraftApp::RemoteSaveThreadProc(void* lpParameter) {
eAppAction_WaitRemoteServerSaveComplete) {
// Tick all the games connections
pMinecraft->tickAllConnections();
Sleep(100);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
if (app.GetXuiAction(ProfileManager.GetPrimaryPad()) !=
@ -9227,7 +9229,8 @@ bool CMinecraftApp::RetrieveNextTMSPPContent() {
C4JStorage::ETMSStatus_Fail_ReadInProgress) {
app.DebugPrintf(
"TMSPP_ReadFile failed - read in progress\n");
Sleep(50);
std::this_thread::sleep_for(
std::chrono::milliseconds(50));
LeaveCriticalSection(&csTMSPPDownloadQueue);
return false;
}
@ -9266,7 +9269,8 @@ bool CMinecraftApp::RetrieveNextTMSPPContent() {
app.DebugPrintf(
"@@@@@@@@@@@@@@@@@ TMSPP_ReadFile failed - busy "
"(probably reading already)\n");
Sleep(50);
std::this_thread::sleep_for(
std::chrono::milliseconds(50));
LeaveCriticalSection(&csTMSPPDownloadQueue);
return false;
}

View file

@ -1,5 +1,7 @@
#include "../../stdafx.h"
#include <thread>
#include <chrono>
#include <cstdlib>
#include <np.h>
// #include <sys/ppu_thread.h>
@ -54,7 +56,7 @@ SonyLeaderboardManager::~SonyLeaderboardManager() {
// 4J-JEV: Wait for thread to stop and hope it doesn't take too long.
long long startShutdown = System::currentTimeMillis();
while (m_threadScoreboard->isRunning()) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
assert((System::currentTimeMillis() - startShutdown) < 16);
}
@ -87,7 +89,8 @@ int SonyLeaderboardManager::scoreboardThreadEntry(LPVOID lpParam) {
}
if ((!needsWriting) && (self->m_eStatsState != eStatsState_Getting)) {
Sleep(50); // 4J-JEV: When we're not reading or writing.
std::this_thread::sleep_for(std::chrono::milliseconds(
50)); // 4J-JEV: When we're not reading or writing.
}
} while ((self->m_running || self->m_eStatsState == eStatsState_Getting ||

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../../Minecraft.World/Platform/stdafx.h"
#include "../../Minecraft.World/Util/StringHelpers.h"
#include "../../Minecraft.World/Util/AABB.h"
@ -344,7 +347,7 @@ bool CGameNetworkManager::StartNetworkGame(Minecraft* minecraft,
// message I could find
pMinecraft->progressRenderer->progressStagePercentage(
g_NetworkManager.GetJoiningReadyPercentage());
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
if (changedMessage) {
pMinecraft->progressRenderer->progressStagePercentage(100);
@ -367,7 +370,7 @@ bool CGameNetworkManager::StartNetworkGame(Minecraft* minecraft,
// this
while (!app.DLCInstallProcessCompleted() && app.DLCInstallPending() &&
!g_NetworkManager.IsLeavingGame()) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
if (g_NetworkManager.IsLeavingGame()) {
MinecraftServer::HaltServer();
@ -448,7 +451,7 @@ bool CGameNetworkManager::StartNetworkGame(Minecraft* minecraft,
// 4J Stu - We were ticking this way too fast which could cause the
// connection to time out The connections should tick at 20 per second
Sleep(50);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
} while ((IsInSession() && !connection->isStarted() &&
!connection->isClosed() && !g_NetworkManager.IsLeavingGame()) ||
tPack->isLoadingData() ||
@ -548,7 +551,7 @@ bool CGameNetworkManager::StartNetworkGame(Minecraft* minecraft,
// 4J Stu - We were ticking this way too fast which could cause
// the connection to time out The connections should tick at 20
// per second
Sleep(50);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
app.DebugPrintf("<***> %d %d %d %d %d\n", IsInSession(),
!connection->isStarted(),
!connection->isClosed(),
@ -959,7 +962,7 @@ int CGameNetworkManager::RunNetworkGameThreadProc(void* lpParameter) {
while (tPack->isLoadingData() ||
(Minecraft::GetInstance()->skins->needsUIUpdate() ||
ui.IsReloadingSkin())) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
ui.CleanUpSkinReload();
if (app.GetDisconnectReason() == DisconnectPacket::eDisconnect_None) {
@ -977,7 +980,7 @@ int CGameNetworkManager::RunNetworkGameThreadProc(void* lpParameter) {
#ifdef __PSVITA__
// 4J-JEV: Wait for the loading/saving to finish.
while (StorageManager.GetSaveState() != C4JStorage::ESaveGame_Idle)
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
#endif
Tile::ReleaseThreadStorage();
@ -999,7 +1002,7 @@ int CGameNetworkManager::ServerThreadProc(void* lpParameter) {
param->texturePackId)) {
while ((Minecraft::GetInstance()->skins->needsUIUpdate() ||
ui.IsReloadingSkin())) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
param->levelGen->loadBaseSaveData();
}
@ -1037,7 +1040,7 @@ int CGameNetworkManager::ExitAndJoinFromInviteThreadProc(void* lpParam) {
UIScene_PauseMenu::_ExitWorld(NULL);
while (g_NetworkManager.IsInSession()) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
// Xbox should always be online when receiving invites - on PS3 we need to
@ -1242,7 +1245,7 @@ int CGameNetworkManager::ChangeSessionTypeThreadProc(void* lpParam) {
while (app.GetXuiServerAction(ProfileManager.GetPrimaryPad()) !=
eXuiServerAction_Idle &&
!MinecraftServer::serverHalted()) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
app.SetXuiServerAction(ProfileManager.GetPrimaryPad(),
eXuiServerAction_PauseServer, (void*)TRUE);
@ -1282,7 +1285,7 @@ int CGameNetworkManager::ChangeSessionTypeThreadProc(void* lpParam) {
// if we don't do this then there's an async thread running doing this,
// which could then finish at any inappropriate time later
while (s_pPlatformNetworkManager->IsAddingPlayer()) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
#endif
@ -1313,7 +1316,7 @@ int CGameNetworkManager::ChangeSessionTypeThreadProc(void* lpParam) {
// wait for the current session to end
while (g_NetworkManager.IsInSession()) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
// Reset this flag as the we don't need to know that we only lost the room
@ -1343,7 +1346,7 @@ int CGameNetworkManager::ChangeSessionTypeThreadProc(void* lpParam) {
// Wait for all the local players to rejoin the session
while (g_NetworkManager.GetPlayerCount() < numLocalPlayers) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
// Restore the network player of all the server players that are local
@ -1393,7 +1396,7 @@ int CGameNetworkManager::ChangeSessionTypeThreadProc(void* lpParam) {
// Make sure that we have transitioned through any joining/creating stages
// so we're actually ready to set to play
while (!s_pPlatformNetworkManager->IsReadyToPlayOrIdle()) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
#endif
@ -1402,7 +1405,7 @@ int CGameNetworkManager::ChangeSessionTypeThreadProc(void* lpParam) {
#ifndef _XBOX
// Wait until the message box has been closed
while (ui.IsSceneInStack(XUSER_INDEX_ANY, eUIScene_MessageBox)) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
#endif
@ -1952,7 +1955,7 @@ void CGameNetworkManager::HandleInviteWhenInMenus(
#if 0
while( waitHere )
{
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
#endif

View file

@ -1,8 +1,11 @@
#include <thread>
#include <chrono>
#include <sys/event.h>
#include "../../../Minecraft.World/Platform/stdafx.h"
#include "SonyCommerce.h"
#include "../../../../Platform/PS3/PS3Extras/ShutdownManager.h"
#include <sys/event.h>
bool SonyCommerce::m_bCommerceInitialised = false;
SceNpCommerce2SessionInfo SonyCommerce::m_sessionInfo;
@ -122,7 +125,8 @@ int SonyCommerce::TickLoop(void* lpParam) {
ShutdownManager::ShouldRun(ShutdownManager::eCommerceThread)) {
processEvent();
processMessage();
Sleep(16); // sleep for a frame
std::this_thread::sleep_for(
std::chrono::milliseconds(16)); // sleep for a frame
}
ShutdownManager::HasFinished(ShutdownManager::eCommerceThread);

View file

@ -1,4 +1,5 @@
#include <thread>
#include <chrono>
#include "../../../Minecraft.World/Platform/stdafx.h"
#include "SonyRemoteStorage.h"
@ -286,7 +287,7 @@ bool SonyRemoteStorage::shutdown() {
void SonyRemoteStorage::waitForStorageManagerIdle() {
C4JStorage::ESaveGameState storageState = StorageManager.GetSaveState();
while (storageState != C4JStorage::ESaveGame_Idle) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
// app.DebugPrintf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// >>>>> storageState = %d\n", storageState);
storageState = StorageManager.GetSaveState();

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../../Minecraft.World/Platform/stdafx.h"
#include "IUIScene_PauseMenu.h"
#include "UIScene.h"
@ -393,7 +396,7 @@ int IUIScene_PauseMenu::SaveWorldThreadProc(void* lpParameter) {
while (app.GetXuiServerAction(ProfileManager.GetPrimaryPad()) !=
eXuiServerAction_Idle &&
!MinecraftServer::serverHalted()) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
if (!MinecraftServer::serverHalted() && !app.GetChangingSessionType())
@ -661,7 +664,7 @@ void IUIScene_PauseMenu::_ExitWorld(void* lpParameter) {
// multiplayer client if host of the game will exit during the clients
// loading to created world.
while (g_NetworkManager.IsNetworkThreadRunning()) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
pMinecraft->setLevel(NULL, exitReasonStringId, nullptr, saveStats);
@ -681,7 +684,7 @@ void IUIScene_PauseMenu::_ExitWorld(void* lpParameter) {
// loads saved data We can't start/join a new game until the session is
// destroyed, so wait for it to be idle again
while (g_NetworkManager.IsInSession()) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
app.SetChangingSessionType(false);

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../../Minecraft.World/Platform/stdafx.h"
#include "UI.h"
#include "UIScene_LoadOrJoinMenu.h"
@ -2229,7 +2232,7 @@ int UIScene_LoadOrJoinMenu::MustSignInReturnedTexturePack(void* pParam,
while (commerceState != CConsoleMinecraftApp::eCommerce_State_Offline &&
commerceState != CConsoleMinecraftApp::eCommerce_State_Online &&
commerceState != CConsoleMinecraftApp::eCommerce_State_Error) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
commerceState = app.GetCommerceState();
}
@ -2852,7 +2855,7 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc(void* lpParameter) {
#if defined(_DURANGO) || defined(__ORBIS__)
while (StorageManager.GetSaveState() !=
C4JStorage::ESaveGame_Idle) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
StorageManager.Tick();
}
#endif
@ -2999,7 +3002,7 @@ int UIScene_LoadOrJoinMenu::DownloadSonyCrossSaveThreadProc(void* lpParameter) {
// waiting to dismiss the dialog
break;
}
Sleep(50);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
m_bSaveTransferRunning = false;
#ifdef __PS3__
@ -3151,7 +3154,7 @@ int UIScene_LoadOrJoinMenu::UploadSonyCrossSaveThreadProc(void* lpParameter) {
// waiting for dialog to be dismissed
break;
}
Sleep(50);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
return 0;
@ -3247,7 +3250,7 @@ int UIScene_LoadOrJoinMenu::DownloadXbox360SaveThreadProc(void* lpParameter) {
while (StorageManager.SaveTransferClearState() !=
C4JStorage::eSaveTransfer_Idle) {
Sleep(5);
std::this_thread::sleep_for(std::chrono::milliseconds(5));
}
pStateContainer->m_bSaveTransferInProgress = true;
@ -3432,7 +3435,7 @@ int UIScene_LoadOrJoinMenu::DownloadXbox360SaveThreadProc(void* lpParameter) {
while (StorageManager.GetSaveState() !=
C4JStorage::ESaveGame_Idle) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
// 4J Stu - DO NOT tick this here. The main thread should be
// the only place ticking the StorageManager. You WILL get
@ -3470,7 +3473,7 @@ int UIScene_LoadOrJoinMenu::DownloadXbox360SaveThreadProc(void* lpParameter) {
break;
}
Sleep(50);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
if (pStateContainer->m_bSaveTransferCancelled) {
@ -3517,7 +3520,7 @@ void UIScene_LoadOrJoinMenu::RequestFileSize(SaveTransferStateContainer* pClass,
IDS_SAVETRANSFER_TITLE_GET);
pMinecraft->progressRenderer->progressStage(
IDS_SAVETRANSFER_STAGE_GET_DETAILS);
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
pClass->m_eSaveTransferState =
StorageManager.SaveTransferGetDetails(
pClass->m_iPad, C4JStorage::eGlobalStorage_TitleUser,
@ -3573,7 +3576,7 @@ void UIScene_LoadOrJoinMenu::RequestFileData(SaveTransferStateContainer* pClass,
pMinecraft->progressRenderer->progressStart(
IDS_SAVETRANSFER_TITLE_GET);
pMinecraft->progressRenderer->progressStage(-1);
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
pClass->m_eSaveTransferState = StorageManager.SaveTransferGetData(
pClass->m_iPad, C4JStorage::eGlobalStorage_TitleUser, filename,
&UIScene_LoadOrJoinMenu::SaveTransferReturned,
@ -3740,7 +3743,7 @@ int UIScene_LoadOrJoinMenu::CopySaveThreadProc(void* lpParameter) {
bool bContinue = true;
do {
Sleep(100);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
ui.EnterCallbackIdCriticalSection();
pClass = (UIScene_LoadOrJoinMenu*)ui.GetSceneFromCallbackId(
(size_t)lpParameter);

View file

@ -1,9 +1,12 @@
// Minecraft.cpp : Defines the entry point for the application.
//
#include <assert.h>
#include <thread>
#include <chrono>
#include "../../Minecraft.World/Platform/stdafx.h"
#include "XUI_Death.h"
#include <assert.h>
#include "../../Minecraft.World/Util/AABB.h"
#include "../../Minecraft.World/Util/Vec3.h"
#include "../../Minecraft.World/Headers/net.minecraft.stats.h"
@ -234,7 +237,7 @@ int CScene_Death::RespawnThreadProc(void* lpParameter) {
// If we are offline, this should release straight away
// WaitForSingleObject( pMinecraft->m_hPlayerRespawned, INFINITE );
while (pMinecraft->localplayers[iPad]->GetPlayerRespawned() == false) {
Sleep(50);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
return S_OK;

View file

@ -7,6 +7,9 @@
#include "XUI_Ctrl_CraftIngredientSlot.h"
#include "XUI_XZP_Icons.h"
#include <thread>
#include <chrono>
LPCWSTR CScene_Leaderboards::m_TitleIconNameA[7] = {
L"XuiHSlot1", L"XuiHSlot2", L"XuiHSlot3", L"XuiHSlot4",
L"XuiHSlot5", L"XuiHSlot6", L"XuiHSlot7",
@ -283,7 +286,7 @@ HRESULT CScene_Leaderboards::OnDestroy() {
app.SetLiveLinkRequired(false);
while (m_isProcessingStatsRead) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
if (m_friends != NULL) delete[] m_friends;

View file

@ -1,6 +1,8 @@
#include "../../Minecraft.World/Platform/stdafx.h"
#include <xuiresource.h>
#include <xuiapp.h>
#include <thread>
#include <chrono>
#include <assert.h>
#include "../../Minecraft.World/Util/StringHelpers.h"
#include "../Tutorial/TutorialMode.h"
@ -2174,7 +2176,7 @@ bool CScene_MultiGameJoinLoad::WaitForTransferComplete(
// cancelled
return false;
}
Sleep(50);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
// update the progress
pMinecraft->progressRenderer->progressStagePercentage(
(unsigned int)(pClass->m_fProgress * 100.0f));

View file

@ -4,6 +4,8 @@
#include "../../Minecraft.World/Platform/stdafx.h"
#include <assert.h>
#include <thread>
#include <chrono>
#include "../../Minecraft.World/Util/AABB.h"
#include "../../Minecraft.World/Util/Vec3.h"
#include "../../Minecraft.World/Headers/net.minecraft.stats.h"
@ -1086,7 +1088,7 @@ int UIScene_PauseMenu::SaveWorldThreadProc(LPVOID lpParameter) {
while (app.GetXuiServerAction(ProfileManager.GetPrimaryPad()) !=
eXuiServerAction_Idle &&
!MinecraftServer::serverHalted()) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
if (!MinecraftServer::serverHalted() && !app.GetChangingSessionType())
@ -1295,7 +1297,7 @@ void UIScene_PauseMenu::_ExitWorld(LPVOID lpParameter) {
// multiplayer client if host of the game will exit during the clients
// loading to created world.
while (g_NetworkManager.IsNetworkThreadRunning()) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
pMinecraft->setLevel(NULL, exitReasonStringId, nullptr, saveStats);
@ -1315,7 +1317,7 @@ void UIScene_PauseMenu::_ExitWorld(LPVOID lpParameter) {
// loads saved data We can't start/join a new game until the session is
// destroyed, so wait for it to be idle again
while (g_NetworkManager.IsInSession()) {
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
app.SetChangingSessionType(false);

View file

@ -2,6 +2,8 @@
#include <xuiresource.h>
#include <xuiapp.h>
#include <assert.h>
#include <thread>
#include <chrono>
#include "XUI_Ctrl_4JList.h"
#include "XUI_Ctrl_4JIcon.h"
@ -363,7 +365,7 @@ int CScene_TransferToXboxOne::UploadSaveForXboxOneThreadProc(
// loop waiting for the write to complete
uiComplete = 0;
while (pClass->m_bWaitingForWrite && (hr == S_OK)) {
Sleep(50);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
uiComplete++;
if (uiComplete > 100) uiComplete = 100;
@ -380,7 +382,7 @@ int CScene_TransferToXboxOne::UploadSaveForXboxOneThreadProc(
// finish the bar
for (int i = uiComplete; i < 100; i++) {
Sleep(5);
std::this_thread::sleep_for(std::chrono::milliseconds(5));
pMinecraft->progressRenderer->progressStagePercentage(i);
}
@ -396,7 +398,7 @@ int CScene_TransferToXboxOne::UploadSaveForXboxOneThreadProc(
// sleep until we have the data
while (pClass->m_bSaveDataReceived == false) {
Sleep(50);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
// write the save to user TMS
@ -443,7 +445,7 @@ int CScene_TransferToXboxOne::UploadSaveForXboxOneThreadProc(
} else {
// loop waiting for the write to complete
while (pClass->m_bWaitingForWrite && (hr == S_OK)) {
Sleep(50);
std::this_thread::sleep_for(std::chrono::milliseconds(50));
}
uiComplete += uiPercentageChunk;
if (uiComplete > 100) uiComplete = 100;

View file

@ -5,7 +5,6 @@
#include <assert.h>
// #include <system_service.h>
#include <codecvt>
#if defined(__linux__) && defined(__GLIBC__)
#include <signal.h>
#include <execinfo.h>
@ -710,15 +709,6 @@ void CleanupDevice() {
}
#endif
int StartMinecraftThreadProc(void* lpParameter) {
AABB::UseDefaultThreadStorage();
Tesselator::CreateNewThreadStorage(1024 * 1024);
RenderManager.InitialiseContext();
Minecraft::start(std::wstring(), std::wstring());
delete Tesselator::getInstance();
return 0;
}
int main(int argc, const char* argv[]) {
#if defined(__linux__) && defined(__GLIBC__)
struct sigaction sa;
@ -1197,7 +1187,7 @@ void FreeRichPresenceStrings() {
vRichPresenceStrings.clear();
}
#ifdef MEMORY_TRACKING
#if 0 // #ifdef MEMORY_TRACKING
int totalAllocGen = 0;
std::unordered_map<int, int> allocCounts;

View file

@ -306,28 +306,6 @@ static inline ULONG TryEnterCriticalSection(
return pthread_mutex_trylock(CriticalSection) == 0;
}
// https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsalloc
static inline DWORD TlsAlloc(VOID) {
pthread_key_t key;
if (pthread_key_create(&key, NULL) == 0) return key;
return TLS_OUT_OF_INDEXES;
}
// https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsfree
static inline BOOL TlsFree(DWORD dwTlsIndex) {
return pthread_key_delete(dwTlsIndex) == 0;
}
// https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsgetvalue
static inline LPVOID TlsGetValue(DWORD dwTlsIndex) {
return pthread_getspecific(dwTlsIndex);
}
// https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlssetvalue
static inline BOOL TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue) {
return pthread_setspecific(dwTlsIndex, lpTlsValue) == 0;
}
// https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-globalmemorystatus
static inline VOID GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer) {
// TODO: Parse /proc/meminfo and set lpBuffer based on that. Probably will
@ -336,17 +314,7 @@ static inline VOID GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer) {
static inline DWORD GetLastError(VOID) { return errno; }
static inline VOID Sleep(DWORD dwMilliseconds) {
struct timespec ts;
ts.tv_nsec = (dwMilliseconds * 1000000) % 1000000000;
ts.tv_sec = dwMilliseconds / 1000;
int ret;
do {
ret = nanosleep(&ts, &ts);
} while (ret == -1 && errno == EINTR);
}
#ifdef __LP64__
static inline LONG64 InterlockedCompareExchangeRelease64(
LONG64 volatile* Destination, LONG64 Exchange, LONG64 Comperand) {
LONG64 expected = Comperand;
@ -354,6 +322,15 @@ static inline LONG64 InterlockedCompareExchangeRelease64(
__ATOMIC_RELEASE, __ATOMIC_RELAXED);
return expected;
}
#else
static inline LONG64 InterlockedCompareExchangeRelease(
LONG volatile* Destination, LONG Exchange, LONG Comperand) {
LONG expected = Comperand;
__atomic_compare_exchange_n(Destination, &expected, Exchange, false,
__ATOMIC_RELEASE, __ATOMIC_RELAXED);
return expected;
}
#endif
// internal helper: convert time_t to FILETIME (100ns intervals since
// 1601-01-01)

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../Platform/stdafx.h"
#include "LevelRenderer.h"
#include <cmath>
@ -2321,7 +2324,7 @@ bool LevelRenderer::updateDirtyChunks() {
}
LeaveCriticalSection(&m_csDirtyChunks);
#ifdef __PS3__
Sleep(5);
std::this_thread::sleep_for(std::chrono::milliseconds(5));
#endif // __PS3__
return false;
}

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../../Platform/stdafx.h"
#include "../../Util/StringHelpers.h"
#include "../../Util/PortableFileIO.h"
@ -664,7 +667,7 @@ void ConsoleSaveFileOriginal::Flush(bool autosave, bool updateThumbnail) {
// save/save-exiting so seems prudent to wait for idle
while (StorageManager.GetSaveState() != C4JStorage::ESaveGame_Idle) {
app.DebugPrintf("Flush wait\n");
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
#endif

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../../Platform/stdafx.h"
#include "../../Util/StringHelpers.h"
#include "../../Util/PortableFileIO.h"
@ -1298,7 +1301,7 @@ void ConsoleSaveFileSplit::Flush(bool autosave, bool updateThumbnail) {
#endif
app.DebugPrintf("Flush wait\n");
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
finalizeWrite();

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../../Platform/stdafx.h"
#include "../../Headers/net.minecraft.world.level.h"
#include "../../IO/Files/ConsoleSaveFileIO.h"
@ -388,9 +391,10 @@ int McRegionChunkStorage::runSaveThreadProc(void* lpParam) {
// If there was more than one thing in the queue last time we checked,
// then we want to spin round again soon Otherwise wait a bit longer
if ((lastQueueSize - 1) > 0)
Sleep(1); // Sleep 1 to yield
std::this_thread::sleep_for(
std::chrono::milliseconds(1)); // Sleep 1 to yield
else
Sleep(100);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
Compression::ReleaseThreadStorage();
@ -410,7 +414,7 @@ void McRegionChunkStorage::WaitForAllSaves() {
LeaveCriticalSection(&cs_memory);
while (queueSize > 0) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
EnterCriticalSection(&cs_memory);
queueSize = s_chunkDataQueue.size();
@ -424,7 +428,7 @@ void McRegionChunkStorage::WaitForAllSaves() {
LeaveCriticalSection(&cs_memory);
while (runningThreadCount > 0) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
EnterCriticalSection(&cs_memory);
runningThreadCount = s_runningThreadCount;
@ -444,7 +448,7 @@ void McRegionChunkStorage::WaitForSaves() {
if (queueSize > MAX_QUEUE_SIZE) {
while (queueSize > DESIRED_QUEUE_SIZE) {
Sleep(10);
std::this_thread::sleep_for(std::chrono::milliseconds(10));
EnterCriticalSection(&cs_memory);
queueSize = s_chunkDataQueue.size();

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../Platform/stdafx.h"
#include "../IO/Streams/InputOutputStream.h"
#include "Socket.h"
@ -577,7 +580,7 @@ int Connection::runRead(void* lpParam) {
while (con->readTick());
// try {
// Sleep(100L);
// std::this_thread::sleep_for(std::chrono::milliseconds(100L));
// TODO - 4J Stu - 1.8.2 changes these sleeps to 2L, but not sure
// whether we should do that as well
con->m_hWakeReadThread->WaitForSignal(100L);
@ -626,7 +629,7 @@ int Connection::runWrite(void* lpParam) {
ShutdownManager::ShouldRun(ShutdownManager::eConnectionWriteThreads)) {
while (con->writeTick());
// Sleep(100L);
// std::this_thread::sleep_for(std::chrono::milliseconds(100L));
// TODO - 4J Stu - 1.8.2 changes these sleeps to 2L, but not sure
// whether we should do that as well
waitResult = con->m_hWakeWriteThread->WaitForSignal(100L);

View file

@ -1,3 +1,6 @@
#include <thread>
#include <chrono>
#include "../Platform/stdafx.h"
#include "../IO/Streams/InputOutputStream.h"
#include "SocketAddress.h"
@ -250,7 +253,7 @@ int Socket::SocketInputStreamLocal::read() {
}
LeaveCriticalSection(&s_hostQueueLock[m_queueIdx]);
}
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
return -1;
}
@ -277,7 +280,7 @@ int Socket::SocketInputStreamLocal::read(byteArray b, unsigned int offset,
}
LeaveCriticalSection(&s_hostQueueLock[m_queueIdx]);
}
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
return -1;
}
@ -356,7 +359,7 @@ int Socket::SocketInputStreamNetwork::read() {
}
LeaveCriticalSection(&m_socket->m_queueLockNetwork[m_queueIdx]);
}
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
return -1;
}
@ -385,7 +388,7 @@ int Socket::SocketInputStreamNetwork::read(byteArray b, unsigned int offset,
}
LeaveCriticalSection(&m_socket->m_queueLockNetwork[m_queueIdx]);
}
Sleep(1);
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
return -1;
}

View file

@ -9,8 +9,8 @@
#include "HitResult.h"
#include "Util/Vec3.h"
unsigned int AABB::tlsIdx = 0;
AABB::ThreadStorage* AABB::tlsDefault = NULL;
thread_local AABB::ThreadStorage* AABB::m_tlsPool = nullptr;
AABB::ThreadStorage* AABB::m_tlsPoolDefault = nullptr;
AABB::ThreadStorage::ThreadStorage() {
pool = new AABB[POOL_SIZE]; // 4jcraft, needs to be deleted with delete[]
@ -23,21 +23,18 @@ AABB::ThreadStorage::~ThreadStorage() {
void AABB::CreateNewThreadStorage() {
ThreadStorage* tls = new ThreadStorage();
if (tlsDefault == NULL) {
tlsIdx = TlsAlloc();
tlsDefault = tls;
if (m_tlsPoolDefault == nullptr) {
m_tlsPoolDefault = tls;
}
TlsSetValue(tlsIdx, tls);
m_tlsPool = tls;
}
void AABB::UseDefaultThreadStorage() { TlsSetValue(tlsIdx, tlsDefault); }
void AABB::UseDefaultThreadStorage() { m_tlsPool = m_tlsPoolDefault; }
void AABB::ReleaseThreadStorage() {
ThreadStorage* tls = (ThreadStorage*)TlsGetValue(tlsIdx);
if (tls == tlsDefault) return;
delete tls;
if (m_tlsPool != m_tlsPoolDefault) {
delete m_tlsPool;
}
}
AABB* AABB::newPermanent(double x0, double y0, double z0, double x1, double y1,
@ -51,7 +48,7 @@ void AABB::resetPool() {}
AABB* AABB::newTemp(double x0, double y0, double z0, double x1, double y1,
double z1) {
ThreadStorage* tls = (ThreadStorage*)TlsGetValue(tlsIdx);
ThreadStorage* tls = m_tlsPool;
AABB* thisAABB = &tls->pool[tls->poolPointer];
thisAABB->set(x0, y0, z0, x1, y1, z1);
tls->poolPointer = (tls->poolPointer + 1) % ThreadStorage::POOL_SIZE;

View file

@ -15,8 +15,8 @@ class AABB {
ThreadStorage();
~ThreadStorage();
};
static unsigned int tlsIdx;
static ThreadStorage* tlsDefault;
static thread_local ThreadStorage* m_tlsPool;
static ThreadStorage* m_tlsPoolDefault;
public:
// Each new thread that needs to use Vec3 pools will need to call one of the

View file

@ -1,6 +1,8 @@
#include "../Platform/stdafx.h"
#include "C4JThread.h"
#include <thread>
#include <chrono>
#ifdef __PSVITA__
#include "../../Minecraft.Client/Platform/PSVita/PSVitaExtras/ShutdownManager.h"
#include "../../Minecraft.Client/Platform/PSVita/PSVitaExtras/PSVitaTLSStorage.h"
@ -443,7 +445,7 @@ void C4JThread::Sleep(int millisecs) {
// 4J Stu - 0 is an error, so add a tiny sleep when we just want to yield
sceKernelDelayThread(millisecs * 1000 + 1);
#else
::Sleep(millisecs);
std::this_thread::sleep_for(std::chrono::milliseconds(millisecs));
#endif // __PS3__
}