diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp index d1963926fa3b7..e1270afa50c04 100644 --- a/cmds/screencap/screencap.cpp +++ b/cmds/screencap/screencap.cpp @@ -28,6 +28,8 @@ #include #include +#include + #include #include #include @@ -138,7 +140,7 @@ int main(int argc, char** argv) ssize_t mapsize = -1; void const* base = 0; - uint32_t w, h, f; + uint32_t w, s, h, f; size_t size = 0; ScreenshotClient screenshot; @@ -147,6 +149,7 @@ int main(int argc, char** argv) base = screenshot.getPixels(); w = screenshot.getWidth(); h = screenshot.getHeight(); + s = screenshot.getStride(); f = screenshot.getFormat(); size = screenshot.getSize(); } else { @@ -160,6 +163,7 @@ int main(int argc, char** argv) size_t offset = (vinfo.xoffset + vinfo.yoffset*vinfo.xres) * bytespp; w = vinfo.xres; h = vinfo.yres; + s = vinfo.xres; size = w*h*bytespp; mapsize = offset + size; mapbase = mmap(0, mapsize, PROT_READ, MAP_PRIVATE, fb, 0); @@ -187,7 +191,11 @@ int main(int argc, char** argv) write(fd, &w, 4); write(fd, &h, 4); write(fd, &f, 4); - write(fd, base, size); + size_t Bpp = bytesPerPixel(f); + for (size_t y=0 ; y