46 Commits

Author SHA1 Message Date
Dominik Laskowski
3316a0a08e Generalize physical display management
This CL enables the framework to manage an arbitrary number of physical
displays. It also surfaces physical display IDs, which are stable across
reboots and encode (model, port) information that will be propagated
further up in a follow-up CL.

Bug: 116025192
Test: Boot with more than two displays
Test: Hotplug works with any number of displays
Test: Verify stable display IDs with "dumpsys display"
Change-Id: Idb2eaff66b2e0873be6ad27d337ff18b730d1331
2019-02-04 10:06:15 -08:00
Brian Osman
be8fac26d7 Switch to skcms-based factories and getters in SkColorSpace
Test: Mechanical substitution, still builds.
Change-Id: I877e4edd61e81279830ffbbcfea18d721abf6943
2019-01-15 03:17:09 +00:00
Peiyong Lin
10a34d1074 [Screenshot] Accept data space and pixel format for screenshot.
Previously we always take screenshot in SRGB data space. It's been working well
since the screen only has sRGB color. However, since we are moving towards
wider color, we can't make this assumption any more. Thus we need to pass the
data space and pixel format of the screenshot buffer into SurfaceFlinger and
render screenshot in the desired data space and pixel format.

BUG: 111436479
BUG: 116112787
Test: Build, flash, boot and take screenshot, observe there's no color shift.
Test: Take screenshot, verified the color profile is correct of the png.
Change-Id: I9b1a1c878f8099715c2a2c296aaf3419ca6e9bd5
2018-10-24 11:34:08 -07:00
Chavi Weingarten
3623c39cd3 Merge "Remove minLayer and maxLayer from display screenshot." 2018-09-20 19:03:42 +00:00
chaviw
08520a05af Remove minLayer and maxLayer from display screenshot.
When taking a full display screenshot, there's no longer a need for min
and max layer. Instead, the entire display will be screenshotted. If
only some layers should be screenshotted, then use the captureLayers method
instead.

Also, condensed the methods so there is only one screenshot method for
displays that returns a GraphicBuffer. SurfaceControl can then convert
it to the desired format, like Bitmap or Surface.

Test: Rotation, adb shell screencap, power + volume down, bugreport.
Change-Id: Ia5a293e89d2cf3811fd06ffcbafeee389a32840e
2018-09-19 10:11:53 -07:00
chaviw
7f4dc7e3ce Check return value in screencap in case of failure.
Check the results for an error when generating a screencap so invalid
data is not returned as the captured image.

Test: screencap works
Change-Id: I377c11c1e07cd04a6b3882ac20d7be9d6ddb25c5
Fixes: 80106675
2018-09-12 16:35:23 -07:00
Steven Moreland
a89ae86745 screencap: return instead of _exit.
_exit was being used instead of return in order to
work around a static destructor issue that has been
fixed.

