From 08d2d0b19723e1a745e26a651eceb73d843fdd65 Mon Sep 17 00:00:00 2001 From: luca020400 Date: Sun, 24 Apr 2016 19:59:01 +0200 Subject: bootanimation: Switch to readahead Change-Id: I287132e311e96c0437df67c76b86bb47b8f8380e --- cmds/bootanimation/BootAnimation.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'cmds') diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp index 4e7c9c4..9b8b135 100644 --- a/cmds/bootanimation/BootAnimation.cpp +++ b/cmds/bootanimation/BootAnimation.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include @@ -438,19 +439,14 @@ status_t BootAnimation::readyToRun() { return NO_ERROR; if (fd != NULL) { - // We could use readahead.. - // ... if bionic supported it :( - //readahead(fd, 0, INT_MAX); - void *crappyBuffer = malloc(2*1024*1024); - if (crappyBuffer != NULL) { - // Read all the zip - while (!feof(fd)) - fread(crappyBuffer, 1024, 2*1024, fd); - - free(crappyBuffer); - } else { - ALOGW("Unable to allocate memory to preload the animation"); - } + // Since including fcntl.h doesn't give us the wrapper, use the syscall. + // 32 bits takes LO/HI offset (we don't care about endianness of 0). +#if defined(__aarch64__) || defined(__x86_64__) + if (syscall(__NR_readahead, fd, 0, INT_MAX)) +#else + if (syscall(__NR_readahead, fd, 0, 0, INT_MAX)) +#endif + ALOGW("Unable to cache the animation"); fclose(fd); } #endif -- cgit v1.1