diff options
| author | 2017-07-27 10:18:51 +0000 | |
|---|---|---|
| committer | 2017-07-27 10:18:51 +0000 | |
| commit | bf3dc5ca6ae71f2b09dd1d88394a553d2247decc (patch) | |
| tree | e1792c809121ec0e2c6113547c2fa30a7a3a86b6 | |
| parent | f2764ed4d53e7ffa9e32dc694c5121cdd75992d3 (diff) | |
| parent | b92375fe9f22e94fb2b6aaaf40dc235aa72fff30 (diff) | |
Merge "screencap: always exit with _exit()." into oc-mr1-dev
am: b92375fe9f
Change-Id: Iaab6bc269a226ceaaa217e229c8c19646209f25f
| -rw-r--r-- | cmds/screencap/screencap.cpp | 20 | 
1 files changed, 11 insertions, 9 deletions
diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp index 23668786abee..35f8bbb57e50 100644 --- a/cmds/screencap/screencap.cpp +++ b/cmds/screencap/screencap.cpp @@ -116,13 +116,6 @@ static status_t notifyMediaScanner(const char* fileName) {  int main(int argc, char** argv)  { -    // setThreadPoolMaxThreadCount(0) actually tells the kernel it's -    // not allowed to spawn any additional threads, but we still spawn -    // a binder thread from userspace when we call startThreadPool(). -    // See b/36066697 for rationale -    ProcessState::self()->setThreadPoolMaxThreadCount(0); -    ProcessState::self()->startThreadPool(); -      const char* pname = argv[0];      bool png = false;      int32_t displayId = DEFAULT_DISPLAY_ID; @@ -182,11 +175,19 @@ int main(int argc, char** argv)          ISurfaceComposer::eRotate90, // 3 == DISPLAY_ORIENTATION_270      }; +    // setThreadPoolMaxThreadCount(0) actually tells the kernel it's +    // not allowed to spawn any additional threads, but we still spawn +    // a binder thread from userspace when we call startThreadPool(). +    // See b/36066697 for rationale +    ProcessState::self()->setThreadPoolMaxThreadCount(0); +    ProcessState::self()->startThreadPool(); +      ScreenshotClient screenshot;      sp<IBinder> display = SurfaceComposerClient::getBuiltInDisplay(displayId);      if (display == NULL) {          fprintf(stderr, "Unable to get handle for display %d\n", displayId); -        return 1; +        // b/36066697: Avoid running static destructors. +        _exit(1);      }      Vector<DisplayInfo> configs; @@ -195,7 +196,8 @@ int main(int argc, char** argv)      if (static_cast<size_t>(activeConfig) >= configs.size()) {          fprintf(stderr, "Active config %d not inside configs (size %zu)\n",                  activeConfig, configs.size()); -        return 1; +        // b/36066697: Avoid running static destructors. +        _exit(1);      }      uint8_t displayOrientation = configs[activeConfig].orientation;      uint32_t captureOrientation = ORIENTATION_MAP[displayOrientation];  |