Bug: 77934844
Test: screencap (and it doesn't crash)
Change-Id: I5dc25b0af5099993a94705ac9c7b439e68432824
2018-05-25 00:55:51 +00:00
Chavi Weingarten
d7ec64ccd0 Revert "Revert "Updated screenshot code to reflect native changes.""
This reverts commit ea2eb5a14447869325ced829910f072c81913ef3.

Reason for revert: Ready to test out changes with SystemUI update

Change-Id: I9c8d5672a530334300bc1ea454a7fd7900296c7c
2017-11-29 17:54:23 -08:00
Chavi Weingarten
ea2eb5a144 Revert "Updated screenshot code to reflect native changes."
This reverts commit 689e091c7faa30f005b9adc0b7b3d2066c62be84.

Reason for revert: SystemUI and some other places need to be updated as well. Will resubmit with the other necessary changes

Change-Id: I8d1955b289d91a89c4d3f117c0ba0c3119ff51fc
Bug: 69898957
2017-11-29 21:38:57 +00:00
chaviw
689e091c7f Updated screenshot code to reflect native changes.
The changes in native code removed using a GraphicBufferProducer and
instead use only a GraphicBuffer to generate screenshots. Updated JNI
code so it calls the screensot function that returns a GraphicBuffer
and handle returning either a Surface, GraphicBuffer, or Bitmap.

Also updated screencap shell code so it uses the new GraphicBuffer
screenshot code.

Test: Recents, screenshot from SystemUi, screenshot from shell.
Change-Id: I6cb4f619e59461790a2a8f0cd2ea1192d9ae66b6
2017-11-28 15:16:10 -08:00
Steven Moreland
32bdb1e9b0 Merge "Remove unused variable from screencap."
am: 376234fc74

Change-Id: I5afb38c24ab6924925ab2852c5fe0ef29a91a2ff
2017-09-19 03:22:42 +00:00
Steven Moreland
8b3ed84fc3 Remove unused variable from screencap.
Noticed while working on b/65206688.

Test: links
Change-Id: Ia4d67022eb5c500372090c0e025e340989c41643
2017-08-30 17:03:53 -07:00
Martijn Coenen
48b7408201 screencap: always exit with _exit().
Delay starting the threadpool until necessary,
and once started, always exit with _exit().

Bug: 36066697
Bug: 62956201
Test: mma, screencap -p
Merged-In: I0b9ab542f6434f57b498cd7dc41219ef57e36721
Change-Id: I0b9ab542f6434f57b498cd7dc41219ef57e36721

(cherry picked from commit 4d125c1df6b7e4dbc3a788ecce5434970e676b06)

Change-Id: Ie79ead94c62df0c4057d7fc6735abe9dcd1e940f
2017-08-04 07:31:09 +00:00
Narayan Kamath
bc8c0e9c1d Merge "_exit(0) on clean shutdown, not _exit(1)" into oc-dev
am: 31cf02742e

Change-Id: Ie0d68df7a51c10bc82974680bdd16f1eab48e9fa
2017-06-22 17:34:12 +00:00
Brian Carlstrom
9377ce67a8 _exit(0) on clean shutdown, not _exit(1)
Test: m -j32 checkbuild
Bug: 36066697
Change-Id: Iaed45a86f9603badf26041212dfc5e9399bc0a0c
2017-06-21 22:15:10 -07:00
Josh Gao
17d3fc2e68 Merge "Hack around b/36066697." into oc-dev
am: e139434e3a

Change-Id: I422d2b73fc854047d1293919c25f0656df0842c9
2017-06-20 04:30:07 +00:00
Josh Gao
909825886c Hack around b/36066697.
Avoid calling libbinder's static destructors by calling _exit instead
of returning in main.

Bug: http://b/36066697
Test: treehugger
Change-Id: I81dd50453f1ea64d97ec97d207fff732b3c62512
2017-06-19 14:10:45 -07:00
Romain Guy
26a2b97dbe Enable wide color gamut rendering
When wide color gamut rendering is requested, hwui will now
use an rgba16f scRGB-nl surface for rendering. This change
also fixes the way screenshots are handled in the platform
to behave properly with wide gamut rendering.

This change does not affect hardware layers. They also
need to use rgba16f scRGB-nl; this will be addressed in
another CL.

Bug: 29940137
Test: CtsUiRenderingTestCases, CtsGraphicsTestCases

Change-Id: I68fd96c451652136c566ec48fb0e97c2a7a257c5
2017-06-02 11:02:13 -07:00
Martijn Coenen
3b53fc5a84 Only spawn one binder thread for screencap.
To work around race conditions in libbinder when
spawning new threads while being shut down.

Bug: 36066697
Test: screencap still works
Change-Id: I774d3dc2491bb578a12dede90cc7fcded976f13f
2017-05-11 17:44:45 +00:00
Robert Carr
db7ecbe699 Correct Screencap utility code.
Screenshot interface now takes signed parameters.

Bug: 34758075
Test: None
Change-Id: I884456ce7f22a9e57990371ad66f6bb55d09e999
2017-01-31 11:02:58 -08:00
Hal Canary
10219fb261 SkImageEncoder->SkEncodeImage
Test: none
Change-Id: I15630d2852d12840329181f135852e28d287bbcf
(cherry picked from commit 8c6bac4c77caeefb667bec90d16b5384fd2b2b31)
2016-12-07 13:29:42 +00:00
Ben Wagner
18bd88534a Replace SkAutoTUnref with sk_sp.
Skia would like to remove SkAutoTUnref and replace it with sk_sp.
This also removes the last SkAutoTDelete straggler.

Change-Id: Idd46fcbbffe7fc1edb243b82b1c2f5425ccd60b6
2016-11-02 16:30:50 +00:00
Prathmesh Prabhu
bf89ae53c3 screencap: Nix deprecated direct read of framebuffer.
screencap command had a fallback path that tried to read the framebuffer
directly. This is no longer supported (and is blocked by selinux
policy), so delete said path.

BUG:27598623
Change-Id: I1b002d4a68ad93f75b150029d01b5f0c500be56c
2016-03-10 15:23:34 -08:00
Dan Stoza
cf70d71781 screencap: Rotate images when display is rotated
Changes screencap to read the display rotation and use it when
capturing the screenshot so that the output image is oriented
correctly.

Bug: 8433742
Change-Id: I0f7db422399985a1ff17da3faa946ff0943e58f7
2015-06-09 16:53:11 -07:00
Leon Scroggins III
3449789b9c SkStream is no longer a ref counted object.
With https://codereview.chromium.org/849103004/, SkStream is no longer
ref counted. Change callers that currently unref() SkStreams to one of
either:
- delete the stream
- pass ownership of the stream

screencap.cpp:
Call EncodeData directly, bypassing SkDynamicMemoryWStream and SkBitmap.

Utils.cpp:
Write directly to an SkData, and then use that to construct a new
SkStream.

Cherry-pick of a change that originally landed in master-skia and is
dependent on a skia merge (ag/655422).

Change-Id: Idc99ad7d5a70c893dc012d59915216f301ab3c9d
2015-03-12 19:51:57 +00:00
Andreas Gampe
cfedceb8c1 Frameworks/base: Turn on -Wall -Werror in cmds
Fix small warnings, turn on -Wall -Werror.

Change-Id: Iab1f01a7c7ebd6ba832b75067c5e395f380a1b8b
2014-11-07 14:33:51 -08:00
Marco Nelissen
f8820f3f53 am c840e31d: am fa436298: Merge "Broadcast an intent to mediascanner after executing screencap"
* commit 'c840e31d0ee772373b1be7469b7bfbe28715d52e':
  Broadcast an intent to mediascanner after executing screencap
2014-09-22 14:56:30 +00:00
Mike Reed
b933055cf3 stop using (deprecated) SkBitmap::Config
Change-Id: Ic75b5fc6996578e9d95bd3a220439ec1541d7c3b
2014-06-20 10:28:37 -04:00
Umair Khan
cfed2326c7 Broadcast an intent to mediascanner after executing screencap
PS2: Fix for spaces in file names

After doing screencap /sdcard/test.png in shell the screenshot is captured
but the gallery is not updated.
So we should broadcast the intent android.intent.action.MEDIA_SCANNER_SCAN_FILE
for the image to show up in gallery.

Change-Id: I8e384865082c717842d70d376d5828d74a2ad780
Signed-off-by: Umair Khan <omerjerk@gmail.com>
2014-06-12 17:44:12 +05:30
Dan Stoza
9890e341bf SurfaceFlinger: Add sourceCrop to screenshot
Adds a sourceCrop Rect parameter to screenshot commands, which allows
clients to capture only a portion of the screen instead of the whole
screen.

Bug: 15137922
Change-Id: I629447573cd34ffb96334cde7ba02490b9ea06d8
2014-05-23 09:19:02 -07:00
Dan Stoza
16ec12ae77 Allow disabling layer rotation during screenshots
Add the ability to ignore layers' transformation matrices during
screenshot capture, which will allow the window manager to capture
unrotated images for recents during the device rotation animation.

Bug: 11805195
Change-Id: I96e65506b198d34724eb3aa84815aae6f6de4935
2014-02-14 23:10:29 +00:00
Mathias Agopian
b251f3d0c6 get rid of HAL pixelformats 5551 and 4444
Change-Id: I6a6c4c656d80280eb85f90f99f35721ffca285df
2013-07-26 14:58:00 -07:00
Mathias Agopian
6f7b589171 get rid of PIXEL_FORMAT_A_8
Change-Id: Ia750811f08ddebdd5818da211fd03d61b75f8e97
2013-07-25 17:25:02 -07:00
Mathias Agopian
a79fd4ca31 use the bitmap stride when encoding a screenshot as PNG
Bug: 8444808
Change-Id: I47b74c22c940b40bd02634e9cd9dbff39b29a99f
2013-03-21 21:44:49 -07:00
Mathias Agopian
0137fb8937 make sure screencap's data stream matches what adb expects
adb assumes the stride is always equal to the width, so
we make sure it's actually the case (screenshot don't
always have this guarantee).

