The drawables cache strikes again
Bug #7117785 Draawables created from the ConstantState cache found in Resources must be mutated before they can be safely modified by apps. Failure to do so results in all drawables sharing the same constant state to be affected by the modification. In the case of the bugreport above, the status bar code plays tricks with a background drawable and modifies its color to implement a fade in/out effect. This drawable comes from a cached resource (color 0x0) and the modifications made by the status bar apply to other clients of this drawable, most notably the recents panel. This change fixes several things: - Simplifies colors caching by removing the assetCookie from the key. This should result in better reuse of cached drawables - Makes View.setBackgroundColor() honor the mutate() contract - Ensure StateListDrawable properly mutates its children before modifying them - Optimize Bitmap/ColorDrawable to mark them mutated when they are not created from an existing ConstantSate. The same optimization should be applied to other drawables in the future Change-Id: I54adb5d5b914c7d8930bf9b46f7e3f9dcbf4bcab
Loading
Please register or sign in to comment