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>
HOVER: Match notification width on tablets too

Signed-off-by: Carlo Savignano <stevewatersy@gmail.com>
Do not launch floating window when on default launcher

We only do this when user is on the default launcher 
because if the user was on a non-default launcher,
he/she must have been there for some purpose and we 
do not want to throw him/her back to the default 
launcher incase he/she exits the app with HOME button.
Keyguard: fix NPE setting lockscreen wallpaper

Continue previous patchset (check history)

------- Cherry-picked commit -------

After boot the view might not be laid out and so getWidth() and
getHeight() return 0 and will cause a NullPointerException in
createBitmap().

Signed-off-by: Dirk Rettschlag <dirk.rettschlag@gmail.com>
Fix frontOfTask assignment.

If all activities of a given stack were finishing, no activity was
marked as front-of-task. This confused ActivityManager, so make sure
there's always exactly one activity marked as front-of-task.

Change-Id: I087cbe10280d4a60aa5ccfaefe24a223523fb3f2
Merge "HOVER: Match notification width on tablets too" into kitkat
Merge "Keyguard: fix NPE setting lockscreen wallpaper" into kitkat
Pie: Fix repositioning issue for no h/w rotation

Since release, a bug has been lurking. It can be easily triggered by
placing Pie on the shorter bottom bezel and rotating to landscape in
any app. Then the user has to keep the device on a stable surface to
avoid triggering the hardware sensor and must simply use the Home
button on the Pie menu. After this, Pie trigger area will be placed
on the right-hand side, but will still appear at the bottom. When the
user moves/picks up the phone, the sensor will be triggered and Pie
will be correctly repositioned.

This commit also adds listening to screen configuration changes
directly along with using the legacy hardware sensors.

Change-Id: I7769b58fa36bd55bb6d4c44a28051916bfb1bbda
Don't let apps disable the SIM PIN entry screen.

As the user (who controls the app behaviour after all) likely doesn't
see the PIN screen as a lock screen (he likely wants telephony) and the
PIN screen is not shown on a timer-driven basis, it should be treated
specially.

Change-Id: I8d48ab5f097bc926f67eab5835d9b5f1e581db15
Merge "Fix frontOfTask assignment." into kitkat
Themes: Update DocumentsUI for theme chooser combatibility

PS2: credit: djdarkknight96
PS3: this time, use the correct owner info
PS:4 fix typo in styles.xml

Change-Id: I121099de6c09d33ef9f02019996eac1c6f1d3731
HOVER: Rework showing behavior on tablets

- Don't animate out statusbar on tablets
- Cleanup

Signed-off-by: Carlo Savignano <stevewatersy@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>
Merge "Themes: Update DocumentsUI for theme chooser combatibility" into kitkat
Merge "Don't let apps disable the SIM PIN entry screen." into kitkat
Merge "HOVER: Rework showing behavior on tablets" into kitkat
Themes: Use first asset entry for lockscreen wallpaper

The current implementation assumes the wallpaper will be named
either wallpaper.png or wallpaper.jpg.  If this is not the case
the wallpaper is not applied.  This patch implements the lockscreen
wallpaper the same way that the regular wallpaper is done.

Change-Id: I9f3dd299c1e61158fa53c163f7e42e21e2f9b1dc
Merge "Themes: Use first asset entry for lockscreen wallpaper" into kitkat
Themes: Use default_wallpaper for HOLO lockscreen wp

Change-Id: I9c7fd29c99d13e811993eb9b3b045010431ccad0