am 3f395623
: Added display initialization method
* commit '3f3956236aac97b6aa25fa89f0983d5e9d065fdb': Added display initialization method
This commit is contained in:
commit
30b84c7d03
@ -137,15 +137,8 @@ void SurfaceFlinger::binderDied(const wp<IBinder>& who)
|
||||
{
|
||||
// the window manager died on us. prepare its eulogy.
|
||||
|
||||
// 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);
|
||||
// restore initial conditions (default device unblank, etc)
|
||||
initializeDisplays();
|
||||
|
||||
// restart the boot-animation
|
||||
startBootAnim();
|
||||
@ -431,6 +424,9 @@ status_t SurfaceFlinger::readyToRun()
|
||||
// We're now ready to accept clients...
|
||||
mReadyToRunBarrier.open();
|
||||
|
||||
// set initial conditions (e.g. unblank default device)
|
||||
initializeDisplays();
|
||||
|
||||
// start boot animation
|
||||
startBootAnim();
|
||||
|
||||
@ -1701,6 +1697,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() {
|
||||
ALOGD("Screen about to return, flinger = %p", this);
|
||||
sp<const DisplayDevice> hw(getDefaultDisplayDevice()); // XXX: this should be per DisplayDevice
|
||||
|
@ -231,9 +231,11 @@ private:
|
||||
void signalLayerUpdate();
|
||||
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();
|
||||
// called on the main thread in response to screenAcquired()
|
||||
// called on the main thread in response to unblank()
|
||||
void onScreenAcquired();
|
||||
|
||||
void handleMessageTransaction();
|
||||
@ -321,6 +323,9 @@ private:
|
||||
/* ------------------------------------------------------------------------
|
||||
* Display and layer stack management
|
||||
*/
|
||||
// called when starting, or restarting after system_server death
|
||||
void initializeDisplays();
|
||||
|
||||
sp<const DisplayDevice> getDisplayDevice(DisplayID dpy) const {
|
||||
return mDisplays.valueFor(dpy);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user