diff options
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 9f687e260a..808fa1bc2e 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -190,7 +190,7 @@ SurfaceFlinger::~SurfaceFlinger() eglTerminate(display); } -void SurfaceFlinger::binderDied(const wp<IBinder>& who) +void SurfaceFlinger::binderDied(const wp<IBinder>& /* who */) { // the window manager died on us. prepare its eulogy. @@ -593,12 +593,12 @@ void SurfaceFlinger::signalRefresh() { } status_t SurfaceFlinger::postMessageAsync(const sp<MessageBase>& msg, - nsecs_t reltime, uint32_t flags) { + nsecs_t reltime, uint32_t /* flags */) { return mEventQueue.postMessage(msg, reltime); } status_t SurfaceFlinger::postMessageSync(const sp<MessageBase>& msg, - nsecs_t reltime, uint32_t flags) { + nsecs_t reltime, uint32_t /* flags */) { status_t res = mEventQueue.postMessage(msg, reltime); if (res == NO_ERROR) { msg->wait(); @@ -1710,7 +1710,7 @@ status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer) { return status_t(index); } -uint32_t SurfaceFlinger::peekTransactionFlags(uint32_t flags) { +uint32_t SurfaceFlinger::peekTransactionFlags(uint32_t /* flags */) { return android_atomic_release_load(&mTransactionFlags); } @@ -2220,8 +2220,8 @@ status_t SurfaceFlinger::dump(int fd, const Vector<String16>& args) return NO_ERROR; } -void SurfaceFlinger::listLayersLocked(const Vector<String16>& args, size_t& index, - String8& result) const +void SurfaceFlinger::listLayersLocked(const Vector<String16>& /* args */, + size_t& /* index */, String8& result) const { const LayerVector& currentLayers = mCurrentState.layersSortedByZ; const size_t count = currentLayers.size(); @@ -2259,7 +2259,7 @@ void SurfaceFlinger::dumpStatsLocked(const Vector<String16>& args, size_t& index } void SurfaceFlinger::clearStatsLocked(const Vector<String16>& args, size_t& index, - String8& result) + String8& /* result */) { String8 name; if (index < args.size()) { @@ -2664,7 +2664,7 @@ class GraphicProducerWrapper : public BBinder, public MessageHandler { * data and reply Parcel and forward them to the calling thread. */ virtual status_t transact(uint32_t code, - const Parcel& data, Parcel* reply, uint32_t flags) { + const Parcel& data, Parcel* reply, uint32_t /* flags */) { this->code = code; this->data = &data; this->reply = reply; @@ -2718,7 +2718,8 @@ public: status_t SurfaceFlinger::captureScreen(const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, - uint32_t minLayerZ, uint32_t maxLayerZ) { + uint32_t minLayerZ, uint32_t maxLayerZ, + bool useIdentityTransform) { if (CC_UNLIKELY(display == 0)) return BAD_VALUE; @@ -2744,16 +2745,19 @@ status_t SurfaceFlinger::captureScreen(const sp<IBinder>& display, sp<IGraphicBufferProducer> producer; uint32_t reqWidth, reqHeight; uint32_t minLayerZ,maxLayerZ; + bool useIdentityTransform; status_t result; public: MessageCaptureScreen(SurfaceFlinger* flinger, const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, - uint32_t minLayerZ, uint32_t maxLayerZ) + uint32_t minLayerZ, uint32_t maxLayerZ, + bool useIdentityTransform) : flinger(flinger), display(display), producer(producer), reqWidth(reqWidth), reqHeight(reqHeight), minLayerZ(minLayerZ), maxLayerZ(maxLayerZ), + useIdentityTransform(useIdentityTransform), result(PERMISSION_DENIED) { } @@ -2763,8 +2767,9 @@ status_t SurfaceFlinger::captureScreen(const sp<IBinder>& display, virtual bool handler() { Mutex::Autolock _l(flinger->mStateLock); sp<const DisplayDevice> hw(flinger->getDisplayDevice(display)); - result = flinger->captureScreenImplLocked(hw, - producer, reqWidth, reqHeight, minLayerZ, maxLayerZ); + result = flinger->captureScreenImplLocked(hw, producer, + reqWidth, reqHeight, minLayerZ, maxLayerZ, + useIdentityTransform); static_cast<GraphicProducerWrapper*>(producer->asBinder().get())->exit(result); return true; } @@ -2786,7 +2791,7 @@ status_t SurfaceFlinger::captureScreen(const sp<IBinder>& display, // which does the marshaling work forwards to our "fake remote" above. sp<MessageBase> msg = new MessageCaptureScreen(this, display, IGraphicBufferProducer::asInterface( wrapper ), - reqWidth, reqHeight, minLayerZ, maxLayerZ); + reqWidth, reqHeight, minLayerZ, maxLayerZ, useIdentityTransform); status_t res = postMessageAsync(msg); if (res == NO_ERROR) { @@ -2800,7 +2805,7 @@ void SurfaceFlinger::renderScreenImplLocked( const sp<const DisplayDevice>& hw, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ, - bool yswap) + bool yswap, bool useIdentityTransform) { ATRACE_CALL(); RenderEngine& engine(getRenderEngine()); @@ -2829,7 +2834,7 @@ void SurfaceFlinger::renderScreenImplLocked( if (state.z >= minLayerZ && state.z <= maxLayerZ) { if (layer->isVisible()) { if (filtering) layer->setFiltering(true); - layer->draw(hw); + layer->draw(hw, useIdentityTransform); if (filtering) layer->setFiltering(false); } } @@ -2846,7 +2851,8 @@ status_t SurfaceFlinger::captureScreenImplLocked( const sp<const DisplayDevice>& hw, const sp<IGraphicBufferProducer>& producer, uint32_t reqWidth, uint32_t reqHeight, - uint32_t minLayerZ, uint32_t maxLayerZ) + uint32_t minLayerZ, uint32_t maxLayerZ, + bool useIdentityTransform) { ATRACE_CALL(); @@ -2900,7 +2906,7 @@ status_t SurfaceFlinger::captureScreenImplLocked( // an EGLSurface and therefore we're not // dependent on the context's EGLConfig. renderScreenImplLocked(hw, reqWidth, reqHeight, - minLayerZ, maxLayerZ, true); + minLayerZ, maxLayerZ, true, useIdentityTransform); // Create a sync point and wait on it, so we know the buffer is // ready before we pass it along. We can't trivially call glFlush(), |