Solve three memory leaks related to PatchCache

A Patch can be fairly large, holding bitmap data, but
is also frequently leaked which adds to the severity.
The feature is used in many important processes such
as Home, SystemUI and Chrome.

The following leaks are solved:

1. The Patch itself was not always freed.
PatchCache::removeDeferred() can mark patches to be
cared for by PatchCache::clearGarbage(). But
mCache.remove() would only destroy the container
and the pointer, not the Patch object itself.

2. The vertices stored in the Patch at Patch::createMesh()
would always leak. The empty/default destructor in Patch
would not properly destroy "vertices" since it's just a
pointer.

3. A BufferBlock that's added to the mFreeBlocks
in PatchCache could leak. The leak happened when a
patch later needed the entire free block, because the
object was removed from the list but never deleted
in PatchCache::setupMesh().

Change-Id: I41e60824479230b67426fc546d3dbff294c8891f
Signed-off-by: houst0nn <houstonn@gmail.com>
Fix thumbnail bug

When there was no thumbnail for a given image, the getThumbNail() convenience
method could return a previously-returned thumbnail instead of null.

b/15771860
https://code.google.com/p/android/issues/detail?id=40714

Change-Id: Ibd18e048145bf347469f800afdf436247ea6b693
Signed-off-by: houst0nn <houstonn@gmail.com>
Fixed VM memory leak in AudioSystem JNI interface

The function android_media_AudioSystem_error_callback from AudioSystem
JNI interface is using FindClass function but does not delete the
reference created by VM in this function.
By doing this call, VM will add a local reference in IndirectRefTable
and it's the caller's job to delete this reference.
By not doing this, everytime this callback is called, a new reference is
added and never deleted.
The effect is crashing the VM running system_server:

E/dalvikvm( 3071): JNI ERROR (app bug): local reference table overflow (max=512)
W/dalvikvm( 3071): JNI local reference table (0x732da288) dump:
W/dalvikvm( 3071):   Last 10 entries (of 512):
W/dalvikvm( 3071):       511: 0x42a90008 java.lang.Class<android.os.Parcel>
W/dalvikvm( 3071):       510: 0x4381fd90 android.view.KeyEvent
W/dalvikvm( 3071):       509: 0x439b9808 android.view.KeyEvent
W/dalvikvm( 3071):       508: 0x42d2fe18 java.lang.Class<com.android.server.input.InputManagerService>
W/dalvikvm( 3071):       507: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):       506: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):       505: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):       504: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):       503: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):       502: 0x42ad4298 java.lang.Class<android.media.AudioSystem>
W/dalvikvm( 3071):   Summary:
W/dalvikvm( 3071):       510 of java.lang.Class (3 unique instances)
W/dalvikvm( 3071):         2 of android.view.KeyEvent (2 unique instances)
E/dalvikvm( 3071): Failed adding to JNI local ref table (has 512 entries)
...
E/dalvikvm( 3071): VM aborting

In this case, PID 3071 is system server.

Change-Id: I0c113eb72256984854d59a3ccef11a8d23f96e79
Signed-off-by: Robert Chiras <robert.chiras@intel.com>
Signed-off-by: houst0nn <houstonn@gmail.com>
Automatic Translation Import

Change-Id: I1a255c84ce5c94069735b48bb4345f0508a45be4
ExpandHelper: Performance improvement during expanding

- Reflects on Hover mainly
- Add an helper to get natural height

Thanks to Kiril Mikos @mik9 http://review.cyanogenmod.org/#/c/66676/

Signed-off-by: Carlo Savignano <stevewatersy@gmail.com>
Merge "ExpandHelper: Performance improvement during expanding" into kitkat
HOVER: Respect screen limits when adding view

As for what @Decad3nce reported here http://review.cyanogenmod.org/#/c/66654/
we shouldn't keep FLAG_LAYOUT_NO_LIMITS so view doesn't exceed the screen limits.

Thank you Adnan :)

Signed-off-by: Carlo Savignano <stevewatersy@gmail.com>
Change-Id: Ifcbc4a1143362e1b7dd40e710126060688c894b9
BatteryMeter: Isolate QS resources too, specify label as for status bar

- This way we can theme PA separately, will not reflect with CM
  so we don't end theming both CM statusbar and QS indicators while
  we want to do just QS and testing base is PA.

PS2: Use status bar color in style, is about the status bar icon so no need to keep using qs one.
PS3: Fix new array name

Signed-off-by: Carlo Savignano <stevewatersy@gmail.com>
Change-Id: I104f4b435470745e8b4bcb7fb2413148b24766c9
Merge "BatteryMeter: Isolate QS resources too, specify label as for status bar" into kitkat
Themes: add ability to theme quick settings battery tiles

This is to make the battery tiles more uniform to the rest
of quick settings and also allow the background to be themed

http://i.imgur.com/AA5bkMK.png

PA Changes: adapt for PA quick settings thanks to @linuxman94

Change-Id: Iec03572a0fa3619d2652f30b6c260a278ed0c86b
Signed-off-by: Evan Anderson <evan@thelinuxman.us>
Merge "Themes: add ability to theme quick settings battery tiles" into kitkat
PackageManager: Add option for single threaded dexopt

* Execute all dexopt invocations on the main thread instead of using the
  ExecutorService when persist.sys.dalvik.multithread is set to false.

Change-Id: I3b8499d5af5091ad7abcddf006f8f2837943903b
Merge "PackageManager: Add option for single threaded dexopt" into kitkat
HOVER: Don't treat touch outside event as true if is animating

- It needs to wait animation to be finished to start listen for touch outside
  and runs hide timer.

Signed-off-by: Carlo Savignano <stevewatersy@gmail.com>
Merge "Automatic Translation Import" into kitkat
Merge "Solve three memory leaks related to PatchCache" into kitkat
Merge "Fixed VM memory leak in AudioSystem JNI interface" into kitkat
Merge "Fix thumbnail bug" into kitkat
Merge pull request #8 from AOSPA/kitkat

Update to upstream