Change-Id: I643b909f6542b7493a611afc6e3c86955b984352
2013-03-20 15:40:45 -07:00
Mathias Agopian
0678a8c250 make sure to start the binder thread pool
Change-Id: I5c125a001936797489ebdcd0d4ccbde23adba282
2013-03-19 20:56:00 -07:00
Mike Lockwood
c59b2f9a77 More changes to fix PDK build:
move screencap back to frameworks/base
move libdiskusage to frameworks/native

Change-Id: I8abe425c4bbf305bbe8650094c40c16df8c6d5e4
2012-10-24 12:31:10 -07:00
Mike Lockwood
6931061de6 Move non-Java commands to frameworks/native
Change-Id: Id77c2cecb27cec500dfe066e4430f9e67802a433
Signed-off-by: Mike Lockwood <lockwood@google.com>
2012-10-24 10:43:42 -07:00
Jeff Brown
0b722fe9ce Use new surface flinger API.
Change-Id: Ic888577408a59a36481a48010e19c5e77c24e211
2012-08-27 14:34:53 -07:00
Mathias Agopian
8335f1cccc fix libgui header location
Change-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe
2012-02-27 13:03:08 -08:00
Mathias Agopian
3e3681151a remove libui's dependency on libpixelflinger
this also remove support for unused pixelformats.

