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

Commit 435d9cde authored by Lajos Molnar's avatar Lajos Molnar
Browse files

resolved conflicts for merge of 67d8bd66 to lmp-dev-plus-aosp

Change-Id: I2e9aab90ac53bb32630598f50cc26f6e46acf6d6
parents 556888b8 67d8bd66
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ namespace android {
class ComposerState;
class DisplayState;
struct DisplayInfo;
struct DisplayStatInfo;
class IDisplayEventConnection;
class IMemoryHeap;
class Rect;
@@ -122,6 +123,12 @@ public:
    virtual status_t getDisplayConfigs(const sp<IBinder>& display,
            Vector<DisplayInfo>* configs) = 0;

    /* returns display statistics for a given display
     * intended to be used by the media framework to properly schedule
     * video frames */
    virtual status_t getDisplayStats(const sp<IBinder>& display,
            DisplayStatInfo* stats) = 0;

    /* indicates which of the configurations returned by getDisplayInfo is
     * currently active */
    virtual int getActiveConfig(const sp<IBinder>& display) = 0;
@@ -177,6 +184,7 @@ public:
        CLEAR_ANIMATION_FRAME_STATS,
        GET_ANIMATION_FRAME_STATS,
        SET_POWER_MODE,
        GET_DISPLAY_STATS,
    };

    virtual status_t onTransact(uint32_t code, const Parcel& data,
+31 −0
Original line number Diff line number Diff line
/*
 * Copyright 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_UI_DISPLAY_STAT_INFO_H
#define ANDROID_UI_DISPLAY_STAT_INFO_H

#include <utils/Timers.h>

namespace android {

struct DisplayStatInfo {
    nsecs_t vsyncTime;
    nsecs_t vsyncPeriod;
};

}; // namespace android

#endif // ANDROID_COMPOSER_DISPLAY_STAT_INFO_H
+29 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#include <private/gui/LayerState.h>

#include <ui/DisplayInfo.h>
#include <ui/DisplayStatInfo.h>

#include <utils/Log.h>

@@ -237,6 +238,22 @@ public:
        return result;
    }

    virtual status_t getDisplayStats(const sp<IBinder>& display,
            DisplayStatInfo* stats)
    {
        Parcel data, reply;
        data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor());
        data.writeStrongBinder(display);
        remote()->transact(BnSurfaceComposer::GET_DISPLAY_STATS, data, &reply);
        status_t result = reply.readInt32();
        if (result == NO_ERROR) {
            memcpy(stats,
                    reply.readInplace(sizeof(DisplayStatInfo)),
                    sizeof(DisplayStatInfo));
        }
        return result;
    }

    virtual int getActiveConfig(const sp<IBinder>& display)
    {
        Parcel data, reply;
@@ -390,6 +407,18 @@ status_t BnSurfaceComposer::onTransact(
            }
            return NO_ERROR;
        }
        case GET_DISPLAY_STATS: {
            CHECK_INTERFACE(ISurfaceComposer, data, reply);
            DisplayStatInfo stats;
            sp<IBinder> display = data.readStrongBinder();
            status_t result = getDisplayStats(display, &stats);
            reply->writeInt32(result);
            if (result == NO_ERROR) {
                memcpy(reply->writeInplace(sizeof(DisplayStatInfo)),
                        &stats, sizeof(DisplayStatInfo));
            }
            return NO_ERROR;
        }
        case GET_ACTIVE_CONFIG: {
            CHECK_INTERFACE(ISurfaceComposer, data, reply);
            sp<IBinder> display = data.readStrongBinder();
+6 −0
Original line number Diff line number Diff line
@@ -408,6 +408,12 @@ void DispSync::setPeriod(nsecs_t period) {
    mThread->updateModel(mPeriod, mPhase);
}

nsecs_t DispSync::getPeriod() {
    // lock mutex as mPeriod changes multiple times in updateModelLocked
    Mutex::Autolock lock(mMutex);
    return mPeriod;
}

void DispSync::updateModelLocked() {
    if (mNumResyncSamples >= MIN_RESYNC_SAMPLES_FOR_UPDATE) {
        nsecs_t durationSum = 0;
+3 −0
Original line number Diff line number Diff line
@@ -101,6 +101,9 @@ public:
    // turned on.  It should NOT be used after that.
    void setPeriod(nsecs_t period);

    // The getPeriod method returns the current vsync period.
    nsecs_t getPeriod();

    // setRefreshSkipCount specifies an additional number of refresh
    // cycles to skip.  For example, on a 60Hz display, a skip count of 1
    // will result in events happening at 30Hz.  Default is zero.  The idea
Loading