Have VirtualDisplays send SF resize messages when resizing
Change-Id: I76d15b22099a659450ec875836c9bf2b6584838f
This commit is contained in:
parent
99c7dc596a
commit
1f6078aef7
@ -146,6 +146,7 @@ public:
|
||||
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.
|
||||
|
@ -113,7 +113,8 @@ struct DisplayState {
|
||||
enum {
|
||||
eSurfaceChanged = 0x01,
|
||||
eLayerStackChanged = 0x02,
|
||||
eDisplayProjectionChanged = 0x04
|
||||
eDisplayProjectionChanged = 0x04,
|
||||
eDisplaySizeChanged = 0x08
|
||||
};
|
||||
|
||||
uint32_t what;
|
||||
@ -123,6 +124,7 @@ struct DisplayState {
|
||||
uint32_t orientation;
|
||||
Rect viewport;
|
||||
Rect frame;
|
||||
uint32_t width, height;
|
||||
status_t write(Parcel& output) const;
|
||||
status_t read(const Parcel& input);
|
||||
};
|
||||
|
@ -166,6 +166,7 @@ public:
|
||||
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();
|
||||
@ -426,6 +427,14 @@ void Composer::setDisplayProjection(const sp<IBinder>& token,
|
||||
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()
|
||||
@ -621,6 +630,11 @@ void SurfaceComposerClient::setDisplayProjection(const sp<IBinder>& token,
|
||||
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(
|
||||
|
@ -170,6 +170,7 @@ private:
|
||||
Rect viewport;
|
||||
Rect frame;
|
||||
uint8_t orientation;
|
||||
uint32_t width, height;
|
||||
String8 displayName;
|
||||
bool isSecure;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user