summaryrefslogtreecommitdiffstats
path: root/src/Runtime/ogl-runtime/src/system/Qt3DSDataLogger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/ogl-runtime/src/system/Qt3DSDataLogger.cpp')
-rw-r--r--src/Runtime/ogl-runtime/src/system/Qt3DSDataLogger.cpp151
1 files changed, 151 insertions, 0 deletions
diff --git a/src/Runtime/ogl-runtime/src/system/Qt3DSDataLogger.cpp b/src/Runtime/ogl-runtime/src/system/Qt3DSDataLogger.cpp
new file mode 100644
index 00000000..2f45f012
--- /dev/null
+++ b/src/Runtime/ogl-runtime/src/system/Qt3DSDataLogger.cpp
@@ -0,0 +1,151 @@
+/****************************************************************************
+**
+** Copyright (C) 1993-2009 NVIDIA Corporation.
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt 3D Studio.
+**
+** $QT_BEGIN_LICENSE:GPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 or (at your option) any later version
+** approved by the KDE Free Qt Foundation. The licenses are as published by
+** the Free Software Foundation and appearing in the file LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "SystemPrefix.h"
+
+//==============================================================================
+// Includes
+//==============================================================================
+#include "Qt3DSDataLogger.h"
+
+//==============================================================================
+// Namespace
+//==============================================================================
+namespace Q3DStudio {
+
+CDataLogger::SExternalFunctors CDataLogger::m_Functors;
+CDataLogger::EDataLoggerLevel CDataLogger::m_LogLevel = CDataLogger::LOG_LEVEL_INVALID;
+BOOL CDataLogger::m_Enabled = false;
+
+// Developers - change out the = NULL to = class::LogEntry to log specific stuff.
+template <>
+TPerfLogGeneralEvent1::TLogEntryInternal TPerfLogGeneralEvent1::m_InternalLogFunc = NULL;
+template <>
+TPerfLogGeneralEvent2::TLogEntryInternal TPerfLogGeneralEvent2::m_InternalLogFunc = NULL;
+
+template <>
+TPerfLogRenderEvent1::TLogEntryInternal TPerfLogRenderEvent1::m_InternalLogFunc = NULL;
+template <>
+TPerfLogSceneEvent1::TLogEntryInternal TPerfLogSceneEvent1::m_InternalLogFunc = NULL;
+
+template <>
+TPerfLogMathEvent1::TLogEntryInternal TPerfLogMathEvent1::m_InternalLogFunc = NULL;
+template <>
+TPerfLogPresentationEvent1::TLogEntryInternal TPerfLogPresentationEvent1::m_InternalLogFunc = NULL;
+template <>
+TPerfLogRenderEvent2::TLogEntryInternal TPerfLogRenderEvent2::m_InternalLogFunc = NULL;
+
+//==============================================================================
+/**
+ * Set the application supplied functors to use for getting time and handling
+ * the writing out of data
+ */
+void CDataLogger::SetFunctors(SExternalFunctors inFunctors)
+{
+ m_Functors = inFunctors;
+}
+
+//==============================================================================
+/**
+* Call into the specified functors to make stuff happen
+*/
+void CDataLogger::LogEntry(UINT32 inEntryEnum, BOOL inStartFlag)
+{
+ if (m_Enabled && m_Functors.m_GetTimeFunc && m_Functors.m_WriteFunc && m_Functors.m_UserData) {
+ // Initialize to the correct values
+ SPerfLogEntry theEntry(inEntryEnum, inStartFlag,
+ m_Functors.m_GetTimeFunc(m_Functors.m_UserData));
+ m_Functors.m_WriteFunc(m_Functors.m_UserData, theEntry);
+ }
+}
+
+//==============================================================================
+/**
+* Enable logging
+*/
+void CDataLogger::Enable()
+{
+ SetLogLevel(m_LogLevel);
+ m_Enabled = true;
+}
+
+//==============================================================================
+/**
+* Disable logging
+*/
+void CDataLogger::Disable()
+{
+ m_Enabled = false;
+}
+
+//==============================================================================
+/**
+ * XXX
+ */
+void CDataLogger::SetLogLevel(EDataLoggerLevel inLogLevel)
+{
+ switch (inLogLevel) {
+ // No logging
+ case LOG_LEVEL_NONE:
+ TPerfLogGeneralEvent1::Disable();
+ TPerfLogGeneralEvent2::Disable();
+
+ TPerfLogRenderEvent1::Disable();
+ TPerfLogSceneEvent1::Disable();
+
+ TPerfLogMathEvent1::Disable();
+ TPerfLogPresentationEvent1::Disable();
+ TPerfLogRenderEvent2::Disable();
+ break;
+
+ case LOG_LEVEL_3:
+ TPerfLogMathEvent1::Enable();
+ TPerfLogPresentationEvent1::Enable();
+ TPerfLogRenderEvent2::Enable();
+
+ case LOG_LEVEL_2:
+ TPerfLogRenderEvent1::Enable();
+ TPerfLogSceneEvent1::Enable();
+
+ case LOG_LEVEL_1:
+ TPerfLogGeneralEvent1::Enable();
+ TPerfLogGeneralEvent2::Enable();
+ break;
+
+ case LOG_LEVEL_INVALID:
+ default:
+ m_LogLevel = LOG_LEVEL_INVALID;
+ return;
+ break;
+ }
+ m_LogLevel = inLogLevel;
+}
+
+} // namespace Q3DStudio