Fix for positioning of glyphs within a bitmap

For positioning of glyphs within a bitmap, roundf(int + float) is used,
where the float is the glyph position and the int is the text position.
When the text position is varied, this may lead to the sum being rounded
in different directions, due to floating point rounding, caused by that
floating point numbers have different precision in different ranges.

This may therefore lead to slightly different positioning for glyphs and
therefore slightly different widths and heights for text strings,
depending on the position they are rendered at.

The solution in this patch is to use int + (int) roundf(float), which
has consistent rounding, and also enables us to use the full range of
ints.

Change-Id: Id1143cdfcbdfa9915ced878ae04df589a3e03cee
Fix graphics corruption caused by HWUI caches

Some caches(PatchCache, TextureCache, PathCache) for HWUI
uses deferred removal for their cache entries even though
actual resource objects are immediately freed by
ResourceCache.
For this reason, the uniqueness of a resource address in
the caches is not guaranteed in specific cases.
(Because malloc() can return the same address when malloc()
and free() called very frequently.)

So it can be possible the cache have two cache entries for
two different resources but the same memory address.
(Of course one of the resources is already freed.)
It also can be possible mGarbage vector in PatchCache has
duplicated addresses and this can lead to duplicated free
blocks in the free block list and graphics corruption.
(Deferred removal was implmeneted based on an assumption of
unique resource addresses.)

So this patch makes sure resource objects are freed after
the resources are removed from the caches to guarantee
the uniqueness of a resource address and prevent graphics
corruption.

Change-Id: I040f033a4fc783d2c4bc04b113589657c36fb15b
Signed-off-by: Sangkyu Lee <sk82.lee@lge.com>

Fix AOSP build - DO NOT MERGE

Change-Id: I42b420c2ce89ce364a2809b28b827964e6923fa1
Bluetooth-OBEX: Reduce the MTU size if default OBEX MTU > 8k

Add a check for default OBEX MTU. If MTU is greater than 8k and
setMTU flag is true then reduce the MTU to 8k.

CRs-Fixed: 613931
Change-Id: I5785fd372241f682427ea3aca0b56ac747820d52
VideoView: Correct a type error in the previous patch

- Correct the type error, change "http://" to "https://"

Change-Id: Id914d669a5c9e1fc73f51f428abdc2249b2d52b9
Bluetooth: Fix for FileDescriptor leakage causing ANR

Fix to close the native fds gracefully. detachFD has been removed
in order to close the native fds

Change-Id: I6afca60bcf6adc82ad6a63d8706267d8ed3bd579
CRs-fixed: 623575
Bluetooth: Added new key to store last connected A2dp Sep type

Changes made to add new key and API to store, retrieve the last
connected A2dp Sep type using Content Resolver.

CRs-fixed: 599358
Change-Id: I2648603cc456921ec1896fb498b602416bd79e72
fb: Incoming Call in Background (3/3)

Patch ported from 4.2 which was done by our lovely HCP. A
very popular one so we bring it back and adapt it to 4.4
Allows user to set that Incoming Call UI will remain in background
if screen is on. Instead, a notification is added to StatusBar, which
can be used to bring up the Incoming Call UI. Ringtone and vibration
still occur as per system settings.
This has the same effect as apps marked as "immersive". It prevents
the incoming call from backgrounding the current activity.

Change-Id: I086d5e82cfd54b89489801e8f0f0e2089e77aca5
[2/3] Allow systemwide crash detection using ACRA

Change-Id: Ib987b7e300bf96c5ab08e3538e121804cc7bab6f
fb: Handle navbar heights correct on dpi changes + more (1/2)

Till now we set the height in px in the settings. Which is a problem
especially on multiDPI roms like we are when the user afterwards changes
the dpi due that it isn't calculated correct anymore on the new dpi.

This commit does
- save the dp value in provider and calculate the real px in fb
- clean up the settings stuff for it + do it a bit nicer (only settings part
  where we do not set the value for the listview)
- as well this commit disables movable navbar for tablets (we may will enable
  it in future but it needs a lot more work to have it on tablets correct working)
- add Converter class for common methods we always use....till now only px->dp
  and dp->px method

Change-Id: I3ddcb993f82758bf2d7a183dcb8023b2fcb8f6c8
part 1 of LTE toggle support

Change-Id: I2e1cf08b4a6d49492eec63d4106c857b3905addd
PackageManager: Fix reconnection logic in Installer.

Change-Id: Id4b352647ed51aaf64bb85dff9030a25e295758f
[1/2] Frameworks: Slim recent app screen

One of the parts on AOSP google missed to update/improve in the last
couple of releases is the recent app screen to allow better and faster
multitasking. I had always a special vision how it could/should look
and gives the user a faster workflow.

This commit is now our new recent screen. It is a complete new implementation
and replaces googles AOSP recent app screen. The code changes in the base itself
are quiet miniml to call the new recent screen.

Some notes:

