diff options
author | Saadi Maalem <saadi.maalem@intel.com> | 2015-06-17 15:37:08 +0800 |
---|---|---|
committer | Christopher R. Palmer <crpalmer@gmail.com> | 2016-01-07 20:58:18 -0500 |
commit | e8f0703d94f5f81f82b8197a579230a85d965434 (patch) | |
tree | 5d719bbf667b80f59013f29e01a787b89ee4579c | |
parent | 59855cd3b73d1119d8bd7b4ff3f1a3b386a77218 (diff) | |
download | android_hardware_intel_img_hwcomposer-e8f0703d94f5f81f82b8197a579230a85d965434.tar.gz android_hardware_intel_img_hwcomposer-e8f0703d94f5f81f82b8197a579230a85d965434.tar.bz2 android_hardware_intel_img_hwcomposer-e8f0703d94f5f81f82b8197a579230a85d965434.zip |
Hwcomposer: Enable VirtualDisplay feature
JIRA: MARVIN-68
Fixed fd leaks issues with VirtualDisplays.
Due to removal of WIDI, the VirtualDisplay feature got removed
and we end up with a file descriptor leakage when using
extensively the VirtualDisplay feature.
Add back VirtualDisplay feature without WIDI support.
Change-Id: I7718222f88eb765ed110afe71f1f496e66a23cfd
Signed-off-by: Liang Weilong <weilongx.liang@intel.com>
Signed-off-by: Guillaume Ranquet <guillaumex.ranquet@intel.com>
Reviewed-on: https://android.intel.com/380907
Reviewed-by: Tasayco Loarte, VictorX <victorx.tasayco.loarte@intel.com>
Reviewed-by: Liu, Kevin <kevin.liu@intel.com>
Reviewed-by: jenkins_ndg <jenkins_ndg@intel.com>
Reviewed-by: Akue, LoicX <loicx.akue@intel.com>
Reviewed-by: Ledentec, AlexandreX <alexandrex.ledentec@intel.com>
Reviewed-by: Maalem, Saadi <saadi.maalem@intel.com>
Tested-by: Tasayco Loarte, VictorX <victorx.tasayco.loarte@intel.com>
-rwxr-xr-x | merrifield/common/base/DisplayAnalyzer.cpp | 9 | ||||
-rw-r--r-- | merrifield/common/base/VsyncManager.cpp | 2 | ||||
-rwxr-xr-x | merrifield/common/devices/VirtualDevice.cpp | 89 | ||||
-rw-r--r-- | merrifield/include/IDisplayDevice.h | 2 | ||||
-rwxr-xr-x | merrifield/include/VirtualDevice.h | 23 | ||||
-rwxr-xr-x | merrifield/ips/tangier/TngDisplayContext.cpp | 4 | ||||
-rw-r--r-- | merrifield/platforms/merrifield/Android.mk | 8 | ||||
-rw-r--r-- | merrifield/platforms/merrifield/PlatFactory.cpp | 4 | ||||
-rw-r--r-- | merrifield/platforms/merrifield_plus/Android.mk | 9 | ||||
-rw-r--r-- | merrifield/platforms/merrifield_plus/PlatFactory.cpp | 2 |
10 files changed, 93 insertions, 59 deletions
diff --git a/merrifield/common/base/DisplayAnalyzer.cpp b/merrifield/common/base/DisplayAnalyzer.cpp index 5da7403..a0b9ffd 100755 --- a/merrifield/common/base/DisplayAnalyzer.cpp +++ b/merrifield/common/base/DisplayAnalyzer.cpp @@ -24,9 +24,7 @@ #include <cutils/properties.h> #include <GraphicBuffer.h> #include <ExternalDevice.h> -#ifdef INTEL_WIDI_MERRIFIELD #include <VirtualDevice.h> -#endif namespace android { namespace intel { @@ -136,19 +134,12 @@ void DisplayAnalyzer::checkVideoExtMode() Hwcomposer *hwc = &Hwcomposer::getInstance(); ExternalDevice *eDev = static_cast<ExternalDevice *>(hwc->getDisplayDevice(IDisplayDevice::DEVICE_EXTERNAL)); -#ifdef INTEL_WIDI_MERRIFIELD VirtualDevice *vDev = static_cast<VirtualDevice *>(hwc->getDisplayDevice(IDisplayDevice::DEVICE_VIRTUAL)); if ((!eDev || !eDev->isConnected()) && (!vDev || !vDev->isFrameServerActive())) { mVideoExtModeEligible = false; return; } -#else - if (!eDev || !eDev->isConnected()) { - mVideoExtModeEligible = false; - return; - } -#endif /*INTEL_WIDI_MERRIFIELD*/ bool geometryChanged = false; int activeDisplays = 0; diff --git a/merrifield/common/base/VsyncManager.cpp b/merrifield/common/base/VsyncManager.cpp index 56e935e..37fa0e7 100644 --- a/merrifield/common/base/VsyncManager.cpp +++ b/merrifield/common/base/VsyncManager.cpp @@ -156,7 +156,6 @@ int VsyncManager::getCandidate() return IDisplayDevice::DEVICE_EXTERNAL; } -#ifdef INTEL_WIDI_MERRIFIELD // use vsync from virtual display when video extended mode is entered if (Hwcomposer::getInstance().getDisplayAnalyzer()->isVideoExtModeActive()) { device = getDisplayDevice(IDisplayDevice::DEVICE_VIRTUAL); @@ -165,7 +164,6 @@ int VsyncManager::getCandidate() } WTRACE("Could not use vsync from secondary device"); } -#endif return IDisplayDevice::DEVICE_PRIMARY; } diff --git a/merrifield/common/devices/VirtualDevice.cpp b/merrifield/common/devices/VirtualDevice.cpp index a4396d7..965c633 100755 --- a/merrifield/common/devices/VirtualDevice.cpp +++ b/merrifield/common/devices/VirtualDevice.cpp @@ -480,26 +480,34 @@ struct VirtualDevice::BlitTask : public VirtualDevice::RenderTask { struct VirtualDevice::FrameTypeChangedTask : public VirtualDevice::Task { virtual void run(VirtualDevice& vd) { +#ifdef INTEL_WIDI typeChangeListener->frameTypeChanged(inputFrameInfo); ITRACE("Notify frameTypeChanged: %dx%d in %dx%d @ %d fps", inputFrameInfo.contentWidth, inputFrameInfo.contentHeight, inputFrameInfo.bufferWidth, inputFrameInfo.bufferHeight, inputFrameInfo.contentFrameRateN); +#endif } +#ifdef INTEL_WIDI sp<IFrameTypeChangeListener> typeChangeListener; FrameInfo inputFrameInfo; +#endif }; struct VirtualDevice::BufferInfoChangedTask : public VirtualDevice::Task { virtual void run(VirtualDevice& vd) { +#ifdef INTEL_WIDI typeChangeListener->bufferInfoChanged(outputFrameInfo); ITRACE("Notify bufferInfoChanged: %dx%d in %dx%d @ %d fps", outputFrameInfo.contentWidth, outputFrameInfo.contentHeight, outputFrameInfo.bufferWidth, outputFrameInfo.bufferHeight, outputFrameInfo.contentFrameRateN); +#endif } +#ifdef INTEL_WIDI sp<IFrameTypeChangeListener> typeChangeListener; FrameInfo outputFrameInfo; +#endif }; struct VirtualDevice::OnFrameReadyTask : public VirtualDevice::Task { @@ -513,7 +521,7 @@ struct VirtualDevice::OnFrameReadyTask : public VirtualDevice::Task { //from the vector properly even if the notifyBufferReturned call acquires mHeldBuffersLock first. vd.mHeldBuffers.add(handle, heldBuffer); } - +#ifdef INTEL_WIDI // FIXME: we could remove this casting once onFrameReady receives // a buffer_handle_t handle status_t result = frameListener->onFrameReady((uint32_t)handle, handleType, renderTimestamp, mediaTimestamp); @@ -521,12 +529,18 @@ struct VirtualDevice::OnFrameReadyTask : public VirtualDevice::Task { Mutex::Autolock _l(vd.mHeldBuffersLock); vd.mHeldBuffers.removeItem(handle); } +#else + Mutex::Autolock _l(vd.mHeldBuffersLock); + vd.mHeldBuffers.removeItem(handle); +#endif } sp<RenderTask> renderTask; sp<RefBase> heldBuffer; - sp<IFrameListener> frameListener; buffer_handle_t handle; +#ifdef INTEL_WIDI + sp<IFrameListener> frameListener; HWCBufferHandleType handleType; +#endif int64_t renderTimestamp; int64_t mediaTimestamp; }; @@ -642,7 +656,9 @@ VirtualDevice::VirtualDevice(Hwcomposer& hwc) mDecHeight(0) { CTRACE(); +#ifdef INTEL_WIDI mNextConfig.frameServerActive = false; +#endif } VirtualDevice::~VirtualDevice() @@ -686,7 +702,7 @@ bool VirtualDevice::threadLoop() return true; } - +#ifdef INTEL_WIDI status_t VirtualDevice::start(sp<IFrameTypeChangeListener> typeChangeListener) { ITRACE(); @@ -730,12 +746,17 @@ status_t VirtualDevice::stop(bool isConnected) } return NO_ERROR; } +#endif bool VirtualDevice::isFrameServerActive() const { +#ifdef INTEL_WIDI return mCurrentConfig.frameServerActive; +#endif + return false; } +#ifdef INTEL_WIDI /* TODO: 64-bit - this handle of size 32-bit is a problem for 64-bit */ status_t VirtualDevice::notifyBufferReturned(int handle) { @@ -759,7 +780,7 @@ status_t VirtualDevice::setResolution(const FrameProcessingPolicy& policy, sp<IF mNextConfig.policy = policy; return NO_ERROR; } - +#endif static bool canUseDirectly(const hwc_display_contents_1_t *display, size_t n) { const hwc_layer_1_t& fbTarget = display->hwLayers[display->numHwLayers-1]; @@ -792,11 +813,12 @@ bool VirtualDevice::prepare(hwc_display_contents_1_t *display) mVspInUse = false; mExpectAcquireFences = false; mIsForceCloneMode = false; - +#ifdef INTEL_WIDI { Mutex::Autolock _l(mConfigLock); mCurrentConfig = mNextConfig; } +#endif bool shouldBeConnected = (display != NULL); if (shouldBeConnected != mLastConnectionStatus) { @@ -822,12 +844,17 @@ bool VirtualDevice::prepare(hwc_display_contents_1_t *display) return true; } +#ifdef INTEL_WIDI if (!mCurrentConfig.frameServerActive) { // We're done with CSC buffers, since we blit to outbuf in this mode. // We want to keep mappings cached, so we don't clear mMappedBufferCache. Mutex::Autolock _l(mTaskLock); mCscBuffers.clear(); } +#else + Mutex::Autolock _l(mTaskLock); + mCscBuffers.clear(); +#endif // by default send the FRAMEBUFFER_TARGET layer (composited image) const ssize_t fbTarget = display->numHwLayers-1; @@ -837,7 +864,7 @@ bool VirtualDevice::prepare(hwc_display_contents_1_t *display) DisplayAnalyzer *analyzer = mHwc.getDisplayAnalyzer(); mProtectedMode = false; - +#ifdef INTEL_WIDI if (mCurrentConfig.typeChangeListener != NULL && !analyzer->isOverlayAllowed() && analyzer->getVideoInstances() <= 1) { @@ -879,13 +906,14 @@ bool VirtualDevice::prepare(hwc_display_contents_1_t *display) break; } } +#endif if (mYuvLayer == -1) { mFirstVideoFrame = true; mDecWidth = 0; mDecHeight = 0; } - +#ifdef INTEL_WIDI if (mCurrentConfig.frameServerActive && mCurrentConfig.extendedModeEnabled && mYuvLayer != -1) { if (handleExtendedMode(display)) { mYuvLayer = -1; @@ -903,7 +931,7 @@ bool VirtualDevice::prepare(hwc_display_contents_1_t *display) mIsForceCloneMode = true; mYuvLayer = -1; } - +#endif if (mYuvLayer == 0 && fbTarget == 1) { // No RGB layer, so tell queueCompose to use blank RGB in fbtarget. mRgbLayer = -1; @@ -933,10 +961,11 @@ bool VirtualDevice::prepare(hwc_display_contents_1_t *display) // This has no effect when the video is the bottommost layer. display->hwLayers[mYuvLayer].hints |= HWC_HINT_CLEAR_FB; +#ifdef INTEL_WIDI // we're streaming fbtarget, so send onFramePrepare and wait for composition to happen if (mCurrentConfig.frameListener != NULL) mCurrentConfig.frameListener->onFramePrepare(mRenderTimestamp, -1); - +#endif return true; } @@ -1003,7 +1032,11 @@ bool VirtualDevice::queueCompose(hwc_display_contents_1_t *display) ETRACE("No video handle"); return false; } +#ifdef INTEL_WIDI if (!mCurrentConfig.frameServerActive && display->outbuf == NULL) { +#else + if (display->outbuf == NULL) { +#endif ETRACE("No outbuf"); return true; // fallback would be pointless } @@ -1021,6 +1054,7 @@ bool VirtualDevice::queueCompose(hwc_display_contents_1_t *display) composeTask->outHeight = fbTarget.sourceCropf.bottom - fbTarget.sourceCropf.top; bool scaleRgb = false; +#ifdef INTEL_WIDI if (mCurrentConfig.frameServerActive) { if (mVspUpscale) { composeTask->outWidth = mCurrentConfig.policy.scaledWidth; @@ -1039,6 +1073,9 @@ bool VirtualDevice::queueCompose(hwc_display_contents_1_t *display) } else { composeTask->outputHandle = display->outbuf; } +#else + composeTask->outputHandle = display->outbuf; +#endif vspPrepare(composeTask->outWidth, composeTask->outHeight); @@ -1258,7 +1295,7 @@ bool VirtualDevice::queueCompose(hwc_display_contents_1_t *display) mTasks.push_back(composeTask); mRequestQueued.signal(); - +#ifdef INTEL_WIDI if (mCurrentConfig.frameServerActive) { FrameInfo inputFrameInfo; @@ -1315,6 +1352,9 @@ bool VirtualDevice::queueCompose(hwc_display_contents_1_t *display) else { display->retireFenceFd = dup(retireFd); } +#else + display->retireFenceFd = dup(retireFd); +#endif return true; } @@ -1376,7 +1416,7 @@ bool VirtualDevice::queueColorConvert(hwc_display_contents_1_t *display) // Framebuffer after BlitTask::run() calls sw_sync_timeline_inc(). layer.releaseFenceFd = sw_sync_fence_create(mSyncTimelineFd, "widi_blit_retire", mNextSyncPoint); mNextSyncPoint++; - +#ifdef INTEL_WIDI if (mCurrentConfig.frameServerActive) { blitTask->destHandle = mCscBuffers.get(blitTask->destRect.w, blitTask->destRect.h, &heldBuffer); blitTask->destAcquireFenceFd = -1; @@ -1394,7 +1434,13 @@ bool VirtualDevice::queueColorConvert(hwc_display_contents_1_t *display) display->outbufAcquireFenceFd = -1; display->retireFenceFd = dup(layer.releaseFenceFd); } - +#else + blitTask->destHandle = display->outbuf; + blitTask->destAcquireFenceFd = display->outbufAcquireFenceFd; + // don't let TngDisplayContext::commitEnd() close this + display->outbufAcquireFenceFd = -1; + display->retireFenceFd = dup(layer.releaseFenceFd); +#endif if (blitTask->destHandle == NULL) { WTRACE("Out of CSC buffers, dropping frame"); return false; @@ -1402,7 +1448,7 @@ bool VirtualDevice::queueColorConvert(hwc_display_contents_1_t *display) mTasks.push_back(blitTask); mRequestQueued.signal(); - +#ifdef INTEL_WIDI if (mCurrentConfig.frameServerActive) { FrameInfo inputFrameInfo; memset(&inputFrameInfo, 0, sizeof(inputFrameInfo)); @@ -1444,10 +1490,10 @@ bool VirtualDevice::queueColorConvert(hwc_display_contents_1_t *display) mTasks.push_back(frameReadyTask); } } - +#endif return true; } - +#ifdef INTEL_WIDI bool VirtualDevice::handleExtendedMode(hwc_display_contents_1_t *display) { FrameInfo inputFrameInfo; @@ -1689,6 +1735,7 @@ void VirtualDevice::queueBufferInfo(const FrameInfo& outputFrameInfo) mTasks.push_back(notifyTask); } } +#endif void VirtualDevice::colorSwap(buffer_handle_t src, buffer_handle_t dest, uint32_t pixelCount) { @@ -2169,6 +2216,9 @@ bool VirtualDevice::compositionComplete() bool VirtualDevice::initialize() { + mRgbLayer = -1; + mYuvLayer = -1; +#ifdef INTEL_WIDI // Add initialization codes here. If init fails, invoke DEINIT_AND_RETURN_FALSE(); mNextConfig.typeChangeListener = NULL; mNextConfig.policy.scaledWidth = 0; @@ -2180,12 +2230,10 @@ bool VirtualDevice::initialize() mNextConfig.forceNotifyFrameType = false; mNextConfig.forceNotifyBufferInfo = false; mCurrentConfig = mNextConfig; - mRgbLayer = -1; - mYuvLayer = -1; memset(&mLastInputFrameInfo, 0, sizeof(mLastInputFrameInfo)); memset(&mLastOutputFrameInfo, 0, sizeof(mLastOutputFrameInfo)); - +#endif mPayloadManager = mHwc.getPlatFactory()->createVideoPayloadManager(); if (!mPayloadManager) { @@ -2204,6 +2252,7 @@ bool VirtualDevice::initialize() mThread = new WidiBlitThread(this); mThread->run("WidiBlit", PRIORITY_URGENT_DISPLAY); +#ifdef INTEL_WIDI // Publish frame server service with service manager status_t ret = defaultServiceManager()->addService(String16("hwc.widi"), this); if (ret == NO_ERROR) { @@ -2213,7 +2262,9 @@ bool VirtualDevice::initialize() ETRACE("Could not register hwc.widi with service manager, error = %d", ret); deinitialize(); } - +#else + mInitialized = true; +#endif mVspEnabled = false; mVspInUse = false; mVspWidth = 0; diff --git a/merrifield/include/IDisplayDevice.h b/merrifield/include/IDisplayDevice.h index d9a6ac2..ad99a2f 100644 --- a/merrifield/include/IDisplayDevice.h +++ b/merrifield/include/IDisplayDevice.h @@ -55,9 +55,7 @@ public: enum { DEVICE_PRIMARY = HWC_DISPLAY_PRIMARY, DEVICE_EXTERNAL = HWC_DISPLAY_EXTERNAL, -#ifdef INTEL_WIDI_MERRIFIELD DEVICE_VIRTUAL = HWC_DISPLAY_VIRTUAL, -#endif DEVICE_COUNT, }; enum { diff --git a/merrifield/include/VirtualDevice.h b/merrifield/include/VirtualDevice.h index 2af3c6b..a2ae7d4 100755 --- a/merrifield/include/VirtualDevice.h +++ b/merrifield/include/VirtualDevice.h @@ -22,9 +22,10 @@ #include <utils/Condition.h> #include <utils/Mutex.h> #include <utils/Vector.h> - +#include <utils/List.h> +#ifdef INTEL_WIDI #include "IFrameServer.h" - +#endif #include <va/va.h> #include <va/va_vpp.h> @@ -36,7 +37,11 @@ class DisplayPlaneManager; class IVideoPayloadManager; class SoftVsyncObserver; +#ifdef INTEL_WIDI class VirtualDevice : public IDisplayDevice, public BnFrameServer { +#else +class VirtualDevice : public IDisplayDevice, public RefBase{ +#endif protected: class VAMappedHandle; class VAMappedHandleObject; @@ -54,6 +59,7 @@ protected: android::sp<VirtualDevice> vd; android::sp<CachedBuffer> cachedBuffer; }; +#ifdef INTEL_WIDI struct Configuration { sp<IFrameTypeChangeListener> typeChangeListener; sp<IFrameListener> frameListener; @@ -63,6 +69,7 @@ protected: bool forceNotifyFrameType; bool forceNotifyBufferInfo; }; +#endif class BufferList { public: BufferList(VirtualDevice& vd, const char* name, uint32_t limit, uint32_t format, uint32_t usage); @@ -91,8 +98,10 @@ protected: struct OnFrameReadyTask; Mutex mConfigLock; +#ifdef INTEL_WIDI Configuration mCurrentConfig; Configuration mNextConfig; +#endif ssize_t mRgbLayer; ssize_t mYuvLayer; bool mProtectedMode; @@ -114,10 +123,10 @@ protected: int mSyncTimelineFd; unsigned mNextSyncPoint; bool mExpectAcquireFences; - +#ifdef INTEL_WIDI FrameInfo mLastInputFrameInfo; FrameInfo mLastOutputFrameInfo; - +#endif int32_t mVideoFramerate; android::KeyedVector<buffer_handle_t, android::sp<CachedBuffer> > mMappedBufferCache; @@ -147,11 +156,12 @@ private: bool sendToWidi(hwc_display_contents_1_t *display); bool queueCompose(hwc_display_contents_1_t *display); bool queueColorConvert(hwc_display_contents_1_t *display); +#ifdef INTEL_WIDI bool handleExtendedMode(hwc_display_contents_1_t *display); void queueFrameTypeInfo(const FrameInfo& inputFrameInfo); void queueBufferInfo(const FrameInfo& outputFrameInfo); - +#endif void colorSwap(buffer_handle_t src, buffer_handle_t dest, uint32_t pixelCount); void vspPrepare(uint32_t width, uint32_t height); void vspEnable(uint32_t width, uint32_t height); @@ -189,13 +199,14 @@ public: virtual int getType() const; virtual void onVsync(int64_t timestamp); virtual void dump(Dump& d); - +#ifdef INTEL_WIDI // IFrameServer methods virtual android::status_t start(sp<IFrameTypeChangeListener> frameTypeChangeListener); virtual android::status_t stop(bool isConnected); /* TODO: 64-bit - this handle of size 32-bit is a problem for 64-bit */ virtual android::status_t notifyBufferReturned(int handle); virtual android::status_t setResolution(const FrameProcessingPolicy& policy, android::sp<IFrameListener> listener); +#endif virtual bool setPowerMode(int mode); virtual int getActiveConfig(); virtual bool setActiveConfig(int index); diff --git a/merrifield/ips/tangier/TngDisplayContext.cpp b/merrifield/ips/tangier/TngDisplayContext.cpp index d7326c1..2f79edc 100755 --- a/merrifield/ips/tangier/TngDisplayContext.cpp +++ b/merrifield/ips/tangier/TngDisplayContext.cpp @@ -218,19 +218,15 @@ bool TngDisplayContext::commitEnd(size_t numDisplays, hwc_display_contents_1_t * displays[i]->hwLayers[j].releaseFenceFd); } -#ifdef INTEL_WIDI_MERRIFIELD // retireFence is used for SurfaceFlinger to do DispSync; // dup releaseFenceFd for physical displays and ignore virtual // display; we don't distinguish between release and retire, and all // physical displays are using a single releaseFence; for virtual // display, fencing is handled by the VirtualDisplay class if (i < IDisplayDevice::DEVICE_VIRTUAL) { -#endif displays[i]->retireFenceFd = (releaseFenceFd != -1) ? dup(releaseFenceFd) : -1; -#ifdef INTEL_WIDI_MERRIFIELD } -#endif } // close original release fence fd diff --git a/merrifield/platforms/merrifield/Android.mk b/merrifield/platforms/merrifield/Android.mk index e9bdc86..1b737bb 100644 --- a/merrifield/platforms/merrifield/Android.mk +++ b/merrifield/platforms/merrifield/Android.mk @@ -37,6 +37,7 @@ LOCAL_SRC_FILES := \ ../../common/devices/PhysicalDevice.cpp \ ../../common/devices/PrimaryDevice.cpp \ ../../common/devices/ExternalDevice.cpp \ + ../../common/devices/VirtualDevice.cpp \ ../../common/observers/UeventObserver.cpp \ ../../common/observers/VsyncEventObserver.cpp \ ../../common/observers/SoftVsyncObserver.cpp \ @@ -115,12 +116,9 @@ LOCAL_MODULE_TAGS := optional LOCAL_MODULE := hwcomposer.$(TARGET_BOARD_PLATFORM) LOCAL_CFLAGS += -DLINUX -ifeq ($(INTEL_WIDI_MERRIFIELD), true) -LOCAL_SRC_FILES += \ - ../../common/devices/VirtualDevice.cpp - +ifeq ($(INTEL_WIDI), true) LOCAL_SHARED_LIBRARIES += libhwcwidi libbinder - LOCAL_CFLAGS += -DINTEL_WIDI_MERRIFIELD + LOCAL_CFLAGS += -DINTEL_WIDI endif ifeq ($(TARGET_HAS_MULTIPLE_DISPLAY),true) diff --git a/merrifield/platforms/merrifield/PlatFactory.cpp b/merrifield/platforms/merrifield/PlatFactory.cpp index 7530225..45b7ade 100644 --- a/merrifield/platforms/merrifield/PlatFactory.cpp +++ b/merrifield/platforms/merrifield/PlatFactory.cpp @@ -21,9 +21,7 @@ #include <IDisplayDevice.h> #include <PrimaryDevice.h> #include <ExternalDevice.h> -#ifdef INTEL_WIDI_MERRIFIELD #include <VirtualDevice.h> -#endif #include <Hwcomposer.h> #include <PlatFactory.h> #include <common/VsyncControl.h> @@ -76,10 +74,8 @@ IDisplayDevice* PlatFactory::createDisplayDevice(int disp) return new PrimaryDevice(hwc, new PlatDeviceControlFactory()); case IDisplayDevice::DEVICE_EXTERNAL: return new ExternalDevice(hwc, new PlatDeviceControlFactory()); -#ifdef INTEL_WIDI_MERRIFIELD case IDisplayDevice::DEVICE_VIRTUAL: return new VirtualDevice(hwc); -#endif default: ETRACE("invalid display device %d", disp); return NULL; diff --git a/merrifield/platforms/merrifield_plus/Android.mk b/merrifield/platforms/merrifield_plus/Android.mk index d9dbddf..65f5b93 100644 --- a/merrifield/platforms/merrifield_plus/Android.mk +++ b/merrifield/platforms/merrifield_plus/Android.mk @@ -37,6 +37,7 @@ LOCAL_SRC_FILES := \ ../../common/devices/PhysicalDevice.cpp \ ../../common/devices/PrimaryDevice.cpp \ ../../common/devices/ExternalDevice.cpp \ + ../../common/devices/VirtualDevice.cpp \ ../../common/observers/UeventObserver.cpp \ ../../common/observers/VsyncEventObserver.cpp \ ../../common/observers/SoftVsyncObserver.cpp \ @@ -118,13 +119,9 @@ LOCAL_MODULE_TAGS := optional LOCAL_MODULE := hwcomposer.$(TARGET_BOARD_PLATFORM) LOCAL_CFLAGS += -DLINUX -#$(error local path is: $(LOCAL_C_INCLUDES)) -ifeq ($(INTEL_WIDI_MERRIFIELD), true) -LOCAL_SRC_FILES += \ - ../../common/devices/VirtualDevice.cpp - +ifeq ($(INTEL_WIDI), true) LOCAL_SHARED_LIBRARIES += libhwcwidi libbinder - LOCAL_CFLAGS += -DINTEL_WIDI_MERRIFIELD + LOCAL_CFLAGS += -DINTEL_WIDI endif ifeq ($(TARGET_HAS_MULTIPLE_DISPLAY),true) diff --git a/merrifield/platforms/merrifield_plus/PlatFactory.cpp b/merrifield/platforms/merrifield_plus/PlatFactory.cpp index 095a4a1..d35635b 100644 --- a/merrifield/platforms/merrifield_plus/PlatFactory.cpp +++ b/merrifield/platforms/merrifield_plus/PlatFactory.cpp @@ -74,10 +74,8 @@ IDisplayDevice* PlatFactory::createDisplayDevice(int disp) return new PrimaryDevice(hwc, new PlatDeviceControlFactory()); case IDisplayDevice::DEVICE_EXTERNAL: return new ExternalDevice(hwc, new PlatDeviceControlFactory()); -#ifdef INTEL_WIDI_MERRIFIELD case IDisplayDevice::DEVICE_VIRTUAL: return new VirtualDevice(hwc); -#endif default: ETRACE("invalid display device %d", disp); return NULL; |