X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Fintegration-api%2Fdebug.cpp;h=84c9cdfc53d35eb1c34cc068151963037611509a;hb=a770afdd3196e242b4938dfb2cbec3b5666593b2;hp=8d4d60ffac8bf40693967de9a114bcd013c024c4;hpb=92db3ebbbd3ae9298a4cc6e2d9d827b88ed999e0;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/integration-api/debug.cpp b/dali/integration-api/debug.cpp index 8d4d60f..84c9cdf 100644 --- a/dali/integration-api/debug.cpp +++ b/dali/integration-api/debug.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ #include #include #include +#include // INTERNAL INCLUDES #include @@ -38,41 +39,19 @@ namespace Dali { -namespace // unnamed namespace -{ - -/** - * Generic function to print out any 2-Dimensional array - * @param[in] data pointer to the source data stored as float[rows][cols] - * @param[in] rows number of rows in 2D array - * @param[in] cols number of columns in 2D array - * @param[in] precision - the precision to write the float data. - * @param[in] indent - the indent level to use. - * @return string - the text representation of the 2D array - */ -std::string Array2DToString(const float *data, unsigned int rows, unsigned int cols, size_t precision, size_t indent) -{ - std::ostringstream oss; +#ifdef DEBUG_ENABLED - std::ios_base::fmtflags mask = oss.flags(); - mask &= ~std::ios_base::scientific; - mask |= std::ios_base::fixed; +// Fake globals for gdb typedefs +Dali::DebugPropertyValueArray gValueArray; +Dali::DebugPropertyValueMap gValueMap; - for(unsigned int rowIdx = 0; rowIdx < rows; rowIdx++) - { - oss << std::setw(indent) << std::setfill(' ') << ' ' << "[ "; - oss << std::setfill(' ') << std::setprecision(precision) << std::right << std::setiosflags(mask); +#endif - for(unsigned int colIdx = 0; colIdx < cols; colIdx++) - { - oss << std::setw(precision + 6) << (*data++) << ' '; - } - oss << ']' << std::endl; - } +namespace // unnamed namespace +{ - return oss.str(); -} +const uint64_t NANOSECONDS_PER_SECOND = 1e+9; } @@ -82,7 +61,7 @@ namespace Integration namespace Log { -__thread LogFunction gthreadLocalLogFunction = NULL; +thread_local LogFunction gthreadLocalLogFunction = nullptr; /* Forward declarations */ std::string FormatToString(const char *format, ...); @@ -113,7 +92,7 @@ void InstallLogFunction(const LogFunction& logFunction) void UninstallLogFunction() { - gthreadLocalLogFunction = NULL; + gthreadLocalLogFunction = nullptr; } #ifdef DEBUG_ENABLED @@ -122,14 +101,13 @@ void UninstallLogFunction() Filter* Filter::gRender = Filter::New(Debug::Concise, false, "LOG_RENDER"); Filter* Filter::gResource = Filter::New(Debug::Concise, false, "LOG_RESOURCE"); Filter* Filter::gGLResource = Filter::New(Debug::Concise, false, "LOG_GL_RESOURCE"); -Filter* Filter::gObject = NULL; +Filter* Filter::gObject = nullptr; Filter* Filter::gImage = Filter::New(Debug::Concise, false, "LOG_IMAGE"); Filter* Filter::gModel = Filter::New(Debug::Concise, false, "LOG_MODEL"); -Filter* Filter::gNode = NULL; -Filter* Filter::gElement = NULL; +Filter* Filter::gNode = nullptr; +Filter* Filter::gElement = nullptr; Filter* Filter::gActor = Filter::New(Debug::Concise, false, "LOG_ACTOR"); Filter* Filter::gShader = Filter::New(Debug::Concise, false, "LOG_SHADER"); -Filter* Filter::gDynamics = Filter::New(Debug::Concise, false, "LOG_DYNAMICS"); Filter::FilterList* Filter::GetActiveFilters() { @@ -199,13 +177,21 @@ void Filter::Log(LogLevel level, const char* format, ...) va_list arg; va_start(arg, format); - char *buffer = NULL; - int numChars = asprintf(&buffer, "%-*c %s", mNesting, ':', format); - if(numChars >= 0) // No error + if( mTraceEnabled ) { - std::string message = ArgListToString(buffer, arg); - LogMessage(DebugInfo, message.c_str()); - free(buffer); + char *buffer = nullptr; + int numChars = asprintf( &buffer, " %-*c %s", mNesting, ':', format ); + if( numChars >= 0 ) // No error + { + std::string message = ArgListToString( buffer, arg ); + LogMessage( DebugInfo, message.c_str() ); + free( buffer ); + } + } + else + { + std::string message = ArgListToString( format, arg ); + LogMessage( DebugInfo, message.c_str() ); } va_end(arg); } @@ -240,7 +226,6 @@ TraceObj::~TraceObj() #endif // DEBUG_ENABLED - std::string ArgListToString(const char *format, va_list args) { std::string str; // empty string @@ -266,56 +251,13 @@ std::string FormatToString(const char *format, ...) return s; } -std::string ColorToString(const Vector4& color) +void GetNanoseconds( uint64_t& timeInNanoseconds ) { - std::ostringstream oss; - oss << ""; - return oss.str(); -} - -std::string Vector4ToString(const Vector4& v, size_t precision, size_t indent) -{ - std::ostringstream oss; - oss << std::setw(indent+3) << std::setfill(' ') << std::setprecision(precision) << std::right; - oss << ""; - return oss.str(); -} - -std::string Vector3ToString(const Vector3& v, size_t precision, size_t indent) -{ - std::ostringstream oss; - oss << std::setw(indent+3) << std::setfill(' ') << std::setprecision(precision) << std::right << std::setiosflags(std::ios_base::fixed); - oss << ""; - return oss.str(); -} - -std::string QuaternionToString(const Quaternion& q, size_t precision, size_t indent) -{ - std::ostringstream oss; + timespec timeSpec; + clock_gettime( CLOCK_MONOTONIC, &timeSpec ); - Vector3 axis; - float angle; - q.ToAxisAngle(axis, angle); - - oss << std::setw(indent+3) << std::setfill(' ') << std::setprecision(precision) << std::right; - oss << ""; - - return oss.str(); -} - -std::string Matrix3ToString(const Matrix3& m, size_t precision, size_t indent) -{ - return Array2DToString(m.AsFloat(), 3, 3, precision, indent); -} - -std::string MatrixToString(const Matrix& m, size_t precision, size_t indent) -{ - return Array2DToString(m.AsFloat(), 4, 4, precision, indent); + // Convert all values to uint64_t to match our return type + timeInNanoseconds = ( static_cast< uint64_t >( timeSpec.tv_sec ) * NANOSECONDS_PER_SECOND ) + static_cast< uint64_t >( timeSpec.tv_nsec ); } } // namespace Log