mirror of
https://bitbucket.org/seefoe/src.git
synced 2026-07-31 01:15:45 -04:00
sync base with whitengold team repo
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
// ======================================================================
|
||||
//
|
||||
// VTune.cpp
|
||||
// Copyright 2000-01, Sony Online Entertainment Inc.
|
||||
// All Rights Reserved.
|
||||
//
|
||||
// ======================================================================
|
||||
|
||||
#include "sharedDebug/FirstSharedDebug.h"
|
||||
#include "sharedDebug/VTune.h"
|
||||
|
||||
#if PRODUCTION == 0
|
||||
|
||||
#include "sharedDebug/DebugFlags.h"
|
||||
|
||||
#include <vtune/vtuneapi.h>
|
||||
|
||||
// ======================================================================
|
||||
|
||||
HMODULE VTune::ms_module;
|
||||
VTune::PauseFunction VTune::ms_pauseFunction;
|
||||
VTune::ResumeFunction VTune::ms_resumeFunction;
|
||||
VTune::State VTune::ms_state;
|
||||
bool VTune::ms_resumeNextFrame;
|
||||
bool VTune::ms_pauseNextFrame;
|
||||
bool VTune::ms_debugReport;
|
||||
|
||||
// ======================================================================
|
||||
|
||||
void VTune::install()
|
||||
{
|
||||
DEBUG_FATAL(ms_module, ("vtune already installed"));
|
||||
|
||||
ms_module = LoadLibrary("VTuneAPI");
|
||||
if (!ms_module)
|
||||
return;
|
||||
|
||||
ms_pauseFunction = reinterpret_cast<PauseFunction>(GetProcAddress(ms_module, "VTPause"));
|
||||
ms_resumeFunction = reinterpret_cast<PauseFunction>(GetProcAddress(ms_module, "VTResume"));
|
||||
ms_state = S_default;
|
||||
|
||||
#if PRODUCTION == 0
|
||||
DebugFlags::registerFlag(ms_debugReport, "SharedDebug", "vtuneState", debugReport);
|
||||
#endif
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
void VTune::remove()
|
||||
{
|
||||
if (ms_module)
|
||||
{
|
||||
FreeLibrary(ms_module);
|
||||
ms_pauseFunction = 0;
|
||||
ms_resumeFunction = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
void VTune::debugReport()
|
||||
{
|
||||
switch (ms_state)
|
||||
{
|
||||
case S_default:
|
||||
REPORT_PRINT(true, ("Vtune state unknown\n"));
|
||||
break;
|
||||
|
||||
case S_sampling:
|
||||
REPORT_PRINT(true, ("Vtune is sampling\n"));
|
||||
break;
|
||||
|
||||
case S_paused:
|
||||
REPORT_PRINT(true, ("Vtune is NOT sampling\n"));
|
||||
break;
|
||||
|
||||
default:
|
||||
DEBUG_FATAL(true, ("bad case"));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
void VTune::resume()
|
||||
{
|
||||
if (ms_module && ms_resumeFunction)
|
||||
{
|
||||
MessageBeep(MB_OK);
|
||||
(*ms_resumeFunction)();
|
||||
ms_state = S_sampling;
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
void VTune::pause()
|
||||
{
|
||||
if (ms_module && ms_pauseFunction)
|
||||
{
|
||||
(*ms_pauseFunction)();
|
||||
MessageBeep(MB_ICONEXCLAMATION);
|
||||
ms_state = S_paused;
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
void VTune::pauseNextFrame()
|
||||
{
|
||||
ms_pauseNextFrame = true;
|
||||
ms_resumeNextFrame = false;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
void VTune::resumeNextFrame()
|
||||
{
|
||||
ms_pauseNextFrame = false;
|
||||
ms_resumeNextFrame = true;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
void VTune::beginFrame()
|
||||
{
|
||||
if (ms_pauseNextFrame)
|
||||
{
|
||||
pause();
|
||||
ms_pauseNextFrame = false;
|
||||
}
|
||||
|
||||
if (ms_resumeNextFrame)
|
||||
{
|
||||
resume();
|
||||
ms_resumeNextFrame = false;
|
||||
}
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
#endif // PRODUCTION == 0
|
||||
Reference in New Issue
Block a user