From bee18089dd3643a7f1bb211417e7e068032b4438 Mon Sep 17 00:00:00 2001 From: "Eunki, Hong" Date: Fri, 15 Sep 2023 17:17:41 +0900 Subject: [PATCH] Make trace/debug filter as unique_ptr Since we don't deallocate global static filters default, memory leak tooks (like valgrind) detact they are memory leak. To avoid this tiny error message, just make them unique_ptr and allow automatically released after app terminated Change-Id: If8f9cf8cafb86ef66c41877ab254177d0a4fbb10 Signed-off-by: Eunki, Hong --- automated-tests/src/dali/utc-Dali-Actor.cpp | 2 ++ dali/integration-api/debug.cpp | 21 ++++++++++++++------- dali/integration-api/debug.h | 8 +------- dali/integration-api/trace.cpp | 16 +++++++++------- 4 files changed, 26 insertions(+), 21 deletions(-) diff --git a/automated-tests/src/dali/utc-Dali-Actor.cpp b/automated-tests/src/dali/utc-Dali-Actor.cpp index 23d6a85..e507fbd 100644 --- a/automated-tests/src/dali/utc-Dali-Actor.cpp +++ b/automated-tests/src/dali/utc-Dali-Actor.cpp @@ -5564,6 +5564,7 @@ int UtcDaliActorRaiseLower(void) TestApplication application; Debug::Filter::SetGlobalLogLevel(Debug::Verbose); + Debug::Filter::EnableGlobalTrace(); Integration::Scene stage(application.GetScene()); @@ -5685,6 +5686,7 @@ int UtcDaliActorRaiseLower(void) ResetTouchCallbacks(); + Debug::Filter::DisableGlobalTrace(); Debug::Filter::SetGlobalLogLevel(Debug::NoLogging); END_TEST; diff --git a/dali/integration-api/debug.cpp b/dali/integration-api/debug.cpp index 858b4d8..dab8585 100644 --- a/dali/integration-api/debug.cpp +++ b/dali/integration-api/debug.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -21,6 +21,7 @@ // EXTERNAL INCLUDES #include #include +#include namespace Dali { @@ -84,11 +85,17 @@ 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::FilterList* Filter::GetActiveFilters() +typedef std::list> FilterList; +typedef std::list>::iterator FilterIter; + +namespace +{ +static FilterList& GetActiveFilters() { - static Filter::FilterList* activeFilters = new FilterList; + static FilterList activeFilters; return activeFilters; } +} // namespace Filter* Filter::New(LogLevel level, bool trace, const char* environmentVariableName) { @@ -118,7 +125,7 @@ Filter* Filter::New(LogLevel level, bool trace, const char* environmentVariableN Filter* filter = new Filter(level, trace); filter->mNesting++; - GetActiveFilters()->push_back(filter); + GetActiveFilters().push_back(std::unique_ptr(filter)); return filter; } @@ -127,7 +134,7 @@ Filter* Filter::New(LogLevel level, bool trace, const char* environmentVariableN */ void Filter::EnableGlobalTrace() { - for(FilterIter iter = GetActiveFilters()->begin(); iter != GetActiveFilters()->end(); iter++) + for(FilterIter iter = GetActiveFilters().begin(); iter != GetActiveFilters().end(); iter++) { (*iter)->EnableTrace(); } @@ -138,7 +145,7 @@ void Filter::EnableGlobalTrace() */ void Filter::DisableGlobalTrace() { - for(FilterIter iter = GetActiveFilters()->begin(); iter != GetActiveFilters()->end(); iter++) + for(FilterIter iter = GetActiveFilters().begin(); iter != GetActiveFilters().end(); iter++) { (*iter)->DisableTrace(); } @@ -146,7 +153,7 @@ void Filter::DisableGlobalTrace() void Filter::SetGlobalLogLevel(LogLevel level) { - for(FilterIter iter = GetActiveFilters()->begin(); iter != GetActiveFilters()->end(); iter++) + for(FilterIter iter = GetActiveFilters().begin(); iter != GetActiveFilters().end(); iter++) { (*iter)->SetLogLevel(level); } diff --git a/dali/integration-api/debug.h b/dali/integration-api/debug.h index 8533270..1a19291 100644 --- a/dali/integration-api/debug.h +++ b/dali/integration-api/debug.h @@ -2,7 +2,7 @@ #define DALI_INTEGRATION_DEBUG_H /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -217,10 +217,6 @@ enum LogLevel class DALI_CORE_API Filter { public: - using FilterList = std::list; - using FilterIter = std::list::iterator; - -public: /** * Test if the filter is enabled for the given logging level * @param[in] level - the level to test. @@ -325,8 +321,6 @@ private: { } - static FilterList* GetActiveFilters(); - public: // High level filters. If these filters are too broad for your current requirement, then // you can add a filter to your own class or source file. If you do, use Filter::New() diff --git a/dali/integration-api/trace.cpp b/dali/integration-api/trace.cpp index 5786f3a..b7af278 100644 --- a/dali/integration-api/trace.cpp +++ b/dali/integration-api/trace.cpp @@ -21,6 +21,7 @@ // EXTERNAL INCLUDES #include #include +#include namespace Dali { @@ -46,14 +47,14 @@ void LogContext(bool start, const char* tag, const char* message) #ifdef TRACE_ENABLED -typedef std::list FilterList; -typedef std::list::iterator FilterIter; +typedef std::list> FilterList; +typedef std::list>::iterator FilterIter; namespace { -static FilterList* GetActiveFilters() +static FilterList& GetActiveFilters() { - static FilterList* activeFilters = new FilterList; + static FilterList activeFilters; return activeFilters; } } // namespace @@ -78,7 +79,8 @@ Filter* Filter::New(bool trace, const char* environmentVariableName) } Filter* filter = new Filter(trace); - GetActiveFilters()->push_back(filter); + + GetActiveFilters().push_back(std::unique_ptr(filter)); return filter; } @@ -87,7 +89,7 @@ Filter* Filter::New(bool trace, const char* environmentVariableName) */ void Filter::EnableGlobalTrace() { - for(FilterIter iter = GetActiveFilters()->begin(); iter != GetActiveFilters()->end(); iter++) + for(FilterIter iter = GetActiveFilters().begin(); iter != GetActiveFilters().end(); iter++) { (*iter)->EnableTrace(); } @@ -98,7 +100,7 @@ void Filter::EnableGlobalTrace() */ void Filter::DisableGlobalTrace() { - for(FilterIter iter = GetActiveFilters()->begin(); iter != GetActiveFilters()->end(); iter++) + for(FilterIter iter = GetActiveFilters().begin(); iter != GetActiveFilters().end(); iter++) { (*iter)->DisableTrace(); } -- 2.7.4