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

Commit 2aa0d3ab authored by Josh Gao's avatar Josh Gao
Browse files

minadbd: switch adb_thread_create to std::thread.

Test: treehugger
Change-Id: I7edcb13eb1fc6d4f36f5a764a1b647fbf9cd063e
parent 1b28a27c
Loading
Loading
Loading
Loading
+3 −27
Original line number Diff line number Diff line
@@ -21,25 +21,13 @@
#include <string.h>
#include <unistd.h>

#include <thread>

#include "adb.h"
#include "fdevent.h"
#include "fuse_adb_provider.h"
#include "sysdeps.h"

typedef struct stinfo stinfo;

struct stinfo {
    void (*func)(int fd, void *cookie);
    int fd;
    void *cookie;
};

void service_bootstrap_func(void* x) {
    stinfo* sti = reinterpret_cast<stinfo*>(x);
    sti->func(sti->fd, sti->cookie);
    free(sti);
}

static void sideload_host_service(int sfd, void* data) {
    char* args = reinterpret_cast<char*>(data);
    int file_size;
@@ -66,19 +54,7 @@ static int create_service_thread(void (*func)(int, void *), void *cookie) {
        return -1;
    }

    stinfo* sti = static_cast<stinfo*>(malloc(sizeof(stinfo)));
    if(sti == 0) fatal("cannot allocate stinfo");
    sti->func = func;
    sti->cookie = cookie;
    sti->fd = s[1];

    if (!adb_thread_create(service_bootstrap_func, sti)) {
        free(sti);
        adb_close(s[0]);
        adb_close(s[1]);
        printf("cannot create service thread\n");
        return -1;
    }
    std::thread([s, func, cookie]() { func(s[1], cookie); }).detach();

    VLOG(SERVICES) << "service thread started, " << s[0] << ":" << s[1];
    return s[0];