const sp<IGraphicBufferProducer>& bufferProducer);
static void setDisplayLayerStack(const sp<IBinder>& token,
uint32_t layerStack);
+ static void setDisplaySize(const sp<IBinder>& token, uint32_t width, uint32_t height);
/* setDisplayProjection() defines the projection of layer stacks
* to a given display.
enum {
eSurfaceChanged = 0x01,
eLayerStackChanged = 0x02,
- eDisplayProjectionChanged = 0x04
+ eDisplayProjectionChanged = 0x04,
+ eDisplaySizeChanged = 0x08
};
uint32_t what;
uint32_t orientation;
Rect viewport;
Rect frame;
+ uint32_t width, height;
status_t write(Parcel& output) const;
status_t read(const Parcel& input);
};
uint32_t orientation,
const Rect& layerStackRect,
const Rect& displayRect);
+ void setDisplaySize(const sp<IBinder>& token, uint32_t width, uint32_t height);
static void setAnimationTransaction() {
Composer::getInstance().setAnimationTransactionImpl();
mForceSynchronous = true; // TODO: do we actually still need this?
}
+void Composer::setDisplaySize(const sp<IBinder>& token, uint32_t width, uint32_t height) {
+ Mutex::Autolock _l(mLock);
+ DisplayState& s(getDisplayStateLocked(token));
+ s.width = width;
+ s.height = height;
+ s.what |= DisplayState::eDisplaySizeChanged;
+}
+
// ---------------------------------------------------------------------------
SurfaceComposerClient::SurfaceComposerClient()
layerStackRect, displayRect);
}
+void SurfaceComposerClient::setDisplaySize(const sp<IBinder>& token,
+ uint32_t width, uint32_t height) {
+ Composer::getInstance().setDisplaySize(token, width, height);
+}
+
// ----------------------------------------------------------------------------
status_t SurfaceComposerClient::getDisplayConfigs(