Commit Graph

117 Commits

Author SHA1 Message Date
John Reck
4387190d8e Eliminate recents upload jank
Bug: 30342017

Upload recents thumbnails in the
dead gaps between frames instead of
at the start of a frame. This eliminates
jank caused by the large texture
upload.

Change-Id: I507cd286d199109c7a9a1511d68ba5ab5d28069f
2016-08-01 16:36:14 -07:00
Richard Uhler
0ebdbb4a84 Hold a ClassLoader reference in NativeAllocationRegistry.
So that the native library isn't unloaded before we have a chance to
call the freeFunction.

Bug: 28406866
Change-Id: I889f1ccd91bba70e31fb8d09c0ec6d471fc35841
2016-05-03 13:06:22 -07:00
Winson
a5fdde9d15 Take app screenshots in 565.
- Or to be specific, SurfaceFlinger can’t easily take 565 screenshots,
  so convert them when creating the ashmem bitmap.

Bug: 28151300
Change-Id: Ic7586659a41cc19c322136f77a1c52ef68c22707
2016-04-14 16:03:44 -07:00
Richard Uhler
775873a66a Use NativeAllocationRegistry for Paint, Canvas, and Bitmap
Bug: 23130675
Change-Id: I3fbd84ba417ac63df75f87ee2c56e3e7f3c9eb46
2016-01-13 16:14:33 -08:00
Derek Sollenberger
4c5efe9290 Add ninePatch support to Canvas.h
Change-Id: Ic095291fe55911c6501c1bdefa4b8da973c77319
2015-08-18 15:32:57 -04:00
John Reck
fac589451f am 3b68ca16: am 96160dea: am 8e645d58: am 649c3c44: am 7290d93d: Merge "Yell loudly about undefined behind in Bitmap, but work anyway" into mnc-dev
* commit '3b68ca168acc09b54fa3f6ed73e7ded10e5b8105':
  Yell loudly about undefined behind in Bitmap, but work anyway
2015-08-04 01:40:41 +00:00
John Reck
01a0af31d7 Yell loudly about undefined behind in Bitmap, but work anyway
Bug: 22214367

Previous releases would let the getters on a recycle()'d bitmap to still
work despite being firmly in undefined behavior per the documentation
on Bitmap#recycle().

As there are apps relying on this, yell very loudly about this behavior
in the log and give them a bit of time to fix it

Change-Id: I857be7e74cb217877973d9c6f03eb761d12fd056
2015-08-03 20:57:22 +00:00
John Reck
6d86e57bda Elaborate on Bitmap#reconfigure() expectations
Bug: 21947835
Change-Id: I6ab0ac08e993fb111977b6f9a02e139c7ea5170a
2015-07-15 12:22:15 -07:00
John Reck
3df4869a77 Fix Bitmap#sameAs NPE
Bug: 21281842

Change-Id: I4a1e33d7e642fa50e8789f1441e8587d1c15119c
2015-05-19 16:06:16 -07:00
Riley Andrews
721ae5fec5 Add internal bitmap api for creating immutable ashmem backed bitmaps.
Bug 21037890
Change-Id: I827e83dd75e301e7d93ead5efdd744f0d8435ae5
2015-05-18 19:55:39 +00:00
John Reck
9298c54141 Clarify assert
Bug: 20918138
Change-Id: I39a9f8bbfb3752f9a6e5f5215ed8cd3c93ce87fc
2015-05-11 11:03:43 -07:00
John Reck
ad57442fd0 Add a few missing asserts
Bug: 20918138
Change-Id: I6823cfe531ff6f63a7d9fde22278e6780726c9f1
2015-05-11 09:43:47 -07:00
John Reck
3e776dee3e Compatibility hack
Bug: 20940526

Rather than throwing an exception on accessing a recycled()
bitmap let certain operations succeed and just return dummy
values. Apps appear to be relying on this.

Change-Id: I74df2efdc29d93facd8553ed31cda3addf0b28eb
2015-05-08 14:02:02 -07:00
John Reck
f29ed28c7b Attempt to solve the double-GC problem
Fix the issue where Bitmap requires two GC passes
to release its byte[] by using some questionable
ref-counting hacks to manage whether or not
native has a strong or weak ref to the byte[]

