summaryrefslogtreecommitdiffstats
path: root/cmds
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2010-09-29 13:02:36 -0700
committerMathias Agopian <mathias@google.com>2010-10-04 17:36:17 -0700
commit597c7f67b5f2491c6098a1de241a3f0fd274688a (patch)
tree841774d2e67bfced0608d2344868c64ac566004e /cmds
parent541d942000c338a15dc4b361b15b72864640d2bf (diff)
downloadframeworks_base-597c7f67b5f2491c6098a1de241a3f0fd274688a.zip
frameworks_base-597c7f67b5f2491c6098a1de241a3f0fd274688a.tar.gz
frameworks_base-597c7f67b5f2491c6098a1de241a3f0fd274688a.tar.bz2
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: I33689bba98507ab928d0898b21596d0d2fe4b953
Diffstat (limited to 'cmds')
-rw-r--r--cmds/screencap/screencap.cpp25
1 files changed, 7 insertions, 18 deletions
diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp
index 6ce5b86..bc5e10d 100644
--- a/cmds/screencap/screencap.cpp
+++ b/cmds/screencap/screencap.cpp
@@ -17,32 +17,21 @@
#include <unistd.h>
#include <fcntl.h>
-#include <utils/Log.h>
-
-#include <binder/IPCThreadState.h>
-#include <binder/ProcessState.h>
-#include <binder/IServiceManager.h>
-
#include <binder/IMemory.h>
-#include <surfaceflinger/ISurfaceComposer.h>
+#include <surfaceflinger/SurfaceComposerClient.h>
using namespace android;
int main(int argc, char** argv)
{
- const String16 name("SurfaceFlinger");
- sp<ISurfaceComposer> composer;
- if (getService(name, &composer) != NO_ERROR)
- return 0;
-
- sp<IMemoryHeap> heap;
- uint32_t w, h;
- PixelFormat f;
- status_t err = composer->captureScreen(0, &heap, &w, &h, &f);
- if (err != NO_ERROR)
+ ScreenshotClient screenshot;
+ if (screenshot.update() != NO_ERROR)
return 0;
- uint8_t* base = (uint8_t*)heap->getBase();
+ void const* base = screenshot.getPixels();
+ uint32_t w = screenshot.getWidth();
+ uint32_t h = screenshot.getHeight();
+ uint32_t f = screenshot.getFormat();
int fd = dup(STDOUT_FILENO);
write(fd, &w, 4);
write(fd, &h, 4);