OSDN Git Service

Avoid configuration of callback being reset after relayout.
authorriddle_hsu <riddle_hsu@htc.com>
Thu, 12 Nov 2015 06:07:12 +0000 (14:07 +0800)
committerriddle_hsu <riddle_hsu@htc.com>
Thu, 12 Nov 2015 06:07:12 +0000 (14:07 +0800)
commit164725c652d56e3ab04185dba6a06df351f721b8
treeb18cd9f2316bc849ac995899fd12b8d894121e5e
parent8d8515e708f0cebf69587750bbb3abcb315cc61e
Avoid configuration of callback being reset after relayout.

mPendingConfiguration is a parameter of IWindowSession.relayout.
And IWindowSession.aidl declared "out Configuration outConfig",
it will always create a new configuration for remote side to write.
If remote side does not write (WMS does not have config change),
the new default configuration will be returned.

In original code passes mPendingConfiguration to updateConfiguration
directly, then callbacks (sConfigCallbacks) receive the same
instance of mPendingConfiguration. And because the implementation
of callback may use the configuration after relayout has reset
the configuration to default, then it may have timing that results
"showing hybrid of portrait and landscape modes" which try to fix
in commit e36d6e27.

To avoid this, always create a copy to updateConfiguration.
MSG_RESIZED_REPORT from dispatchResized also did the same thing.

Related commit:
e36d6e277e49475076b7872d36ea6a5c5b996e9d
694f79b5d1196640d1beb680b7d1fc68e6e77cbd

Change-Id: Ic1abd596e384918224b3a7020583d9a04641cccc
core/java/android/view/ViewRootImpl.java