Change-Id: Ia90a883579f61c0b1904b5549a66bd0ef34b32c5
2015-05-04 16:05:12 -07:00
John Reck
7c103a36f6 Remove Bitmap#getSkBitmap
Change-Id: Ifb9047b426122d3e5a445eb7a0eb3fce38dedf27
2015-05-01 14:38:44 -07:00
John Reck
c6e2e8ff47 Move AssetAtlas off of SkBitmap*
Switched to SkPixelRef*

Change-Id: I4a1d9dc6c55c1ebcce6b0b8c585e69559e523898
2015-05-01 14:30:21 -07:00
John Reck
7809f835ca Revert "Move AssetAtlas off of SkBitmap*"
This reverts commit 87ffb63d90.

Change-Id: I92adfcee454a0a19020cdd9e96a134be0ee529aa
2015-04-17 20:46:47 +00:00
John Reck
1ff961dd6d Revert "Remove Bitmap#getSkBitmap"
This reverts commit 4bd981ec53.

Change-Id: I5c92cd955c6e70e197dc5cbc5dfeed8369a24a31
2015-04-17 20:45:15 +00:00
John Reck
4bd981ec53 Remove Bitmap#getSkBitmap
Change-Id: Ifb9047b426122d3e5a445eb7a0eb3fce38dedf27
2015-04-15 15:56:12 -07:00
John Reck
87ffb63d90 Move AssetAtlas off of SkBitmap*
Switched to SkPixelRef*

Change-Id: I4a1d9dc6c55c1ebcce6b0b8c585e69559e523898
2015-04-15 13:27:05 -07:00
Tor Norbye
1c2bf03d10 Annotate return values with @CheckReturn
Change-Id: Icd8fb6adb591ccd7f35f2336ae716b198abf69c5
2015-03-07 20:49:18 -08:00
Tor Norbye
80756e3888 Annotate ARGB integer parameters with @ColorInt
Change-Id: I307f72a382272cf18ddb6b07d9fcb81228568d9a
2015-03-05 16:34:12 -08:00
John Reck
f4faeac352 Cleanup Bitmap JNI attempt #2
Original version missed a spot

This reverts commit c02977e3bb.

Change-Id: I56244ce10d709fcdef42a001fe4c6ba7b6bbb04d
2015-03-05 13:56:16 -08:00
Chad Jones
c02977e3bb Revert "Cleanup Bitmap JNI"
This reverts commit b2915245b7.

Change-Id: Idd7d7f33eec4ea5024c83de6b10d3d1a6ab2b17a
2015-03-05 19:34:26 +00:00
John Reck
b2915245b7 Cleanup Bitmap JNI
Fix a bunch of places where mNativeBitmap was being
poked at directly, switch them either to the NDK API
or to GraphicsJNI where it made sense

Change-Id: I6b3df3712d6497cba828c2d3012e725cb4ebb64d
2015-03-05 09:55:02 -08:00
John Reck
fe026218d0 am 94474515: Merge "Prevent memory corruption from use-after-free" into lmp-mr1-dev automerge: bb8d7ff
automerge: 1e5dd46

* commit '1e5dd46133bd47445ba0657692fb86492acad705':
  Prevent memory corruption from use-after-free
2015-01-23 20:37:27 +00:00
John Reck
4018eb3763 Prevent memory corruption from use-after-free
Bug: 19035637

If an app tries to call recycle() on a Bitmap that has
already been finalized it will result in use-after-frees. This is
bad. Avoid this by setting the pointer to 0 and checking for this

