Changeset View
Changeset View
Standalone View
Standalone View
source/ps/Profile.cpp
/* Copyright (C) 2011 Wildfire Games. | /* Copyright (C) 2019 Wildfire Games. | ||||
* This file is part of 0 A.D. | * This file is part of 0 A.D. | ||||
* | * | ||||
* 0 A.D. is free software: you can redistribute it and/or modify | * 0 A.D. is free software: you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
* the Free Software Foundation, either version 2 of the License, or | * the Free Software Foundation, either version 2 of the License, or | ||||
* (at your option) any later version. | * (at your option) any later version. | ||||
* | * | ||||
* 0 A.D. is distributed in the hope that it will be useful, | * 0 A.D. is distributed in the hope that it will be useful, | ||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
* GNU General Public License for more details. | * GNU General Public License for more details. | ||||
* | * | ||||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | ||||
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>. | * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>. | ||||
*/ | */ | ||||
/* | /* | ||||
* GPG3-style hierarchical profiler | * GPG3-style hierarchical profiler | ||||
*/ | */ | ||||
#include "precompiled.h" | #include "precompiled.h" | ||||
#include "Profile.h" | #include "Profile.h" | ||||
#include "ProfileViewer.h" | #include "ProfileViewer.h" | ||||
#include "ThreadUtil.h" | |||||
#include "lib/timer.h" | #include "lib/timer.h" | ||||
#if OS_WIN && !defined(NDEBUG) | #if OS_WIN && !defined(NDEBUG) | ||||
# define USE_CRT_SET_ALLOC_HOOK | # define USE_CRT_SET_ALLOC_HOOK | ||||
#endif | #endif | ||||
#if defined(__GLIBC__) && !defined(NDEBUG) | #if defined(__GLIBC__) && !defined(NDEBUG) | ||||
//# define USE_GLIBC_MALLOC_HOOK | //# define USE_GLIBC_MALLOC_HOOK | ||||
▲ Show 20 Lines • Show All 715 Lines • ▼ Show 20 Lines | |||||
void CProfileManager::PerformStructuralReset() | void CProfileManager::PerformStructuralReset() | ||||
{ | { | ||||
delete root; | delete root; | ||||
root = new CProfileNode("root", NULL); | root = new CProfileNode("root", NULL); | ||||
root->Call(); | root->Call(); | ||||
current = root; | current = root; | ||||
g_ProfileViewer.AddRootTable(root->display_table, true); | g_ProfileViewer.AddRootTable(root->display_table, true); | ||||
} | } | ||||
CProfileSample::CProfileSample(const char* name) | |||||
{ | |||||
if (CProfileManager::IsInitialised()) | |||||
{ | |||||
// The profiler is only safe to use on the main thread | |||||
if(ThreadUtil::IsMainThread()) | |||||
g_Profiler.Start(name); | |||||
} | |||||
} | |||||
CProfileSample::~CProfileSample() | |||||
{ | |||||
if (CProfileManager::IsInitialised()) | |||||
if(ThreadUtil::IsMainThread()) | |||||
g_Profiler.Stop(); | |||||
} |
Wildfire Games · Phabricator