am 53ade085
: Added display initialization method
* commit '53ade0853ca003c9e917b5e7d34e1b1338d7b87d': Added display initialization method
This commit is contained in:
commit
d6db17737b
@ -137,15 +137,8 @@ void SurfaceFlinger::binderDied(const wp<IBinder>& who)
|
|||||||
{
|
{
|
||||||
// the window manager died on us. prepare its eulogy.
|
// the window manager died on us. prepare its eulogy.
|
||||||
|
|
||||||
// reset screen orientation
|
// restore initial conditions (default device unblank, etc)
|
||||||
Vector<ComposerState> state;
|
initializeDisplays();
|
||||||
Vector<DisplayState> displays;
|
|
||||||
DisplayState d;
|
|
||||||
d.what = DisplayState::eOrientationChanged;
|
|
||||||
d.token = mDefaultDisplays[DisplayDevice::DISPLAY_ID_MAIN];
|
|
||||||
d.orientation = DisplayState::eOrientationDefault;
|
|
||||||
displays.add(d);
|
|
||||||
setTransactionState(state, displays, 0);
|
|
||||||
|
|
||||||
// restart the boot-animation
|
// restart the boot-animation
|
||||||
startBootAnim();
|
startBootAnim();
|
||||||
@ -432,6 +425,9 @@ status_t SurfaceFlinger::readyToRun()
|
|||||||
// We're now ready to accept clients...
|
// We're now ready to accept clients...
|
||||||
mReadyToRunBarrier.open();
|
mReadyToRunBarrier.open();
|
||||||
|
|
||||||
|
// set initial conditions (e.g. unblank default device)
|
||||||
|
initializeDisplays();
|
||||||
|
|
||||||
// start boot animation
|
// start boot animation
|
||||||
startBootAnim();
|
startBootAnim();
|
||||||
|
|
||||||
@ -1710,6 +1706,36 @@ status_t SurfaceFlinger::onLayerDestroyed(const wp<LayerBaseClient>& layer)
|
|||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void SurfaceFlinger::onInitializeDisplays() {
|
||||||
|
// reset screen orientation
|
||||||
|
Vector<ComposerState> state;
|
||||||
|
Vector<DisplayState> displays;
|
||||||
|
DisplayState d;
|
||||||
|
d.what = DisplayState::eOrientationChanged;
|
||||||
|
d.token = mDefaultDisplays[DisplayDevice::DISPLAY_ID_MAIN];
|
||||||
|
d.orientation = DisplayState::eOrientationDefault;
|
||||||
|
displays.add(d);
|
||||||
|
setTransactionState(state, displays, 0);
|
||||||
|
|
||||||
|
// XXX: this should init default device to "unblank" and all other devices to "blank"
|
||||||
|
onScreenAcquired();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SurfaceFlinger::initializeDisplays() {
|
||||||
|
class MessageScreenInitialized : public MessageBase {
|
||||||
|
SurfaceFlinger* flinger;
|
||||||
|
public:
|
||||||
|
MessageScreenInitialized(SurfaceFlinger* flinger) : flinger(flinger) { }
|
||||||
|
virtual bool handler() {
|
||||||
|
flinger->onInitializeDisplays();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
sp<MessageBase> msg = new MessageScreenInitialized(this);
|
||||||
|
postMessageAsync(msg); // we may be called from main thread, use async message
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SurfaceFlinger::onScreenAcquired() {
|
void SurfaceFlinger::onScreenAcquired() {
|
||||||
ALOGD("Screen about to return, flinger = %p", this);
|
ALOGD("Screen about to return, flinger = %p", this);
|
||||||
sp<const DisplayDevice> hw(getDefaultDisplayDevice()); // XXX: this should be per DisplayDevice
|
sp<const DisplayDevice> hw(getDefaultDisplayDevice()); // XXX: this should be per DisplayDevice
|
||||||
|
@ -231,9 +231,11 @@ private:
|
|||||||
void signalLayerUpdate();
|
void signalLayerUpdate();
|
||||||
void signalRefresh();
|
void signalRefresh();
|
||||||
|
|
||||||
// called on the main thread in response to screenReleased()
|
// called on the main thread in response to initializeDisplays()
|
||||||
|
void onInitializeDisplays();
|
||||||
|
// called on the main thread in response to blank()
|
||||||
void onScreenReleased();
|
void onScreenReleased();
|
||||||
// called on the main thread in response to screenAcquired()
|
// called on the main thread in response to unblank()
|
||||||
void onScreenAcquired();
|
void onScreenAcquired();
|
||||||
|
|
||||||
void handleMessageTransaction();
|
void handleMessageTransaction();
|
||||||
@ -321,6 +323,9 @@ private:
|
|||||||
/* ------------------------------------------------------------------------
|
/* ------------------------------------------------------------------------
|
||||||
* Display and layer stack management
|
* Display and layer stack management
|
||||||
*/
|
*/
|
||||||
|
// called when starting, or restarting after system_server death
|
||||||
|
void initializeDisplays();
|
||||||
|
|
||||||
sp<const DisplayDevice> getDisplayDevice(DisplayID dpy) const {
|
sp<const DisplayDevice> getDisplayDevice(DisplayID dpy) const {
|
||||||
return mDisplays.valueFor(dpy);
|
return mDisplays.valueFor(dpy);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user