Change-Id: I12d73703a0f95b05fe4c2fd8e9c01b6a3f2f023b
2015-01-23 11:01:05 -08:00
John Reck
1022888d33 resolved conflicts for merge of 203c8171 to master
Change-Id: I256397410c261fae049bae4572f132235be1c5c9
2014-12-04 16:06:34 -08:00
Derek Sollenberger
f29d5a5b21 Update AndroidPixelRef to prevent VM from cleaning up memory prematurely.
bug:18306529
Change-Id: I1ea94df1dcaf4fcf248b63dc8b0a13f36412570a
2014-12-03 13:43:30 -05:00
Derek Sollenberger
dfba4d3d11 Mutable Java Shaders with Immutable Native Shaders
bug: 17641888
Change-Id: I0f05387423cde185dab1a1453f89d5251ca1a4f9
2014-10-06 13:04:45 -04:00
Chris Craik
4cd7dbc90f Notify VM of native pixelref allocations
bug:17178931
Change-Id: I0de22bb0d2ae8233d392b7e222f72391aaa12ce8
2014-08-26 13:10:33 -07:00
John Reck
0df3bd5594 Add Bitmap.compress to TRACE_TAG_RESOURCES
Bug: 16800719

 TRACE_TAG_RESOURCES shows bitmap decoding, have it show
 compressing as well

Change-Id: I04f62545be52698de5371a2594973fa336e7b2fa
2014-08-05 21:00:05 +00:00
Chris Craik
47cd8e921d Implement outline support for nine patches
b/15856895

Nine patches now have outline round rect metadata stored as optional
png tags. aapt generates these automatically by inspecting the bitmap
pixels to estimate outline bounds and round rect radius, based on
opacity.

Change-Id: I226e328a97873010d9e1adb797ac48f93a31183c
2014-07-14 15:01:27 -07:00
Alan Viverette
c054966b71 Make optical insets actually work
Change-Id: I9fabf4cb939cc7a868f95580e7229745acde0418
2014-07-04 01:10:38 +00:00
Leon Scroggins III
57ee620ced Read premultiplied status from the SkBitmap.
Replace the Java variable with mRequestPremultiplied, to better
reflect what it represents. In both native and Java, the SkBitmap
is used as the decision maker of whether a Bitmap is premultiplied.
When changing other settings, mRequestedPremultiplied is used to
determine whether it should be premultiplied (if the new config/
hasAlpha-ness etc supports it).

ChooseFromColorProc now reads both the colortype (instead of the
deprecated Config) and alphatype on the SkBitmap. Same with
ChooseToColorProc. In the process, this caught a bug, where the
wrong procs were being used for Index8.

Replace instances of SkBitmap::Config with SkColorType where I
was already changing code.

Use the new versions of setConfig/allocPixels that take an SkImageInfo
as a parameter.

Document isPremultiplied's return value for ALPHA_8.

BUG:13618134
Change-Id: I91fc1f1e46e9294364b1af0ab4bdb37c68d7058e
2014-07-01 14:05:37 -04:00
Leon Scroggins III
17a8bfc38a In Bitmap.reconfigure, update the pixelref's info.
This fixes CTS tests which are crashing on an SkASSERT due to a
mismatch of SkImageInfo between the SkPixelRef and SkBitmap.

Also directly call ref() and unref() instead of SkSafeRef/SkSafeUnref,
since we would already crash if the SkPixelRef in question was NULL.

Also if the user attempts to reconfigure to 4444, use 8888 instead.

Change-Id: I473ef225c6cd1c92d67ae103c53c6cff0dad92de
2014-06-11 18:53:42 -04:00
John Reck
1e1f4d705e am 02e99e27: am ae316643: am aff40e25: am fc603ca6: am abf701e6: Merge "Eliminate mHasAlpha" into klp-dev
* commit '02e99e272dbfedf5d9ba1ae91fa2b83cab5b3d07':
  Eliminate mHasAlpha
2014-03-24 18:44:01 +00:00
John Reck
aff40e25e8 am fc603ca6: am abf701e6: Merge "Eliminate mHasAlpha" into klp-dev
* commit 'fc603ca6b518777a7e4dc391bc771e5609ab3ab5':
  Eliminate mHasAlpha
2014-03-21 19:47:22 +00:00
John Reck
fc603ca6b5 am abf701e6: Merge "Eliminate mHasAlpha" into klp-dev
* commit 'abf701e6751aed487d4ed0986e0fae8810c3658f':
  Eliminate mHasAlpha
