rework screen on/off code
Change-Id: I13f71e850592a588bbd4805b1830c503bd4decb4
diff --git a/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp b/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp
index 69f1aca..d3a8bde 100644
--- a/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp
+++ b/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp
@@ -54,15 +54,12 @@
sp<SurfaceFlinger> flinger = mFlinger.promote();
ALOGD("About to give-up screen, flinger = %p", flinger.get());
if (flinger != 0) {
- mBarrier.close();
- flinger->screenReleased(0);
- mBarrier.wait();
+ flinger->screenReleased();
}
if (waitForFbWake() == NO_ERROR) {
- sp<SurfaceFlinger> flinger = mFlinger.promote();
ALOGD("Screen about to return, flinger = %p", flinger.get());
if (flinger != 0) {
- flinger->screenAcquired(0);
+ flinger->screenAcquired();
}
return true;
}
@@ -98,17 +95,12 @@
return err < 0 ? -errno : int(NO_ERROR);
}
-status_t DisplayHardwareBase::DisplayEventThread::releaseScreen() const {
- mBarrier.open();
- return NO_ERROR;
-}
-
// ----------------------------------------------------------------------------
DisplayHardwareBase::DisplayHardwareBase(const sp<SurfaceFlinger>& flinger,
uint32_t displayIndex)
- : mScreenAcquired(true)
{
+ mScreenAcquired = true;
mDisplayEventThread = new DisplayEventThread(flinger);
}
@@ -130,10 +122,7 @@
}
void DisplayHardwareBase::releaseScreen() const {
- status_t err = mDisplayEventThread->releaseScreen();
- if (err >= 0) {
- mScreenAcquired = false;
- }
+ mScreenAcquired = false;
}
void DisplayHardwareBase::acquireScreen() const {
diff --git a/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.h b/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.h
index fba211b..6857481 100644
--- a/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.h
+++ b/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.h
@@ -19,8 +19,8 @@
#include <stdint.h>
#include <utils/RefBase.h>
+#include <utils/StrongPointer.h>
#include <utils/threads.h>
-#include "Barrier.h"
namespace android {
@@ -48,14 +48,12 @@
private:
class DisplayEventThread : public Thread {
wp<SurfaceFlinger> mFlinger;
- mutable Barrier mBarrier;
status_t waitForFbSleep();
status_t waitForFbWake();
public:
DisplayEventThread(const sp<SurfaceFlinger>& flinger);
virtual ~DisplayEventThread();
virtual bool threadLoop();
- status_t releaseScreen() const;
status_t initCheck() const;
};