diff options
author | Ady Abraham <adyabr@google.com> | 2019-07-15 18:43:10 -0700 |
---|---|---|
committer | Ady Abraham <adyabr@google.com> | 2019-07-22 09:55:15 -0700 |
commit | a3b08efc43acebe8c15d31175ff04eeba6270913 (patch) | |
tree | 1d4e5bcb7c91442bacbc4980731dabb23fea22e1 /libs/gui/include | |
parent | ddb5f84005c03cb000d9f2ad042347e8d0e336de (diff) | |
download | android_frameworks_native-a3b08efc43acebe8c15d31175ff04eeba6270913.tar.gz android_frameworks_native-a3b08efc43acebe8c15d31175ff04eeba6270913.tar.bz2 android_frameworks_native-a3b08efc43acebe8c15d31175ff04eeba6270913.zip |
libgui: add EGL Image Tracking for debug
Track EGL images allocated by libgui to help debug memory leaks
Test: monkey
Bug: 137514000
Change-Id: I0b193c0fdb7a4c07d7c2e5d06063e3dc01b5a57b
Diffstat (limited to 'libs/gui/include')
-rw-r--r-- | libs/gui/include/gui/DebugEGLImageTracker.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libs/gui/include/gui/DebugEGLImageTracker.h b/libs/gui/include/gui/DebugEGLImageTracker.h new file mode 100644 index 000000000..5d369c9a3 --- /dev/null +++ b/libs/gui/include/gui/DebugEGLImageTracker.h @@ -0,0 +1,44 @@ +/* + * Copyright 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include <atomic> +#include <mutex> +#include <string> + +class DebugEGLImageTracker { +public: + static DebugEGLImageTracker *getInstance(); + + virtual void create(const char *from) = 0; + virtual void destroy(const char *from) = 0; + + virtual void dump(std::string &result) = 0; + +protected: + DebugEGLImageTracker() = default; + virtual ~DebugEGLImageTracker() = default; + DebugEGLImageTracker(const DebugEGLImageTracker &) = delete; + + static std::mutex mInstanceLock; + static std::atomic<DebugEGLImageTracker *> mInstance; +}; + +#define DEBUG_EGL_IMAGE_TRACKER_CREATE() \ + (DebugEGLImageTracker::getInstance()->create(__PRETTY_FUNCTION__)) +#define DEBUG_EGL_IMAGE_TRACKER_DESTROY() \ + (DebugEGLImageTracker::getInstance()->destroy(__PRETTY_FUNCTION__))
\ No newline at end of file |