1. This patch needs a new repo: frameworks_opt_cards which is a central repo
   to get any kind of googles cards style. Thanks Gabrielle Mariotti a ton who
   made the base for this library and hellped a lot out.  We just fixed together with him some parts
   and mad it useable as AOSP central library. So we can use it later for other
   changes as well

2. Preload needs to work 100%. So it is needed to check that the calling parts
   (like hw key rebinding, pie, navigation bar) do a proper preload. If they do not
   recent screen will just not show up. To follow what they are doing you can enable
   debug in RecentController.java which exactly shows what was called.

Some notes to the patch itself:

- Recent app  screen slides from the right edge into the screen

- Show recent apps in new google card style. Most recent apps show
  expanded with the app screenshot. Other are collapsed. Of course
  the user can change expanded/collapse of each app during the session where the state
  will be restored on next access.

- Compared to AOSP recents we do a 3 stage loading
  1. step: preload the task list and build or update the cards (does not load any content at this point)
  2. step: User actually toggled the recent screen....icons, text and screenshot thumbnail which will get visible are loaded now
  3. step: Recent screen is fully animated in. All other non visible content at this time are loaded now.
  This allows a smooth experience for the user and a minimal load on the first 2 steps. Especially important due that we handle
  a lot animations which are very picky when it comes to background loads. last 2 steps are async multithreaded loading tasks.

- We are using for the app icons and thumbnails a bitmap LRU cache controller to have fast access to the bitmaps we need. This improves especially
  the scrolling and as well the loading time due that allready loaded app icons are holded in the LRU cache.

- Theme support is included as well for all items the recent screen has

- Most important point: Way faster workflow now. The recent screen neither freezes the underlaying app nor it does interrupt the current process the
  user is in. It just slides over the current app about 40% of the screen. Back button as well just an outside touch (which will be passed trough to the app)
  allows to immediatelly go ahead in your workflow.

- Normal click opens an app, longpress opens app detail screen (note: we have only one hidden action on our current recents. If we later decide there could be
  other actions as well...showing a google card menu button on the top right is a very easy task and allready provided from the frameworks_opt_cards lib)
  swipe left or right removes the app from the current tasks

- Pinch to zoom out gesture provides the ability to remove all tasks with a big red warning!!

- All above mentioned actions are animated.

- As usual it is multiDpi compatible

- A lot work went into the optimizing especially for low end non gfx devices where animations
  as well listview scrolling is not that easy. We got the maximum out of optimization here which
  gives acceptable results on low end devices and amazing one on the gfx capable devices.

- A small side note this patch contains as well a fix on navigation bar preload.

Thats the short description.....user need to see it to get the real benefits of this new way.

cheers

kufi

----------------------------------

Modifications by NamelessRom

do not kill the old recents, rather let it be configurable by the user

Change-Id: I1925cd9ea37f2239585445142bd37370f137eabd
Signed-off-by: Evisceration <eviscerationls@gmail.com>
Frameworks: SlimRecents - add TRDS

replaced xml drawable with 9patch drawable to remove the overdraw

moved opt cards drawables into opt cards repo

Change-Id: I8ca379337298dcfc33b9ea288ea15440a2e0b0b4
[1/2] Base: Update Torchaction to our action

we have our own flashlight, so remove TorchConstants and all
references to it and update it with ours.

Change-Id: I58c2a5a9e021475dcbb5b143e823ee757d3097aa
Revert "part 1 of LTE toggle support"

This reverts commit 6e0ad680372e52263ef48c92ed04e6b695e76e7d.

Change-Id: I13342121a01c94f416d2c37f01f641bc8f0508a9
base: added national roaming for Dutch Tele2

Change-Id: I18f1080ea88d8c62421f1e2065719d95cf03b7ec
Revert "[4/5] Frameworks: Open source google dialer and more"

This reverts commit 97ac66f39f403379ff259d8193e1574bd5a4155b.
part 1 of LTE toggle support

Change-Id: I2e1cf08b4a6d49492eec63d4106c857b3905addd
fb: actually fix LTE toggle (1/2)

I accidentally pushed the LTE toggle patch although it was not ready.
Whatever here the fix for it. This commit does:

- do not assume that on boot ITelephony service is already up. This
  results in a FC on boot up
- handle like before most things in LTETile itself and call only
  the toggle action to prevend above mentioned
- I thought about it to give as parameter current network state
  to the toggle method to prevend to fetch 2 times the actual mode
  (saves 4 lines of code). But based on the idea that we maybe later
  use other shortcuts as well we will not do it.
- cleanup & codestyle

Sorry again

cheers

kufi

Change-Id: I33a694358cc47973c4a75dccae15ccc7062fdc22
Fixed stylus eraser being rejected by palm rejection

The stylus eraser appeared not to work, i.e. Android did not respond to
input from the eraser. It turned out that all input except stylus input
is rejected when palm rejection is activated. The problem was that the
eraser itself activates palm rejection when it hovers. The solution is
to allow the eraser during palm rejection. This solution makes sense
because the eraser input works in the exact same way as normal stylus
input.

Change-Id: I90824500be7613af4f00427c59ce828528b632f7