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

Commit 6de55500 authored by Alex Sakhartchouk's avatar Alex Sakhartchouk
Browse files

Adding onscreen frame and script time for debugging.

Change-Id: I5780092d14d49dae556b9969b937c7768e705a64
parent 89a524ac
Loading
Loading
Loading
Loading
+44 −0
Original line number Diff line number Diff line
@@ -259,6 +259,44 @@ static bool getProp(const char *str)
    return 0 != strcmp(buf, "0");
}

void Context::displayDebugStats()
{
    char buffer[128];
    sprintf(buffer, "Frame %i ms, Script %i ms", mTimeMSLastFrame, mTimeMSLastScript);
    float oldR = mStateVertex.color[0];
    float oldG = mStateVertex.color[1];
    float oldB = mStateVertex.color[2];
    float oldA = mStateVertex.color[3];

    float shadowCol = 0.2f;
    mStateVertex.color[0] = shadowCol;
    mStateVertex.color[1] = shadowCol;
    mStateVertex.color[2] = shadowCol;
    mStateVertex.color[3] = 1.0f;
    if (!checkVersion2_0()) {
        glColor4f(shadowCol, shadowCol, shadowCol, 1.0f);
    }
    mStateFont.renderText(buffer, 5, getHeight() - 5);

    float textCol = 0.9f;
    mStateVertex.color[0] = textCol;
    mStateVertex.color[1] = textCol;
    mStateVertex.color[2] = textCol;
    mStateVertex.color[3] = 1.0f;
    if (!checkVersion2_0()) {
        glColor4f(textCol, textCol, textCol, 1.0f);
    }
    mStateFont.renderText(buffer, 4, getHeight() - 6);

    mStateVertex.color[0] = oldR;
    mStateVertex.color[1] = oldG;
    mStateVertex.color[2] = oldB;
    mStateVertex.color[3] = oldA;
    if (!checkVersion2_0()) {
        glColor4f(oldR, oldG, oldB, oldA);
    }
}

void * Context::threadProc(void *vrsc)
{
     Context *rsc = static_cast<Context *>(vrsc);
@@ -271,6 +309,7 @@ void * Context::threadProc(void *vrsc)
     rsc->props.mLogScripts = getProp("debug.rs.script");
     rsc->props.mLogObjects = getProp("debug.rs.object");
     rsc->props.mLogShaders = getProp("debug.rs.shader");
     rsc->props.mLogVisual = getProp("debug.rs.visual");

     ScriptTLSStruct *tlsStruct = new ScriptTLSStruct;
     if (!tlsStruct) {
@@ -308,6 +347,11 @@ void * Context::threadProc(void *vrsc)
         uint32_t targetTime = 0;
         if (mDraw && rsc->mIsGraphicsContext) {
             targetTime = rsc->runRootScript();

             if(rsc->props.mLogVisual) {
                 rsc->displayDebugStats();
             }

             mDraw = targetTime && !rsc->mPaused;
             rsc->timerSet(RS_TIMER_CLEAR_SWAP);
             eglSwapBuffers(rsc->mEGL.mDisplay, rsc->mEGL.mSurface);
+3 −0
Original line number Diff line number Diff line
@@ -162,6 +162,7 @@ public:
        bool mLogScripts;
        bool mLogObjects;
        bool mLogShaders;
        bool mLogVisual;
    } props;

    void dumpDebug() const;
@@ -257,6 +258,8 @@ protected:
    void objDestroyOOBRun();
    void objDestroyOOBDestroy();

    void displayDebugStats();

private:
    Context();