diff options
| author | 2017-03-09 18:50:05 -0800 | |
|---|---|---|
| committer | 2017-03-13 18:57:13 +0000 | |
| commit | 5f1af0457a8a6c2922a0d5e55cb6c248ec539f7f (patch) | |
| tree | 14efaa986f24e98b3d88033050ed5dd07c0a54e3 | |
| parent | 4c5441be9bf5aa87042cfb3653733b008a51efdb (diff) | |
get rid of the dependency on utils/CallStack.h
this makes it more explicit that we depend on
libbacktrace (and therefore libbase, libunwind).
this also completely get rid of our direct
dependency on libutils
Test: compiled
Bug: treble
Change-Id: Ib7b9d6be4f08cef401afe0d3d347e0250924a94f
| -rw-r--r-- | opengl/libs/Android.bp | 13 | ||||
| -rw-r--r-- | opengl/libs/EGL/CallStack.h | 38 | ||||
| -rw-r--r-- | opengl/libs/EGL/egl.cpp | 7 | ||||
| -rw-r--r-- | opengl/libs/EGL/egl_tls.cpp | 5 | ||||
| -rw-r--r-- | opengl/libs/EGL/getProcAddress.cpp | 2 | ||||
| -rw-r--r-- | opengl/libs/GLES2/gl2.cpp | 2 | ||||
| -rw-r--r-- | opengl/libs/GLES_CM/gl.cpp | 2 |
7 files changed, 51 insertions, 18 deletions
diff --git a/opengl/libs/Android.bp b/opengl/libs/Android.bp index aa67d41bba..6a62e8d1ea 100644 --- a/opengl/libs/Android.bp +++ b/opengl/libs/Android.bp @@ -58,6 +58,8 @@ cc_defaults { "-fvisibility=hidden", ], shared_libs: [ + // ***** DO NOT ADD NEW DEPENDENCIES HERE ***** + // In particular, DO NOT add libutils or anything "above" libcutils "libcutils", "liblog", "libdl", @@ -77,9 +79,11 @@ cc_defaults { "-DLOG_TAG=\"libEGL\"", ], shared_libs: [ - "libutils", + // ***** DO NOT ADD NEW DEPENDENCIES HERE ***** + // In particular, DO NOT add libutils nor anything "above" libui "libui", "libnativewindow", + "libbacktrace", ], } @@ -142,7 +146,6 @@ cc_library_shared { name: "libGLESv1_CM", defaults: ["gles_libs_defaults"], srcs: ["GLES_CM/gl.cpp"], - cflags: ["-DLOG_TAG=\"libGLESv1\""], } @@ -153,9 +156,6 @@ cc_library_shared { name: "libGLESv2", defaults: ["gles_libs_defaults"], srcs: ["GLES2/gl2.cpp"], - - shared_libs: ["libutils"], - cflags: ["-DLOG_TAG=\"libGLESv2\""], } @@ -166,8 +166,5 @@ cc_library_shared { name: "libGLESv3", defaults: ["gles_libs_defaults"], srcs: ["GLES2/gl2.cpp"], - - shared_libs: ["libutils"], - cflags: ["-DLOG_TAG=\"libGLESv3\""], } diff --git a/opengl/libs/EGL/CallStack.h b/opengl/libs/EGL/CallStack.h new file mode 100644 index 0000000000..0e2a9b3248 --- /dev/null +++ b/opengl/libs/EGL/CallStack.h @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2017 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 <log/log.h> +#include <backtrace/Backtrace.h> +#include <memory> + +class CallStack { +public: + // Create a callstack with the current thread's stack trace. + // Immediately dump it to logcat using the given logtag. + static void log(const char* logtag) noexcept { + std::unique_ptr<Backtrace> backtrace( + Backtrace::Create(BACKTRACE_CURRENT_PROCESS, BACKTRACE_CURRENT_THREAD)); + if (backtrace->Unwind(2)) { + for (size_t i = 0, c = backtrace->NumFrames(); i < c; i++) { + __android_log_print(ANDROID_LOG_DEBUG, logtag, "%s", + backtrace->FormatFrameData(i).c_str()); + } + } + } +}; + diff --git a/opengl/libs/EGL/egl.cpp b/opengl/libs/EGL/egl.cpp index f44c1ca22b..f53cf3f8cc 100644 --- a/opengl/libs/EGL/egl.cpp +++ b/opengl/libs/EGL/egl.cpp @@ -24,14 +24,13 @@ #include <log/log.h> -#include <utils/CallStack.h> - #include "../egl_impl.h" #include "egldefs.h" #include "egl_tls.h" #include "egl_display.h" #include "egl_object.h" +#include "CallStack.h" #include "Loader.h" typedef __eglMustCastToProperFunctionPointerType EGLFuncPointer; @@ -65,7 +64,7 @@ static int gl_no_context() { char value[PROPERTY_VALUE_MAX]; property_get("debug.egl.callstack", value, "0"); if (atoi(value)) { - CallStack stack(LOG_TAG); + CallStack::log(LOG_TAG); } } return 0; @@ -224,7 +223,7 @@ void gl_unimplemented() { char value[PROPERTY_VALUE_MAX]; property_get("debug.egl.callstack", value, "0"); if (atoi(value)) { - CallStack stack(LOG_TAG); + CallStack::log(LOG_TAG); } } } diff --git a/opengl/libs/EGL/egl_tls.cpp b/opengl/libs/EGL/egl_tls.cpp index ca8684e3dd..8508c5fe9d 100644 --- a/opengl/libs/EGL/egl_tls.cpp +++ b/opengl/libs/EGL/egl_tls.cpp @@ -20,8 +20,7 @@ #include <cutils/properties.h> #include <log/log.h> -#include <utils/CallStack.h> - +#include "CallStack.h" namespace android { @@ -74,7 +73,7 @@ void egl_tls_t::setErrorEtcImpl( char value[PROPERTY_VALUE_MAX]; property_get("debug.egl.callstack", value, "0"); if (atoi(value)) { - CallStack stack(LOG_TAG); + CallStack::log(LOG_TAG); } } tls->error = error; diff --git a/opengl/libs/EGL/getProcAddress.cpp b/opengl/libs/EGL/getProcAddress.cpp index 450c4021d1..c05e840f32 100644 --- a/opengl/libs/EGL/getProcAddress.cpp +++ b/opengl/libs/EGL/getProcAddress.cpp @@ -18,7 +18,7 @@ #include <errno.h> #include <stdlib.h> -#include <android/log.h> +#include <log/log.h> #include "egldefs.h" diff --git a/opengl/libs/GLES2/gl2.cpp b/opengl/libs/GLES2/gl2.cpp index c2060419e8..f7fde9625f 100644 --- a/opengl/libs/GLES2/gl2.cpp +++ b/opengl/libs/GLES2/gl2.cpp @@ -19,7 +19,7 @@ #include <string.h> #include <sys/ioctl.h> -#include <android/log.h> +#include <log/log.h> #include <cutils/properties.h> #include "../hooks.h" diff --git a/opengl/libs/GLES_CM/gl.cpp b/opengl/libs/GLES_CM/gl.cpp index e698fcd64c..bacd4b4bc8 100644 --- a/opengl/libs/GLES_CM/gl.cpp +++ b/opengl/libs/GLES_CM/gl.cpp @@ -19,7 +19,7 @@ #include <string.h> #include <sys/ioctl.h> -#include <android/log.h> +#include <log/log.h> #include <cutils/properties.h> #include <GLES/gl.h> |