SF: acquire/release screen for active display only

SurfaceFlinger assumes that there is at most a single internal display
powered on at a given time, and mark it as the active display. However,
in order to be robust against rare race conditions where displays might
be on together for a short period of time, we add a check to make sure
that we tell the scheduler that the screen was acquired/released only
for the active display.

Bug: 201605862
Test: SF unit tests
Change-Id: I25b3f807d9f5d93ae88ac8a6026cee76cb69f493
diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
index 40c881e..a23361e 100644
--- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
+++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h
@@ -442,6 +442,7 @@
     auto& mutableInternalHwcDisplayId() { return getHwComposer().mInternalHwcDisplayId; }
     auto& mutableExternalHwcDisplayId() { return getHwComposer().mExternalHwcDisplayId; }
     auto& mutableUseFrameRateApi() { return mFlinger->useFrameRateApi; }
+    auto& mutableActiveDisplayToken() { return mFlinger->mActiveDisplayToken; }
 
     auto fromHandle(const sp<IBinder>& handle) {
         return mFlinger->fromHandle(handle);