Change-Id: I2c759a6d2daa740f3786ed62095def8047ae933d
2012-02-21 18:56:08 -08:00
Derek Sollenberger
889a3fa6ab Skia API changes as a result of an update to the Skia library.
These changes are required to work with r3022 of Skia

Change-Id: Ib7cebeb2eba6790bb38edfc2397b311cf419e17c
2012-01-31 14:08:22 -05:00
Mathias Agopian
9afc7b02fa fix [3374821] Cannot take screenshot of HC preview
the screencap tool will now fallback to /dev/graphics/fb0 is the
screenshot API fails.

Change-Id: I3f593847c72f4ca5429d4f64ca22bd5436dd2051
2011-02-08 20:43:00 -08:00
Joe Onorato
5cff0630eb make screencap able to save pngs.
Change-Id: Idf3542ff05670bc872bd91770810ed775266514f
2010-12-03 16:07:08 -08:00
Mathias Agopian
38ed2e39c5 refactored screenshot code
the core screenshot function now can capture the screen at any lower resolution
performing bilinear filtering.

we also now have some client code to interface with the screenshot service.

it's now possible to request a screenshot at a lower resolution.

Change-Id: I5a3b0e431421800e3aad601d9af8f94adffbc71f
2010-09-29 16:55:15 -07:00
Mathias Agopian
88a5df9366 new screencap command
this captures the framebuffer via surfaceflinger APIs and outputs
it to stdout. this is intended to be used by adbd.

Change-Id: I0cfa6a47ec121edcd93f46b64870f9a553f653ff
2010-09-26 19:11:04 -07:00