Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa436298 authored by Marco Nelissen's avatar Marco Nelissen Committed by Gerrit Code Review
Browse files

Merge "Broadcast an intent to mediascanner after executing screencap"

parents b7442bbc cfed2326
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>

#include <linux/fb.h>
#include <sys/ioctl.h>
@@ -86,6 +88,21 @@ static status_t vinfoToPixelFormat(const fb_var_screeninfo& vinfo,
    return NO_ERROR;
}

static status_t notifyMediaScanner(const char* fileName) {
    String8 cmd("am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file://");
    String8 fileUrl("\"");
    fileUrl.append(fileName);
    fileUrl.append("\"");
    cmd.append(fileName);
    cmd.append(" > /dev/null");
    int result = system(cmd.string());
    if (result < 0) {
        fprintf(stderr, "Unable to broadcast intent for media scanner.\n");
        return UNKNOWN_ERROR;
    }
    return NO_ERROR;
}

int main(int argc, char** argv)
{
    ProcessState::self()->startThreadPool();
@@ -112,10 +129,11 @@ int main(int argc, char** argv)
    argv += optind;

    int fd = -1;
    const char* fn;
    if (argc == 0) {
        fd = dup(STDOUT_FILENO);
    } else if (argc == 1) {
        const char* fn = argv[0];
        fn = argv[0];
        fd = open(fn, O_WRONLY | O_CREAT | O_TRUNC, 0664);
        if (fd == -1) {
            fprintf(stderr, "Error opening file: %s (%s)\n", fn, strerror(errno));
@@ -183,6 +201,7 @@ int main(int argc, char** argv)
            SkData* streamData = stream.copyToData();
            write(fd, streamData->data(), streamData->size());
            streamData->unref();
            notifyMediaScanner(fn);
        } else {
            write(fd, &w, 4);
            write(fd, &h, 4);