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

Commit 6295c422 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update graphics stats to use long version codes."

parents cb02b7f0 73453e49
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ message GraphicsStatsProto {
    optional string package_name = 1;

    // The version code of the app
    optional int32 version_code = 2;
    optional int64 version_code = 2;

    // The start & end timestamps in UTC as
    // milliseconds since January 1, 1970
+6 −6
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ static_assert(sizeof(sCurrentFileVersion) == sHeaderSize, "Header size is wrong"
constexpr int sHistogramSize = ProfileData::HistogramSize();

static bool mergeProfileDataIntoProto(service::GraphicsStatsProto* proto,
                                      const std::string& package, int versionCode,
                                      const std::string& package, int64_t versionCode,
                                      int64_t startTime, int64_t endTime, const ProfileData* data);
static void dumpAsTextToFd(service::GraphicsStatsProto* proto, int outFd);

@@ -154,7 +154,7 @@ bool GraphicsStatsService::parseFromFile(const std::string& path,
}

bool mergeProfileDataIntoProto(service::GraphicsStatsProto* proto, const std::string& package,
                               int versionCode, int64_t startTime, int64_t endTime,
                               int64_t versionCode, int64_t startTime, int64_t endTime,
                               const ProfileData* data) {
    if (proto->stats_start() == 0 || proto->stats_start() > startTime) {
        proto->set_stats_start(startTime);
@@ -230,7 +230,7 @@ void dumpAsTextToFd(service::GraphicsStatsProto* proto, int fd) {
        return;
    }
    dprintf(fd, "\nPackage: %s", proto->package_name().c_str());
    dprintf(fd, "\nVersion: %d", proto->version_code());
    dprintf(fd, "\nVersion: %lld", proto->version_code());
    dprintf(fd, "\nStats since: %lldns", proto->stats_start());
    dprintf(fd, "\nStats end: %lldns", proto->stats_end());
    auto summary = proto->summary();
@@ -254,7 +254,7 @@ void dumpAsTextToFd(service::GraphicsStatsProto* proto, int fd) {
}

void GraphicsStatsService::saveBuffer(const std::string& path, const std::string& package,
                                      int versionCode, int64_t startTime, int64_t endTime,
                                      int64_t versionCode, int64_t startTime, int64_t endTime,
                                      const ProfileData* data) {
    service::GraphicsStatsProto statsProto;
    if (!parseFromFile(path, &statsProto)) {
@@ -320,8 +320,8 @@ GraphicsStatsService::Dump* GraphicsStatsService::createDump(int outFd, DumpType
}

void GraphicsStatsService::addToDump(Dump* dump, const std::string& path,
                                     const std::string& package, int versionCode, int64_t startTime,
                                     int64_t endTime, const ProfileData* data) {
                                     const std::string& package, int64_t versionCode,
                                     int64_t startTime, int64_t endTime, const ProfileData* data) {
    service::GraphicsStatsProto statsProto;
    if (!path.empty() && !parseFromFile(path, &statsProto)) {
        statsProto.Clear();
+2 −2
Original line number Diff line number Diff line
@@ -44,12 +44,12 @@ public:
    };

    ANDROID_API static void saveBuffer(const std::string& path, const std::string& package,
                                       int versionCode, int64_t startTime, int64_t endTime,
                                       int64_t versionCode, int64_t startTime, int64_t endTime,
                                       const ProfileData* data);

    ANDROID_API static Dump* createDump(int outFd, DumpType type);
    ANDROID_API static void addToDump(Dump* dump, const std::string& path,
                                      const std::string& package, int versionCode,
                                      const std::string& package, int64_t versionCode,
                                      int64_t startTime, int64_t endTime, const ProfileData* data);
    ANDROID_API static void addToDump(Dump* dump, const std::string& path);
    ANDROID_API static void finishDump(Dump* dump);
+10 −8
Original line number Diff line number Diff line
@@ -175,7 +175,8 @@ public class GraphicsStatsService extends IGraphicsStats.Stub {
                    0,
                    UserHandle.getUserId(uid));
            synchronized (mLock) {
                pfd = requestBufferForProcessLocked(token, uid, pid, packageName, info.versionCode);
                pfd = requestBufferForProcessLocked(token, uid, pid, packageName,
                        info.getLongVersionCode());
            }
        } catch (PackageManager.NameNotFoundException ex) {
            throw new RemoteException("Unable to find package: '" + packageName + "'");
@@ -197,7 +198,7 @@ public class GraphicsStatsService extends IGraphicsStats.Stub {
    }

    private ParcelFileDescriptor requestBufferForProcessLocked(IGraphicsStatsCallback token,
            int uid, int pid, String packageName, int versionCode) throws RemoteException {
            int uid, int pid, String packageName, long versionCode) throws RemoteException {
        ActiveBuffer buffer = fetchActiveBuffersLocked(token, uid, pid, packageName, versionCode);
        scheduleRotateLocked();
        return getPfd(buffer.mProcessBuffer);
@@ -292,7 +293,7 @@ public class GraphicsStatsService extends IGraphicsStats.Stub {
    }

    private ActiveBuffer fetchActiveBuffersLocked(IGraphicsStatsCallback token, int uid, int pid,
            String packageName, int versionCode) throws RemoteException {
            String packageName, long versionCode) throws RemoteException {
        int size = mActive.size();
        long today = normalizeDate(System.currentTimeMillis()).getTimeInMillis();
        for (int i = 0; i < size; i++) {
@@ -381,19 +382,19 @@ public class GraphicsStatsService extends IGraphicsStats.Stub {
    private static native int nGetAshmemSize();
    private static native long nCreateDump(int outFd, boolean isProto);
    private static native void nAddToDump(long dump, String path, String packageName,
            int versionCode, long startTime, long endTime, byte[] data);
            long versionCode, long startTime, long endTime, byte[] data);
    private static native void nAddToDump(long dump, String path);
    private static native void nFinishDump(long dump);
    private static native void nSaveBuffer(String path, String packageName, int versionCode,
    private static native void nSaveBuffer(String path, String packageName, long versionCode,
            long startTime, long endTime, byte[] data);

    private final class BufferInfo {
        final String packageName;
        final int versionCode;
        final long versionCode;
        long startTime;
        long endTime;

        BufferInfo(String packageName, int versionCode, long startTime) {
        BufferInfo(String packageName, long versionCode, long startTime) {
            this.packageName = packageName;
            this.versionCode = versionCode;
            this.startTime = startTime;
@@ -408,7 +409,8 @@ public class GraphicsStatsService extends IGraphicsStats.Stub {
        final IBinder mToken;
        MemoryFile mProcessBuffer;

        ActiveBuffer(IGraphicsStatsCallback token, int uid, int pid, String packageName, int versionCode)
        ActiveBuffer(IGraphicsStatsCallback token, int uid, int pid, String packageName,
                long versionCode)
                throws RemoteException, IOException {
            mInfo = new BufferInfo(packageName, versionCode, System.currentTimeMillis());
            mUid = uid;
+4 −4
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ static jlong createDump(JNIEnv*, jobject, jint fd, jboolean isProto) {
}

static void addToDump(JNIEnv* env, jobject, jlong dumpPtr, jstring jpath, jstring jpackage,
        jint versionCode, jlong startTime, jlong endTime, jbyteArray jdata) {
        jlong versionCode, jlong startTime, jlong endTime, jbyteArray jdata) {
    std::string path;
    const ProfileData* data = nullptr;
    LOG_ALWAYS_FATAL_IF(jdata == nullptr && jpath == nullptr, "Path and data can't both be null");
@@ -78,7 +78,7 @@ static void finishDump(JNIEnv*, jobject, jlong dumpPtr) {
}

static void saveBuffer(JNIEnv* env, jobject clazz, jstring jpath, jstring jpackage,
        jint versionCode, jlong startTime, jlong endTime, jbyteArray jdata) {
        jlong versionCode, jlong startTime, jlong endTime, jbyteArray jdata) {
    ScopedByteArrayRO buffer(env, jdata);
    LOG_ALWAYS_FATAL_IF(buffer.size() != sizeof(ProfileData),
            "Buffer size %zu doesn't match expected %zu!", buffer.size(), sizeof(ProfileData));
@@ -96,10 +96,10 @@ static void saveBuffer(JNIEnv* env, jobject clazz, jstring jpath, jstring jpacka
static const JNINativeMethod sMethods[] = {
    { "nGetAshmemSize", "()I", (void*) getAshmemSize },
    { "nCreateDump", "(IZ)J", (void*) createDump },
    { "nAddToDump", "(JLjava/lang/String;Ljava/lang/String;IJJ[B)V", (void*) addToDump },
    { "nAddToDump", "(JLjava/lang/String;Ljava/lang/String;JJJ[B)V", (void*) addToDump },
    { "nAddToDump", "(JLjava/lang/String;)V", (void*) addFileToDump },
    { "nFinishDump", "(J)V", (void*) finishDump },
    { "nSaveBuffer", "(Ljava/lang/String;Ljava/lang/String;IJJ[B)V", (void*) saveBuffer },
    { "nSaveBuffer", "(Ljava/lang/String;Ljava/lang/String;JJJ[B)V", (void*) saveBuffer },
};

int register_android_server_GraphicsStatsService(JNIEnv* env)