Loading include/gui/SurfaceComposerClient.h +2 −0 Original line number Diff line number Diff line Loading @@ -138,6 +138,8 @@ public: status_t setLayerStack(const sp<IBinder>& id, uint32_t layerStack); status_t deferTransactionUntil(const sp<IBinder>& id, const sp<IBinder>& handle, uint64_t frameNumber); status_t setOverrideScalingMode(const sp<IBinder>& id, int32_t overrideScalingMode); status_t destroySurface(const sp<IBinder>& id); status_t clearLayerFrameStats(const sp<IBinder>& token) const; Loading include/gui/SurfaceControl.h +5 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,11 @@ public: // identified by handle reaches the given frameNumber status_t deferTransactionUntil(sp<IBinder> handle, uint64_t frameNumber); // Set an override scaling mode as documented in <system/window.h> // the override scaling mode will take precedence over any client // specified scaling mode. -1 will clear the override scaling mode. status_t setOverrideScalingMode(int32_t overrideScalingMode); static status_t writeSurfaceToParcel( const sp<SurfaceControl>& control, Parcel* parcel); Loading include/private/gui/LayerState.h +5 −2 Original line number Diff line number Diff line Loading @@ -53,7 +53,8 @@ struct layer_state_t { eLayerStackChanged = 0x00000080, eCropChanged = 0x00000100, eDeferTransaction = 0x00000200, eFinalCropChanged = 0x00000400 eFinalCropChanged = 0x00000400, eOverrideScalingModeChanged = 0x00000800 }; layer_state_t() Loading @@ -61,7 +62,8 @@ struct layer_state_t { x(0), y(0), z(0), w(0), h(0), layerStack(0), alpha(0), flags(0), mask(0), reserved(0), crop(Rect::INVALID_RECT), finalCrop(Rect::INVALID_RECT), frameNumber(0) finalCrop(Rect::INVALID_RECT), frameNumber(0), overrideScalingMode(-1) { matrix.dsdx = matrix.dtdy = 1.0f; matrix.dsdy = matrix.dtdx = 0.0f; Loading Loading @@ -93,6 +95,7 @@ struct layer_state_t { Rect finalCrop; sp<IBinder> handle; uint64_t frameNumber; int32_t overrideScalingMode; // non POD must be last. see write/read Region transparentRegion; }; Loading libs/gui/LayerState.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ status_t layer_state_t::write(Parcel& output) const output.write(finalCrop); output.writeStrongBinder(handle); output.writeUint64(frameNumber); output.writeInt32(overrideScalingMode); output.write(transparentRegion); return NO_ERROR; } Loading Loading @@ -68,6 +69,7 @@ status_t layer_state_t::read(const Parcel& input) input.read(finalCrop); handle = input.readStrongBinder(); frameNumber = input.readUint64(); overrideScalingMode = input.readInt32(); input.read(transparentRegion); return NO_ERROR; } Loading libs/gui/SurfaceComposerClient.cpp +35 −0 Original line number Diff line number Diff line Loading @@ -163,6 +163,8 @@ public: status_t deferTransactionUntil(const sp<SurfaceComposerClient>& client, const sp<IBinder>& id, const sp<IBinder>& handle, uint64_t frameNumber); status_t setOverrideScalingMode(const sp<SurfaceComposerClient>& client, const sp<IBinder>& id, int32_t overrideScalingMode); void setDisplaySurface(const sp<IBinder>& token, const sp<IGraphicBufferProducer>& bufferProducer); Loading Loading @@ -414,6 +416,33 @@ status_t Composer::deferTransactionUntil( return NO_ERROR; } status_t Composer::setOverrideScalingMode( const sp<SurfaceComposerClient>& client, const sp<IBinder>& id, int32_t overrideScalingMode) { Mutex::Autolock lock(mLock); layer_state_t* s = getLayerStateLocked(client, id); if (!s) { return BAD_INDEX; } switch (overrideScalingMode) { case NATIVE_WINDOW_SCALING_MODE_FREEZE: case NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW: case NATIVE_WINDOW_SCALING_MODE_SCALE_CROP: case NATIVE_WINDOW_SCALING_MODE_NO_SCALE_CROP: case -1: break; default: ALOGE("unknown scaling mode: %d", overrideScalingMode); return BAD_VALUE; } s->what |= layer_state_t::eOverrideScalingModeChanged; s->overrideScalingMode = overrideScalingMode; return NO_ERROR; } // --------------------------------------------------------------------------- DisplayState& Composer::getDisplayStateLocked(const sp<IBinder>& token) { Loading Loading @@ -650,6 +679,12 @@ status_t SurfaceComposerClient::deferTransactionUntil(const sp<IBinder>& id, return getComposer().deferTransactionUntil(this, id, handle, frameNumber); } status_t SurfaceComposerClient::setOverrideScalingMode( const sp<IBinder>& id, int32_t overrideScalingMode) { return getComposer().setOverrideScalingMode( this, id, overrideScalingMode); } // ---------------------------------------------------------------------------- void SurfaceComposerClient::setDisplaySurface(const sp<IBinder>& token, Loading Loading
include/gui/SurfaceComposerClient.h +2 −0 Original line number Diff line number Diff line Loading @@ -138,6 +138,8 @@ public: status_t setLayerStack(const sp<IBinder>& id, uint32_t layerStack); status_t deferTransactionUntil(const sp<IBinder>& id, const sp<IBinder>& handle, uint64_t frameNumber); status_t setOverrideScalingMode(const sp<IBinder>& id, int32_t overrideScalingMode); status_t destroySurface(const sp<IBinder>& id); status_t clearLayerFrameStats(const sp<IBinder>& token) const; Loading
include/gui/SurfaceControl.h +5 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,11 @@ public: // identified by handle reaches the given frameNumber status_t deferTransactionUntil(sp<IBinder> handle, uint64_t frameNumber); // Set an override scaling mode as documented in <system/window.h> // the override scaling mode will take precedence over any client // specified scaling mode. -1 will clear the override scaling mode. status_t setOverrideScalingMode(int32_t overrideScalingMode); static status_t writeSurfaceToParcel( const sp<SurfaceControl>& control, Parcel* parcel); Loading
include/private/gui/LayerState.h +5 −2 Original line number Diff line number Diff line Loading @@ -53,7 +53,8 @@ struct layer_state_t { eLayerStackChanged = 0x00000080, eCropChanged = 0x00000100, eDeferTransaction = 0x00000200, eFinalCropChanged = 0x00000400 eFinalCropChanged = 0x00000400, eOverrideScalingModeChanged = 0x00000800 }; layer_state_t() Loading @@ -61,7 +62,8 @@ struct layer_state_t { x(0), y(0), z(0), w(0), h(0), layerStack(0), alpha(0), flags(0), mask(0), reserved(0), crop(Rect::INVALID_RECT), finalCrop(Rect::INVALID_RECT), frameNumber(0) finalCrop(Rect::INVALID_RECT), frameNumber(0), overrideScalingMode(-1) { matrix.dsdx = matrix.dtdy = 1.0f; matrix.dsdy = matrix.dtdx = 0.0f; Loading Loading @@ -93,6 +95,7 @@ struct layer_state_t { Rect finalCrop; sp<IBinder> handle; uint64_t frameNumber; int32_t overrideScalingMode; // non POD must be last. see write/read Region transparentRegion; }; Loading
libs/gui/LayerState.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ status_t layer_state_t::write(Parcel& output) const output.write(finalCrop); output.writeStrongBinder(handle); output.writeUint64(frameNumber); output.writeInt32(overrideScalingMode); output.write(transparentRegion); return NO_ERROR; } Loading Loading @@ -68,6 +69,7 @@ status_t layer_state_t::read(const Parcel& input) input.read(finalCrop); handle = input.readStrongBinder(); frameNumber = input.readUint64(); overrideScalingMode = input.readInt32(); input.read(transparentRegion); return NO_ERROR; } Loading
libs/gui/SurfaceComposerClient.cpp +35 −0 Original line number Diff line number Diff line Loading @@ -163,6 +163,8 @@ public: status_t deferTransactionUntil(const sp<SurfaceComposerClient>& client, const sp<IBinder>& id, const sp<IBinder>& handle, uint64_t frameNumber); status_t setOverrideScalingMode(const sp<SurfaceComposerClient>& client, const sp<IBinder>& id, int32_t overrideScalingMode); void setDisplaySurface(const sp<IBinder>& token, const sp<IGraphicBufferProducer>& bufferProducer); Loading Loading @@ -414,6 +416,33 @@ status_t Composer::deferTransactionUntil( return NO_ERROR; } status_t Composer::setOverrideScalingMode( const sp<SurfaceComposerClient>& client, const sp<IBinder>& id, int32_t overrideScalingMode) { Mutex::Autolock lock(mLock); layer_state_t* s = getLayerStateLocked(client, id); if (!s) { return BAD_INDEX; } switch (overrideScalingMode) { case NATIVE_WINDOW_SCALING_MODE_FREEZE: case NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW: case NATIVE_WINDOW_SCALING_MODE_SCALE_CROP: case NATIVE_WINDOW_SCALING_MODE_NO_SCALE_CROP: case -1: break; default: ALOGE("unknown scaling mode: %d", overrideScalingMode); return BAD_VALUE; } s->what |= layer_state_t::eOverrideScalingModeChanged; s->overrideScalingMode = overrideScalingMode; return NO_ERROR; } // --------------------------------------------------------------------------- DisplayState& Composer::getDisplayStateLocked(const sp<IBinder>& token) { Loading Loading @@ -650,6 +679,12 @@ status_t SurfaceComposerClient::deferTransactionUntil(const sp<IBinder>& id, return getComposer().deferTransactionUntil(this, id, handle, frameNumber); } status_t SurfaceComposerClient::setOverrideScalingMode( const sp<IBinder>& id, int32_t overrideScalingMode) { return getComposer().setOverrideScalingMode( this, id, overrideScalingMode); } // ---------------------------------------------------------------------------- void SurfaceComposerClient::setDisplaySurface(const sp<IBinder>& token, Loading