2014-03-21 19:41:00 +00:00
John Reck
91f0a455bb Eliminate mHasAlpha
Bug: 13580771

 The cached value mHasAlpha on Bitmap could get out of sync with the
 real value stored in the SkBitmap. Fix this by just eliminating the
 cached value. This adds an extra JNI call in copy(), createBitmap(),
 and setPremultiplied(), none of which are going to be significantly
 impacted by the extra JNI call.

Change-Id: I4fce069a77d9b3bbb47dde04275ff8510ce7e4f0
2014-03-21 18:16:18 +00:00
Ben Murdoch
c4c484c6a7 am e9529bc4: am d292aac5: am 889a1ddd: Fix JavaDoc
* commit 'e9529bc4cb28176fddf1e7916c7791e5974f2fc3':
  Fix JavaDoc
2014-03-17 23:32:25 +00:00
Doug Zongker
f168e4c46c resolved conflicts for merge of a1ca303a to master
Change-Id: I37ef6102fd79e396fa3e50d6c012a667488a306d
2014-03-17 16:24:30 -07:00
Ben Murdoch
889a1ddd00 Fix JavaDoc
Change-Id: I20d0b1544ba88c694b950ef6062f93c65b16d371
2014-03-17 19:20:43 +00:00
Torne (Richard Coles)
5aa9c5a77b Fix javadoc.
Fix javadoc reference missing a #

Bug: 13246311
Change-Id: Ifc06234943339250feb5b4f2077af03c35be076e
2014-03-17 17:51:40 +00:00
Leon Scroggins III
f8d8777ddd Update framework to use M33 Skia. DO NOT MERGE
(These CLs are already in master.)

Bug: 13246311

This cherry-picks 7 CLs:

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

Remove calls to deprecated SkBitmap::setIsOpaque()

setIsOpaque() has been removed from ToT Skia.

Update setters for mIsPremultiplied and hasAlpha to take the
other into consideration.

cherry-pick from: I1b36b0b0ce7126031eb7b769b563c17dcd4b306a

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

Merge AssetStream with AssetStreamAdaptor.

Add enums to the constructor for AssetStreamAdaptor to choose the
different behaviors used by the (former) two different classes.

The old clients of AssetStream now get the following features of
AssetStreamAdaptor
- Debugging statements on error.
- The stream is an SkStreamRewindable.
- getLength() returns the correct value, and the old way of getting
  the length (read(NULL, 0)) is no longer implemented, since it is
  no longer used.
- isAtEnd() returns the correct value. ToT Skia makes it pure virtual,
  so some implementation is necessary.

cherry-pick from: I2a5395914e4f53830aaefee396556459083a1c56

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

Deprecate Android-specific SkPaint functions.

The following functions were problematic:
 const SkGlyph& getUnicharMetrics(SkUnichar, const SkMatrix*);
 const SkGlyph& getGlyphMetrics(uint16_t, const SkMatrix*);
 const void* findImage(const SkGlyph&, const SkMatrix*);

Replacing them with calls through SkGlyphCache solved a nasty crash
bug, so they have all been deprecated.

Bug: 11968757
cherry-pick from: Id746315d41aec5b211b78b172a883c2061130f08

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

pass SkGlyphCache into updateGlyphCache()

Doing so prevents us from double-locking the glyph cache, thereby
effectively locking ourselves out of reusing work that we'd just done.

Bug: 11968757
cherry-pick from: I5c552f2d0bbe30af2ce9054ba684e7da756a0d89

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

Updates to the Skia API needed to merge the WebView m33 version of Skia.

cherry-pick from: I0f63b53f2aae58871413b132742fc84138f069a3

Bugfix for screenshots (recent apps) due to incorrect rowBytes computation

bug: 12915192
cherry-pick from: I4d5fe2a2f75baf66099e0970fb646686a1992714

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

Fix bug in AndroidPixelRef where we did not store the correct imageInfo for a recycled bitmap.

cherry-pick from: I882483b78886e2f19fa4e43a86e69f5a82b3b7e5

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

Change-Id: Ie2b731a9f0795802418cfecddb4b684c92c64d33

Conflicts:
	core/jni/android/graphics/Bitmap.cpp
	core/jni/android/graphics/Graphics.cpp
	core/jni/android/graphics/Typeface.cpp
	graphics/java/android/graphics/Bitmap.java
