68 lines
2.5 KiB
C++
68 lines
2.5 KiB
C++
#include "PerformanceShower_p.h"
|
|
namespace YSG {
|
|
PerformanceShower::PerformanceShower() {
|
|
dPtr = new PerformanceShowerPrivate;
|
|
mObjectName = "PerformanceShower";
|
|
}
|
|
PerformanceShowerPrivate* PerformanceShower::d() {
|
|
return reinterpret_cast<PerformanceShowerPrivate*>(dPtr);
|
|
}
|
|
RenderData* PerformanceShower::createRenderData() {
|
|
return new PerformanceShowerPrivate;
|
|
}
|
|
RenderState* PerformanceShower::createRenderState() {
|
|
return new PerformanceShowerRenderState;
|
|
}
|
|
InputData* PerformanceShower::createInputData() {
|
|
return new PerformanceShowerInputData;
|
|
}
|
|
void PerformanceShower::setEnabled(bool enabled) {
|
|
mEnabled.store(enabled, std::memory_order_release);
|
|
if(enabled) {
|
|
appendEvent({PerformanceEventType::Clear});
|
|
}
|
|
markRenderDirty();
|
|
}
|
|
bool PerformanceShower::enabled() const {
|
|
return mEnabled.load(std::memory_order_acquire);
|
|
}
|
|
void PerformanceShower::refreshCounter() {
|
|
appendEvent({PerformanceEventType::Clear});
|
|
}
|
|
void PerformanceShower::counterIncrease(const QString& counterName) {
|
|
PerformanceEvent event;
|
|
event.type = PerformanceEventType::Counter;
|
|
event.key = counterName;
|
|
appendEvent(event);
|
|
}
|
|
void PerformanceShower::setPerformanceLine(const QString& key, const PerformanceLine& line) {
|
|
PerformanceEvent event;
|
|
event.type = PerformanceEventType::Line;
|
|
event.key = key;
|
|
event.line = line;
|
|
appendEvent(event);
|
|
}
|
|
void PerformanceShower::setInfo(const QString& key, const QString& value) {
|
|
PerformanceEvent event;
|
|
event.type = PerformanceEventType::Info;
|
|
event.key = key;
|
|
event.value = value;
|
|
appendEvent(event);
|
|
}
|
|
void PerformanceShower::recordCost(const QString& key, double value) {
|
|
PerformanceEvent event;
|
|
event.type = PerformanceEventType::Cost;
|
|
event.key = key;
|
|
event.number = value;
|
|
appendEvent(event);
|
|
}
|
|
void PerformanceShower::appendEvent(const PerformanceEvent& event) {
|
|
if(!enabled() && event.type != PerformanceEventType::Clear) return;
|
|
auto pd = d();
|
|
Triple_Buffer_Lease inputLease = pd->mInputControl.wait_mark_use_role(Input_Edit);
|
|
auto input = reinterpret_cast<PerformanceShowerInputData*>(pd->inputDataByIndex(inputLease.index));
|
|
input->events.append(event);
|
|
RenderInputGuard inputGuard(pd, inputLease);
|
|
}
|
|
}
|