diff options
author | Orion Hodson <oth@google.com> | 2019-02-04 09:36:10 +0000 |
---|---|---|
committer | Orion Hodson <oth@google.com> | 2019-02-06 08:49:20 +0000 |
commit | fb996e9fb3f87062fad5863624a6ba0b7ec89615 (patch) | |
tree | 907f4d034b50eb715b0f73e87110b7d7b43df728 | |
parent | 25d4688e910aad46a477d168b31e1c8de4ec5d48 (diff) | |
download | native-fb996e9fb3f87062fad5863624a6ba0b7ec89615.tar.gz |
SurfaceFlinger: remove DdmConnection
DdmConnection dlopen's libart.so which is undesirable for the Runtime Module.
Bug: 120782499
Test: m -j100
Change-Id: Ib9a129329f7bd8d67b954e58810807c683b20b48
Merged-In: Ib9a129329f7bd8d67b954e58810807c683b20b48
Exempt-From-Owner-Approval: Cherry-pick of approved CL in master
-rw-r--r-- | services/surfaceflinger/Android.bp | 18 | ||||
-rw-r--r-- | services/surfaceflinger/DdmConnection.cpp | 119 | ||||
-rw-r--r-- | services/surfaceflinger/DdmConnection.h | 35 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 34 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.h | 2 |
5 files changed, 5 insertions, 203 deletions
diff --git a/services/surfaceflinger/Android.bp b/services/surfaceflinger/Android.bp index 22e7761323..5d4ac23eae 100644 --- a/services/surfaceflinger/Android.bp +++ b/services/surfaceflinger/Android.bp @@ -199,24 +199,6 @@ cc_binary { }, } -cc_library_shared { - name: "libsurfaceflinger_ddmconnection", - defaults: ["surfaceflinger_defaults"], - srcs: ["DdmConnection.cpp"], - shared_libs: [ - "libcutils", - "libdl", - "liblog", - "libprocessgroup", - ], - product_variables: { - // uses jni which may not be available in PDK - pdk: { - enabled: false, - }, - }, -} - subdirs = [ "layerproto", "TimeStats/timestatsproto", diff --git a/services/surfaceflinger/DdmConnection.cpp b/services/surfaceflinger/DdmConnection.cpp deleted file mode 100644 index 35d55f502a..0000000000 --- a/services/surfaceflinger/DdmConnection.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (C) 2011 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. - */ - -#include <dlfcn.h> -#include <sys/types.h> -#include <unistd.h> - -#include <log/log.h> - -#include "jni.h" -#include "DdmConnection.h" - -namespace android { - -void DdmConnection_start(const char* name) { - ALOGI("DdmConnection_start"); - DdmConnection::start(name); -} - -void DdmConnection::start(const char* name) { - JavaVM* vm; - JNIEnv* env; - - // start a VM - JavaVMInitArgs args; - JavaVMOption opt; - - opt.optionString = - "-agentlib:jdwp=transport=dt_android_adb,suspend=n,server=y"; - - args.version = JNI_VERSION_1_4; - args.options = &opt; - args.nOptions = 1; - args.ignoreUnrecognized = JNI_FALSE; - - - // TODO: Should this just link against libnativehelper and use its - // JNI_CreateJavaVM wrapper that essential does this dlopen/dlsym - // work based on the current system default runtime? - void* libart_dso = dlopen("libart.so", RTLD_NOW); - ALOGE_IF(!libart_dso, "DdmConnection: %s", dlerror()); - - void* libandroid_runtime_dso = dlopen("libandroid_runtime.so", RTLD_NOW); - ALOGE_IF(!libandroid_runtime_dso, "DdmConnection: %s", dlerror()); - - if (!libart_dso || !libandroid_runtime_dso) { - goto error; - } - - jint (*JNI_CreateJavaVM)(JavaVM** p_vm, JNIEnv** p_env, void* vm_args); - JNI_CreateJavaVM = reinterpret_cast<decltype(JNI_CreateJavaVM)>( - dlsym(libart_dso, "JNI_CreateJavaVM")); - ALOGE_IF(!JNI_CreateJavaVM, "DdmConnection: %s", dlerror()); - - jint (*registerNatives)(JNIEnv* env, jclass clazz); - registerNatives = reinterpret_cast<decltype(registerNatives)>( - dlsym(libandroid_runtime_dso, - "Java_com_android_internal_util_WithFramework_registerNatives")); - ALOGE_IF(!registerNatives, "DdmConnection: %s", dlerror()); - - if (!JNI_CreateJavaVM || !registerNatives) { - goto error; - } - - if (JNI_CreateJavaVM(&vm, &env, &args) == 0) { - jclass startClass; - jmethodID startMeth; - - // register native code - if (registerNatives(env, 0) == 0) { - // set our name by calling DdmHandleAppName.setAppName() - startClass = env->FindClass("android/ddm/DdmHandleAppName"); - if (startClass) { - startMeth = env->GetStaticMethodID(startClass, - "setAppName", "(Ljava/lang/String;I)V"); - if (startMeth) { - jstring str = env->NewStringUTF(name); - env->CallStaticVoidMethod(startClass, startMeth, str, getuid()); - env->DeleteLocalRef(str); - } - } - - // initialize DDMS communication by calling - // DdmRegister.registerHandlers() - startClass = env->FindClass("android/ddm/DdmRegister"); - if (startClass) { - startMeth = env->GetStaticMethodID(startClass, - "registerHandlers", "()V"); - if (startMeth) { - env->CallStaticVoidMethod(startClass, startMeth); - } - } - } - } - return; - -error: - if (libandroid_runtime_dso) { - dlclose(libandroid_runtime_dso); - } - if (libart_dso) { - dlclose(libart_dso); - } -} - -}; // namespace android diff --git a/services/surfaceflinger/DdmConnection.h b/services/surfaceflinger/DdmConnection.h deleted file mode 100644 index 938d14bbaa..0000000000 --- a/services/surfaceflinger/DdmConnection.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2011 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. - */ - -#ifndef ANDROID_SF_DDM_CONNECTION -#define ANDROID_SF_DDM_CONNECTION - -namespace android { - -// wrapper for dlsym -extern "C" void DdmConnection_start(const char* name); - -class DdmConnection { -public: - // Creates a JVM and registers all handlers to DDMS. - // This allows tools relying on DDMS to find surfaceflinger - // (e.g: Memory Leak finder, heap analyzer, ...) - static void start(const char* name); -}; - -}; // namespace android - -#endif /* ANDROID_SF_DDM_CONNECTION */ diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index e693dd28dd..286a133e15 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -67,7 +67,6 @@ #include "ColorLayer.h" #include "Colorizer.h" #include "ContainerLayer.h" -#include "DdmConnection.h" #include "DispSync.h" #include "DisplayDevice.h" #include "EventControlThread.h" @@ -225,7 +224,6 @@ SurfaceFlinger::SurfaceFlinger(SurfaceFlinger::SkipInitializationTag) mAnimCompositionPending(false), mBootStage(BootStage::BOOTLOADER), mDebugRegion(0), - mDebugDDMS(0), mDebugDisableHWC(0), mDebugDisableTransformHint(0), mDebugInSwapBuffers(0), @@ -305,16 +303,12 @@ SurfaceFlinger::SurfaceFlinger() : SurfaceFlinger(SkipInitialization) { property_get("debug.sf.showupdates", value, "0"); mDebugRegion = atoi(value); - property_get("debug.sf.ddms", value, "0"); - mDebugDDMS = atoi(value); - if (mDebugDDMS) { - if (!startDdmConnection()) { - // start failed, and DDMS debugging not enabled - mDebugDDMS = 0; - } - } ALOGI_IF(mDebugRegion, "showupdates enabled"); - ALOGI_IF(mDebugDDMS, "DDMS debugging enabled"); + + // DDMS debugging deprecated (b/120782499) + property_get("debug.sf.ddms", value, "0"); + int debugDdms = atoi(value); + ALOGI_IF(debugDdms, "DDMS debugging not supported"); property_get("debug.sf.disable_backpressure", value, "0"); mPropagateBackpressure = !atoi(value); @@ -4495,24 +4489,6 @@ SurfaceFlinger::getLayerSortedByZForHwcDisplay(int id) { return getDisplayDeviceLocked(dpy)->getVisibleLayersSortedByZ(); } -bool SurfaceFlinger::startDdmConnection() -{ - void* libddmconnection_dso = - dlopen("libsurfaceflinger_ddmconnection.so", RTLD_NOW); - if (!libddmconnection_dso) { - return false; - } - void (*DdmConnection_start)(const char* name); - DdmConnection_start = - (decltype(DdmConnection_start))dlsym(libddmconnection_dso, "DdmConnection_start"); - if (!DdmConnection_start) { - dlclose(libddmconnection_dso); - return false; - } - (*DdmConnection_start)(getServiceName()); - return true; -} - void SurfaceFlinger::updateColorMatrixLocked() { mat4 colorMatrix; if (mGlobalSaturationFactor != 1.0f) { diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 463a551bfe..d2b1233a5e 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -731,7 +731,6 @@ private: void dumpStatsLocked(const Vector<String16>& args, size_t& index, String8& result) const; void clearStatsLocked(const Vector<String16>& args, size_t& index, String8& result); void dumpAllLocked(const Vector<String16>& args, size_t& index, String8& result) const; - bool startDdmConnection(); void appendSfConfigString(String8& result) const; void checkScreenshot(size_t w, size_t s, size_t h, void const* vaddr, TraverseLayersFunction traverseLayers); @@ -837,7 +836,6 @@ private: // don't use a lock for these, we don't care int mDebugRegion; - int mDebugDDMS; int mDebugDisableHWC; int mDebugDisableTransformHint; volatile nsecs_t mDebugInSwapBuffers; |