summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Hall <jessehall@google.com>2012-08-22 11:50:00 -0700
committerJesse Hall <jessehall@google.com>2012-08-22 12:08:18 -0700
commit8f971ff6661c875e7adb3f14731e1579c3c80c62 (patch)
treebd076072cfc1ebf7f437c9597d5b9ab8ba75a056
parent9f54ac38860761ef62d9bb8282d54ff51a1a68a3 (diff)
downloadframeworks_native-8f971ff6661c875e7adb3f14731e1579c3c80c62.zip
frameworks_native-8f971ff6661c875e7adb3f14731e1579c3c80c62.tar.gz
frameworks_native-8f971ff6661c875e7adb3f14731e1579c3c80c62.tar.bz2
Pass the correct number of displays based on HWC version
Change-Id: I27372f5d3102ad56f6d67722d631ae18d37f8330
-rw-r--r--services/surfaceflinger/DisplayHardware/HWComposer.cpp13
-rw-r--r--services/surfaceflinger/DisplayHardware/HWComposer.h5
2 files changed, 10 insertions, 8 deletions
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index a3ec352..eda0c0b 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -182,7 +182,7 @@ HWComposer::HWComposer(
EventHandler& handler,
framebuffer_device_t const* fbDev)
: mFlinger(flinger),
- mModule(0), mHwc(0), mCapacity(0),
+ mModule(0), mHwc(0), mNumDisplays(1), mCapacity(0),
mNumOVLayers(0), mNumFBLayers(0),
mCBContext(new cb_context),
mEventHandler(handler), mRefreshPeriod(0),
@@ -234,8 +234,11 @@ HWComposer::HWComposer(
memset(mCBContext->procs.zero, 0, sizeof(mCBContext->procs.zero));
}
+ if (hwcHasVersion(mHwc, HWC_DEVICE_API_VERSION_1_1))
+ mNumDisplays = HWC_NUM_DISPLAY_TYPES;
+
// create initial empty display contents for display 0
- createWorkList(MAIN, 0);
+ createWorkList(HWC_DISPLAY_PRIMARY, 0);
}
}
@@ -358,7 +361,7 @@ status_t HWComposer::createWorkList(int32_t id, size_t numLayers) {
}
status_t HWComposer::prepare() const {
- int err = hwcPrepare(mHwc, 1,
+ int err = hwcPrepare(mHwc, mNumDisplays,
const_cast<hwc_display_contents_1_t**>(mLists));
if (err == NO_ERROR) {
@@ -428,7 +431,7 @@ size_t HWComposer::getLayerCount(int32_t id, int type) const {
status_t HWComposer::commit(void* fbDisplay, void* fbSurface) const {
int err = NO_ERROR;
if (mHwc) {
- err = hwcSet(mHwc, fbDisplay, fbSurface, 1,
+ err = hwcSet(mHwc, fbDisplay, fbSurface, mNumDisplays,
const_cast<hwc_display_contents_1_t**>(mLists));
if (hwcHasVersion(mHwc, HWC_DEVICE_API_VERSION_1_0)) {
if (mLists[0]->flipFenceFd != -1) {
@@ -461,7 +464,7 @@ status_t HWComposer::acquire() const {
status_t HWComposer::disable() {
if (mHwc) {
hwcNumHwLayers(mHwc, mLists[0]) = 0;
- int err = hwcPrepare(mHwc, 1, mLists);
+ int err = hwcPrepare(mHwc, mNumDisplays, mLists);
return (status_t)err;
}
return NO_ERROR;
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h
index ac2257e..8080d3b 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.h
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.h
@@ -58,9 +58,7 @@ public:
};
enum {
- MAIN = 0,
- HDMI = 1,
- MAX_DISPLAYS
+ MAX_DISPLAYS = HWC_NUM_DISPLAY_TYPES + 1
};
HWComposer(
@@ -245,6 +243,7 @@ private:
// TODO: decide whether mLists[i>0] should be non-NULL when display i is
// not attached/enabled.
struct hwc_display_contents_1* mLists[MAX_DISPLAYS];
+ size_t mNumDisplays;
size_t mCapacity;
mutable size_t mNumOVLayers;