From 9e663de4fe1dcc872373ee530c60a375624671c3 Mon Sep 17 00:00:00 2001 From: Jesse Hall Date: Fri, 16 Aug 2013 14:28:37 -0700 Subject: [PATCH] Use new HWC display type/count constants. Change-Id: I774d0c68906ac6dc69268f708c30a6b0868b8816 --- services/surfaceflinger/DisplayDevice.h | 5 +++-- .../surfaceflinger/DisplayHardware/HWComposer.cpp | 19 ++++++------------ .../surfaceflinger/DisplayHardware/HWComposer.h | 23 ++++++++++++---------- services/surfaceflinger/EventThread.cpp | 22 +++++++++++---------- services/surfaceflinger/EventThread.h | 5 ++--- services/surfaceflinger/SurfaceFlinger.cpp | 22 ++++++++++----------- services/surfaceflinger/SurfaceFlinger.h | 2 +- 7 files changed, 48 insertions(+), 50 deletions(-) diff --git a/services/surfaceflinger/DisplayDevice.h b/services/surfaceflinger/DisplayDevice.h index 6f0ce88a11..8e24df757b 100644 --- a/services/surfaceflinger/DisplayDevice.h +++ b/services/surfaceflinger/DisplayDevice.h @@ -38,6 +38,7 @@ namespace android { class DisplayInfo; class DisplaySurface; +class IGraphicBufferProducer; class Layer; class SurfaceFlinger; class HWComposer; @@ -56,8 +57,8 @@ public: DISPLAY_ID_INVALID = -1, DISPLAY_PRIMARY = HWC_DISPLAY_PRIMARY, DISPLAY_EXTERNAL = HWC_DISPLAY_EXTERNAL, - NUM_DISPLAY_TYPES = HWC_NUM_DISPLAY_TYPES, - DISPLAY_VIRTUAL = HWC_NUM_DISPLAY_TYPES + DISPLAY_VIRTUAL = HWC_DISPLAY_VIRTUAL, + NUM_BUILTIN_DISPLAY_TYPES = HWC_NUM_PHYSICAL_DISPLAY_TYPES, }; enum { diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp index f6256f9946..ef07f18826 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp +++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp @@ -48,15 +48,8 @@ namespace android { -#ifndef HWC_DEVICE_API_VERSION_1_3 -#define HWC_DEVICE_API_VERSION_1_3 HARDWARE_DEVICE_API_VERSION_2(1, 3, HWC_HEADER_VERSION) -#endif - #define MIN_HWC_HEADER_VERSION HWC_HEADER_VERSION -#define NUM_PHYSICAL_DISPLAYS HWC_NUM_DISPLAY_TYPES -#define VIRTUAL_DISPLAY_ID_BASE HWC_NUM_DISPLAY_TYPES - static uint32_t hwcApiVersion(const hwc_composer_device_1_t* hwc) { uint32_t hwcVersion = hwc->common.version; return hwcVersion & HARDWARE_API_VERSION_2_MAJ_MIN_MASK; @@ -96,7 +89,7 @@ HWComposer::HWComposer( mEventHandler(handler), mVSyncCount(0), mDebugForceFakeVSync(false) { - for (size_t i =0 ; i0] can be NULL. that display is to be ignored - struct hwc_display_contents_1* mLists[MAX_DISPLAYS]; - DisplayData mDisplayData[MAX_DISPLAYS]; + struct hwc_display_contents_1* mLists[MAX_HWC_DISPLAYS]; + DisplayData mDisplayData[MAX_HWC_DISPLAYS]; size_t mNumDisplays; cb_context* mCBContext; diff --git a/services/surfaceflinger/EventThread.cpp b/services/surfaceflinger/EventThread.cpp index 4126c8a1db..a61ad72fb3 100644 --- a/services/surfaceflinger/EventThread.cpp +++ b/services/surfaceflinger/EventThread.cpp @@ -41,7 +41,7 @@ EventThread::EventThread(const sp& flinger) mUseSoftwareVSync(false), mDebugVsyncEnabled(false) { - for (int32_t i=0 ; i= HWC_NUM_DISPLAY_TYPES, + ALOGE_IF(type >= DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES, "received vsync event for an invalid display (id=%d)", type); Mutex::Autolock _l(mLock); - if (type < HWC_NUM_DISPLAY_TYPES) { + if (type < DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES) { mVSyncEvent[type].header.type = DisplayEventReceiver::DISPLAY_EVENT_VSYNC; mVSyncEvent[type].header.id = type; mVSyncEvent[type].header.timestamp = timestamp; @@ -126,11 +126,11 @@ void EventThread::onVSyncReceived(int type, nsecs_t timestamp) { } void EventThread::onHotplugReceived(int type, bool connected) { - ALOGE_IF(type >= HWC_NUM_DISPLAY_TYPES, + ALOGE_IF(type >= DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES, "received hotplug event for an invalid display (id=%d)", type); Mutex::Autolock _l(mLock); - if (type < HWC_NUM_DISPLAY_TYPES) { + if (type < DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES) { DisplayEventReceiver::Event event; event.header.type = DisplayEventReceiver::DISPLAY_EVENT_HOTPLUG; event.header.id = type; @@ -184,7 +184,7 @@ Vector< sp > EventThread::waitForEvent( size_t vsyncCount = 0; nsecs_t timestamp = 0; - for (int32_t i=0 ; i > EventThread::waitForEvent( // FIXME: how do we decide which display id the fake // vsync came from ? mVSyncEvent[0].header.type = DisplayEventReceiver::DISPLAY_EVENT_VSYNC; - mVSyncEvent[0].header.id = HWC_DISPLAY_PRIMARY; + mVSyncEvent[0].header.id = DisplayDevice::DISPLAY_PRIMARY; mVSyncEvent[0].header.timestamp = systemTime(SYSTEM_TIME_MONOTONIC); mVSyncEvent[0].vsync.count++; } @@ -308,14 +308,16 @@ Vector< sp > EventThread::waitForEvent( void EventThread::enableVSyncLocked() { if (!mUseSoftwareVSync) { // never enable h/w VSYNC when screen is off - mFlinger->eventControl(HWC_DISPLAY_PRIMARY, SurfaceFlinger::EVENT_VSYNC, true); + mFlinger->eventControl(DisplayDevice::DISPLAY_PRIMARY, + SurfaceFlinger::EVENT_VSYNC, true); mPowerHAL.vsyncHint(true); } mDebugVsyncEnabled = true; } void EventThread::disableVSyncLocked() { - mFlinger->eventControl(HWC_DISPLAY_PRIMARY, SurfaceFlinger::EVENT_VSYNC, false); + mFlinger->eventControl(DisplayDevice::DISPLAY_PRIMARY, + SurfaceFlinger::EVENT_VSYNC, false); mPowerHAL.vsyncHint(false); mDebugVsyncEnabled = false; } @@ -328,7 +330,7 @@ void EventThread::dump(String8& result) const { mUseSoftwareVSync?"enabled":"disabled"); result.appendFormat(" numListeners=%u,\n events-delivered: %u\n", mDisplayEventConnections.size(), - mVSyncEvent[HWC_DISPLAY_PRIMARY].vsync.count); + mVSyncEvent[DisplayDevice::DISPLAY_PRIMARY].vsync.count); for (size_t i=0 ; i connection = mDisplayEventConnections.itemAt(i).promote(); diff --git a/services/surfaceflinger/EventThread.h b/services/surfaceflinger/EventThread.h index 35ac0c82aa..5e88693ca7 100644 --- a/services/surfaceflinger/EventThread.h +++ b/services/surfaceflinger/EventThread.h @@ -23,12 +23,11 @@ #include #include -#include - #include #include #include +#include "DisplayDevice.h" #include "DisplayHardware/PowerHAL.h" // --------------------------------------------------------------------------- @@ -104,7 +103,7 @@ private: // protected by mLock SortedVector< wp > mDisplayEventConnections; Vector< DisplayEventReceiver::Event > mPendingEvents; - DisplayEventReceiver::Event mVSyncEvent[HWC_NUM_DISPLAY_TYPES]; + DisplayEventReceiver::Event mVSyncEvent[DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES]; bool mUseSoftwareVSync; // for debugging diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 68b9950c8b..dcdd1d0f93 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -234,7 +234,7 @@ void SurfaceFlinger::createBuiltinDisplayLocked(DisplayDevice::DisplayType type) } sp SurfaceFlinger::getBuiltInDisplay(int32_t id) { - if (uint32_t(id) >= DisplayDevice::NUM_DISPLAY_TYPES) { + if (uint32_t(id) >= DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES) { ALOGE("getDefaultDisplay: id=%d is not a valid default display id", id); return NULL; } @@ -461,7 +461,7 @@ status_t SurfaceFlinger::readyToRun() "couldn't create EGLContext"); // initialize our non-virtual displays - for (size_t i=0 ; iisConnected(i) || type==DisplayDevice::DISPLAY_PRIMARY) { @@ -511,7 +511,7 @@ status_t SurfaceFlinger::readyToRun() } int32_t SurfaceFlinger::allocateHwcDisplayId(DisplayDevice::DisplayType type) { - return (uint32_t(type) < DisplayDevice::NUM_DISPLAY_TYPES) ? + return (uint32_t(type) < DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES) ? type : mHwc->allocateDisplayId(); } @@ -540,7 +540,7 @@ bool SurfaceFlinger::authenticateSurfaceTexture( status_t SurfaceFlinger::getDisplayInfo(const sp& display, DisplayInfo* info) { int32_t type = NAME_NOT_FOUND; - for (int i=0 ; ionVSyncReceived(type, timestamp); } @@ -676,7 +676,7 @@ void SurfaceFlinger::onHotplugReceived(int type, bool connected) { return; } - if (uint32_t(type) < DisplayDevice::NUM_DISPLAY_TYPES) { + if (uint32_t(type) < DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES) { Mutex::Autolock _l(mStateLock); if (connected) { createBuiltinDisplayLocked((DisplayDevice::DisplayType)type); @@ -1064,7 +1064,7 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags) sp hw(getDisplayDevice(draw.keyAt(i))); if (hw != NULL) hw->disconnect(getHwComposer()); - if (draw[i].type < DisplayDevice::NUM_DISPLAY_TYPES) + if (draw[i].type < DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES) mEventThread->onHotplugReceived(draw[i].type, false); mDisplays.removeItem(draw.keyAt(i)); } else { @@ -2006,7 +2006,7 @@ void SurfaceFlinger::onScreenAcquired(const sp& hw) { hw->acquireScreen(); int32_t type = hw->getDisplayType(); - if (type < DisplayDevice::NUM_DISPLAY_TYPES) { + if (type < DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES) { // built-in display, tell the HWC getHwComposer().acquire(type); @@ -2028,7 +2028,7 @@ void SurfaceFlinger::onScreenReleased(const sp& hw) { hw->releaseScreen(); int32_t type = hw->getDisplayType(); - if (type < DisplayDevice::NUM_DISPLAY_TYPES) { + if (type < DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES) { if (type == DisplayDevice::DISPLAY_PRIMARY) { // FIXME: eventthread only knows about the main display right now mEventThread->onScreenReleased(); @@ -2052,7 +2052,7 @@ void SurfaceFlinger::unblank(const sp& display) { const sp hw(mFlinger.getDisplayDevice(mDisplay)); if (hw == NULL) { ALOGE("Attempt to unblank null display %p", mDisplay.get()); - } else if (hw->getDisplayType() >= DisplayDevice::NUM_DISPLAY_TYPES) { + } else if (hw->getDisplayType() >= DisplayDevice::DISPLAY_VIRTUAL) { ALOGW("Attempt to unblank virtual display"); } else { mFlinger.onScreenAcquired(hw); @@ -2075,7 +2075,7 @@ void SurfaceFlinger::blank(const sp& display) { const sp hw(mFlinger.getDisplayDevice(mDisplay)); if (hw == NULL) { ALOGE("Attempt to blank null display %p", mDisplay.get()); - } else if (hw->getDisplayType() >= DisplayDevice::NUM_DISPLAY_TYPES) { + } else if (hw->getDisplayType() >= DisplayDevice::DISPLAY_VIRTUAL) { ALOGW("Attempt to blank virtual display"); } else { mFlinger.onScreenReleased(hw); diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index ce096d318c..0906f8029a 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -421,7 +421,7 @@ private: EGLConfig mEGLConfig; EGLDisplay mEGLDisplay; EGLint mEGLNativeVisualId; - sp mBuiltinDisplays[DisplayDevice::NUM_DISPLAY_TYPES]; + sp mBuiltinDisplays[DisplayDevice::NUM_BUILTIN_DISPLAY_TYPES]; // Can only accessed from the main thread, these members // don't need synchronization -- 2.11.0