2014-03-17 13:57:18 +00:00
Leon Scroggins III
87e9e744ed am 92a32832: DO NOT MERGE - Fix Javadoc build break.
* commit '92a3283286df3a6c2a27ecde8eddf23abbb87de9':
  DO NOT MERGE - Fix Javadoc build break.
2014-03-06 21:31:31 +00:00
Leon Scroggins III
92a3283286 DO NOT MERGE - Fix Javadoc build break.
Remove links to non-specific function name.

Bug: 13246311

Change-Id: I5643074149d0a511bd760d638751c44e3ec4c557
(cherry picked from commit 2bc49ca96e)
2014-03-06 20:44:16 +00:00
Leon Scroggins III
8d3281f5f7 am ee008d42: Merge "Update framework to use M33 Skia. DO NOT MERGE" into klp-dev
* commit 'ee008d4264a95bba5f90b17856fc06fa29a6f12c':
  Update framework to use M33 Skia. DO NOT MERGE
2014-03-06 19:49:58 +00:00
Leon Scroggins III
5e49b497ae Update framework to use M33 Skia. DO NOT MERGE
(These CLs are already in master.)

Bug: 13246311

This cherry-picks 7 CLs:

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

Remove calls to deprecated SkBitmap::setIsOpaque()

setIsOpaque() has been removed from ToT Skia.

Update setters for mIsPremultiplied and hasAlpha to take the
other into consideration.

cherry-pick from: I1b36b0b0ce7126031eb7b769b563c17dcd4b306a

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

Merge AssetStream with AssetStreamAdaptor.

Add enums to the constructor for AssetStreamAdaptor to choose the
different behaviors used by the (former) two different classes.

The old clients of AssetStream now get the following features of
AssetStreamAdaptor
- Debugging statements on error.
- The stream is an SkStreamRewindable.
- getLength() returns the correct value, and the old way of getting
  the length (read(NULL, 0)) is no longer implemented, since it is
  no longer used.
- isAtEnd() returns the correct value. ToT Skia makes it pure virtual,
  so some implementation is necessary.

cherry-pick from: I2a5395914e4f53830aaefee396556459083a1c56

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

Deprecate Android-specific SkPaint functions.

The following functions were problematic:
 const SkGlyph& getUnicharMetrics(SkUnichar, const SkMatrix*);
 const SkGlyph& getGlyphMetrics(uint16_t, const SkMatrix*);
 const void* findImage(const SkGlyph&, const SkMatrix*);

Replacing them with calls through SkGlyphCache solved a nasty crash
bug, so they have all been deprecated.

Bug: 11968757
cherry-pick from: Id746315d41aec5b211b78b172a883c2061130f08

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

pass SkGlyphCache into updateGlyphCache()

Doing so prevents us from double-locking the glyph cache, thereby
effectively locking ourselves out of reusing work that we'd just done.

Bug: 11968757
cherry-pick from: I5c552f2d0bbe30af2ce9054ba684e7da756a0d89

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

Updates to the Skia API needed to merge the WebView m33 version of Skia.

cherry-pick from: I0f63b53f2aae58871413b132742fc84138f069a3

Bugfix for screenshots (recent apps) due to incorrect rowBytes computation

bug: 12915192
cherry-pick from: I4d5fe2a2f75baf66099e0970fb646686a1992714

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

Fix bug in AndroidPixelRef where we did not store the correct imageInfo for a recycled bitmap.

cherry-pick from: I882483b78886e2f19fa4e43a86e69f5a82b3b7e5

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

Change-Id: Ie2b731a9f0795802418cfecddb4b684c92c64d33
2014-03-06 12:14:47 -05:00
Derek Sollenberger
b644a3b845 Updates to the Skia API needed to merge the WebView m33 version of Skia.
This is a cherry-pick of 2 CLs:

21969a2b26945da3fd86aef7c93479e4fb359a65
c7a581cf7691db5c61e6694aa51daaa994004bd9

Change-Id: I6fd9366fbba0a336de1df794be9497983bfd13ae
2014-02-24 15:44:31 -05:00