summaryrefslogtreecommitdiff
path: root/cmds/screencap/screencap.cpp
Commit message (Collapse)AuthorAgeFilesLines
* screencap: Require display ID in -d switchDominik Laskowski2021-03-231-6/+10
| | | | | | | | | Remove undocumented fallback to layer stack, since virtual displays can now be specified by their unambiguous IDs. Bug: 182939859 Test: screencap -d <id> Change-Id: I86a8e713d8076abe55aeeb327fd9d746c46e5a40
* Introduce DynamicDisplayInfoMarin Shalamanov2021-02-181-1/+0
| | | | | | | | | | | | | | | | | | In this CL we introduce SurfaceContorl.getDynamicDisplayInfo which replaces the current seprate calls for supported and active display mode, supproted and active color modes and HDR capabilities. This way display capabilities can be queried atomically. Additionally this CL pipes an DisplayMode IDs from SurfaceFlinger and updates LocalDislayAdapter to use IDs instead of array indices. Test: presubmit Bug: 159590486 Bug: 175678215 Change-Id: I169e3055d07905e2330e11f158b61ffd366f97e6
* Send ScreenCaptureListener to native screen capture requests.chaviw2020-09-141-3/+9
| | | | | | | | | | | | Allow for asynchronous screenshot by sending a ScreenCaptureListener to handle screenshot callbacks. All existing calls are still synchronous since the SurfaceControl method will block the caller until the results from SurfaceFlinger are ready. Test: power + volume down Test: adb shell screencap Bug: 162367424 Change-Id: I6cb5641dc19f32f262e3120949fc30ea104cff89
* Revert "Send ScreenCaptureListener to native screen capture requ..."Chavi Weingarten2020-09-101-9/+3
| | | | | | | | | | | | | | | Revert "Update screen capture functions to accept a ScreenCaptur..." Revert submission 12404049-async_screencapture Reason for revert: 168149157, 168154840 Reverted Changes: I54c34003c:Send ScreenCaptureListener to native screen captur... I9cbc833f8:Update screen capture functions to accept a Screen... Change-Id: Ibd2b1e6588aa45fe228ea7c4c43dbf7a5402aaa5 Bug: 168154840 Bug: 168149157
* Send ScreenCaptureListener to native screen capture requests.chaviw2020-09-081-3/+9
| | | | | | | | | | | | Allow for asynchronous screenshot by sending a ScreenCaptureListener to handle screenshot callbacks. All existing calls are still synchronous since the SurfaceControl method will block the caller until the results from SurfaceFlinger are ready. Test: power + volume down Test: adb shell screencap Bug: 162367424 Change-Id: I54c34003c0786b585dd20530a06dbd4b266e178c
* Use type safe display IDs.Marin Shalamanov2020-08-041-5/+4
| | | | | | | Bug: 160679868 Test: m && flash device Test: take screnshot on device Change-Id: Id0cd5859b76fc29911d07119d54f329805425b7e
* Updated display capture and screencap to match native functionschaviw2020-07-311-15/+16
| | | | | | | | | | | | Modified Java and JNI display capture functions to match the new function in SurfaceComposerClient. The Java method will send an args object instead of individual arguments to SurfaceComposerClient Test: display screenshots working Test: adb shell screencap Bug: 162367424 Change-Id: Ic8d9cbc626e9ef73300304ce155a50f76f017dfc
* Merge "Fixed a typo"TreeHugger Robot2020-04-201-1/+1
|\
| * Fixed a typoDichen Zhang2020-04-171-1/+1
| | | | | | | | | | | | | | | | "am broadcast -a" rather than "am broadcast am" Bug: 123230379 Test: commands #4 and #5 in bug report Change-Id: I5c23cd86b4da1e03b65c9a68a3a9044466012e89
* | Use public APIs for decoding images for screencapDerek Sollenberger2020-04-091-46/+29
|/ | | | | | | | | HWUI is restricting access to only a set of stable C APIs. Callers like boot animation are being converted to either the stable C or NDK APIs. Test: build and verify screencap cmd line for launcher Bug: 150782769 Change-Id: I87e1752409ccfeef22a082c389902b0883ad2bee
* screencap: fix a memory leakGeorge Burgess IV2020-03-161-2/+1
| | | | | | | | | | | | | If fork fails, we'll leak this strdup. The strdup here seems unnecessary; just use a pointer to the string itself instead. Caught by the static analyzer: frameworks/base/cmds/screencap/screencap.cpp:119:8: warning: Potential leak of memory pointed to by 'fp_arg' [clang-analyzer-unix.Malloc] Bug: None Test: TreeHugger Change-Id: Id7c738ed5c090bcb5b13a6258e91f027ff2b778c
* Fix command injection on screencapDichen Zhang2020-03-121-5/+34
| | | | | | | | | | | There is a potential injection by using screencap in case of user handled parameters. "dumpstate" command launches "screencap", when "-p" is argument is set. At that moment, content of "-o" parameter generates a path with ".png" extension to define "screencap" argument. "dumpstate" is often run as a service with "root" privileged such as defined in "dumpstate.rc". For instance "bugreportz" call "ctl.start" property with "dumpstatez". Launching "dumpstate" with "-p" option and a user input as "-o" would result in a root command execution. SE Linux might protect part of this attack. Bug: 123230379 Test: please see commands #4 and #5 Change-Id: Icd88cdf4af153e07addb4449cdb117b1a3c881d3
* Use new captureScreen method with displayId or layerStackchaviw2019-05-081-53/+7
| | | | | | | | | | | Modified screencap code to use the new captureScreen method that accepts either the layerStack or displayId. This removes the need to get the displayInfo from SurfaceFlinger explicitely. The captureScreen function in SurfaceFlinger will handle getting the correct display information to take the screenshot. Test: adb shell screencap -d <layerStack for virt display> Fixes: 130974213 Change-Id: I644bff547bed7d24284b8a6e7899a567d1f4cddf
* Generalize physical display managementDominik Laskowski2019-02-041-13/+18
| | | | | | | | | | | | | 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
* Switch to skcms-based factories and getters in SkColorSpaceBrian Osman2019-01-151-2/+1
| | | | | Test: Mechanical substitution, still builds. Change-Id: I877e4edd61e81279830ffbbcfea18d721abf6943
* [Screenshot] Accept data space and pixel format for screenshot.Peiyong Lin2018-10-241-13/+34
| | | | | | | | | | | | | | 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
* Merge "Remove minLayer and maxLayer from display screenshot."Chavi Weingarten2018-09-201-2/+1
|\
| * Remove minLayer and maxLayer from display screenshot.chaviw2018-09-191-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Check return value in screencap in case of failure.chaviw2018-09-121-1/+8
|/ | | | | | | | | 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
* screencap: return instead of _exit.Steven Moreland2018-05-251-8/+5
| | | | | | | | | | _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
* Revert "Revert "Updated screenshot code to reflect native changes.""Chavi Weingarten2017-11-291-46/+51
| | | | | | | | This reverts commit ea2eb5a14447869325ced829910f072c81913ef3. Reason for revert: Ready to test out changes with SystemUI update Change-Id: I9c8d5672a530334300bc1ea454a7fd7900296c7c
* Revert "Updated screenshot code to reflect native changes."Chavi Weingarten2017-11-291-51/+46
| | | | | | | | | 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
* Updated screenshot code to reflect native changes.chaviw2017-11-281-46/+51
| | | | | | | | | | | | | 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
* Merge "Remove unused variable from screencap."Steven Moreland2017-09-191-3/+0
|\ | | | | | | | | | | am: 376234fc74 Change-Id: I5afb38c24ab6924925ab2852c5fe0ef29a91a2ff
| * Remove unused variable from screencap.Steven Moreland2017-08-301-3/+0
| | | | | | | | | | | | | | Noticed while working on b/65206688. Test: links Change-Id: Ia4d67022eb5c500372090c0e025e340989c41643
* | screencap: always exit with _exit().Martijn Coenen2017-08-041-9/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Merge "_exit(0) on clean shutdown, not _exit(1)" into oc-devNarayan Kamath2017-06-221-1/+1
|\| | | | | | | | | | | am: 31cf02742e Change-Id: Ie0d68df7a51c10bc82974680bdd16f1eab48e9fa
| * _exit(0) on clean shutdown, not _exit(1)Brian Carlstrom2017-06-211-1/+1
| | | | | | | | | | | | Test: m -j32 checkbuild Bug: 36066697 Change-Id: Iaed45a86f9603badf26041212dfc5e9399bc0a0c
* | Merge "Hack around b/36066697." into oc-devJosh Gao2017-06-201-1/+3
|\| | | | | | | | | | | am: e139434e3a Change-Id: I422d2b73fc854047d1293919c25f0656df0842c9
| * Hack around b/36066697.Josh Gao2017-06-191-1/+3
| | | | | | | | | | | | | | | | | | Avoid calling libbinder's static destructors by calling _exit instead of returning in main. Bug: http://b/36066697 Test: treehugger Change-Id: I81dd50453f1ea64d97ec97d207fff732b3c62512
* | Enable wide color gamut renderingRomain Guy2017-06-021-1/+38
|/ | | | | | | | | | | | | | | | 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
* Only spawn one binder thread for screencap.Martijn Coenen2017-05-111-0/+5
| | | | | | | | | To work around race conditions in libbinder when spawning new threads while being shut down. Bug: 36066697 Test: screencap still works Change-Id: I774d3dc2491bb578a12dede90cc7fcded976f13f
* Correct Screencap utility code.Robert Carr2017-01-311-1/+3
| | | | | | | | Screenshot interface now takes signed parameters. Bug: 34758075 Test: None Change-Id: I884456ce7f22a9e57990371ad66f6bb55d09e999
* SkImageEncoder->SkEncodeImageHal Canary2016-12-071-7/+14
| | | | | | Test: none Change-Id: I15630d2852d12840329181f135852e28d287bbcf (cherry picked from commit 8c6bac4c77caeefb667bec90d16b5384fd2b2b31)
* Replace SkAutoTUnref with sk_sp.Ben Wagner2016-11-021-1/+1
| | | | | | | Skia would like to remove SkAutoTUnref and replace it with sk_sp. This also removes the last SkAutoTDelete straggler. Change-Id: Idd46fcbbffe7fc1edb243b82b1c2f5425ccd60b6
* screencap: Nix deprecated direct read of framebuffer.Prathmesh Prabhu2016-03-101-47/+1
| | | | | | | | | 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
* screencap: Rotate images when display is rotatedDan Stoza2015-06-091-1/+28
| | | | | | | | | 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
* SkStream is no longer a ref counted object.Leon Scroggins III2015-03-121-10/+5
| | | | | | | | | | | | | | | | | | | | 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
* Frameworks/base: Turn on -Wall -Werror in cmdsAndreas Gampe2014-11-071-4/+10
| | | | | | Fix small warnings, turn on -Wall -Werror. Change-Id: Iab1f01a7c7ebd6ba832b75067c5e395f380a1b8b
* am c840e31d: am fa436298: Merge "Broadcast an intent to mediascanner after ↵Marco Nelissen2014-09-221-1/+20
|\ | | | | | | | | | | | | executing screencap" * commit 'c840e31d0ee772373b1be7469b7bfbe28715d52e': Broadcast an intent to mediascanner after executing screencap
| * Broadcast an intent to mediascanner after executing screencapUmair Khan2014-06-121-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* | stop using (deprecated) SkBitmap::ConfigMike Reed2014-06-201-5/+6
| | | | | | | | Change-Id: Ic75b5fc6996578e9d95bd3a220439ec1541d7c3b
* | SurfaceFlinger: Add sourceCrop to screenshotDan Stoza2014-05-231-1/+1
| | | | | | | | | | | | | | | | | | 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
* | Allow disabling layer rotation during screenshotsDan Stoza2014-02-141-1/+1
|/ | | | | | | | 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
* get rid of HAL pixelformats 5551 and 4444Mathias Agopian2013-07-261-2/+0
| | | | Change-Id: I6a6c4c656d80280eb85f90f99f35721ffca285df
* get rid of PIXEL_FORMAT_A_8Mathias Agopian2013-07-251-2/+0
| | | | Change-Id: Ia750811f08ddebdd5818da211fd03d61b75f8e97
* use the bitmap stride when encoding a screenshot as PNGMathias Agopian2013-03-211-1/+1
| | | | | Bug: 8444808 Change-Id: I47b74c22c940b40bd02634e9cd9dbff39b29a99f
* make sure screencap's data stream matches what adb expectsMathias Agopian2013-03-201-2/+10
| | | | | | | | 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
* make sure to start the binder thread poolMathias Agopian2013-03-191-1/+4
| | | | Change-Id: I5c125a001936797489ebdcd0d4ccbde23adba282
* More changes to fix PDK build:Mike Lockwood2012-10-241-0/+195
| | | | | | | move screencap back to frameworks/base move libdiskusage to frameworks/native Change-Id: I8abe425c4bbf305bbe8650094c40c16df8c6d5e4