summaryrefslogtreecommitdiffstats
path: root/libs/gui/include
diff options
context:
space:
mode:
authorAdy Abraham <adyabr@google.com>2019-07-15 18:43:10 -0700
committerAdy Abraham <adyabr@google.com>2019-07-22 09:55:15 -0700
commita3b08efc43acebe8c15d31175ff04eeba6270913 (patch)
tree1d4e5bcb7c91442bacbc4980731dabb23fea22e1 /libs/gui/include
parentddb5f84005c03cb000d9f2ad042347e8d0e336de (diff)
downloadandroid_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.h44
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