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

Commit 280412fa authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 3601

* changes:
  checkpoint pragma support.  Includes more cleanup of script enviroment storage to keep the env settings in the base and only the per language state in ScriptC.
parents dbacca46 da423d84
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
// Fountain test script

#pragma version(1)
#pragma stateVertex(orthoWindow)
#pragma stateRaster(flat)
#pragma stateFragment(color)
#pragma stateStore(parent)


int main(void* con, int ft, int launchID) {
    int count, touch, x, y, rate, maxLife, lifeShift;
    int life;
+18 −5
Original line number Diff line number Diff line
@@ -57,21 +57,34 @@ void Context::initEGL()
     eglQuerySurface(mDisplay, mSurface, EGL_HEIGHT, &mHeight);
}

bool Context::runScript(Script *s)
{
    ObjectBaseRef<ProgramFragment> frag(mFragment);
    ObjectBaseRef<ProgramVertex> vtx(mVertex);
    ObjectBaseRef<ProgramFragmentStore> store(mFragmentStore);



    return true;

}


bool Context::runRootScript()
{
    rsAssert(mRootScript->mIsRoot);
    rsAssert(mRootScript->mEnviroment.mIsRoot);

    glColor4f(1,1,1,1);
    glEnable(GL_LIGHT0);
    glViewport(0, 0, 320, 480);
    float aspectH = 480.f / 320.f;
    glViewport(0, 0, mWidth, mHeight);

    if(mRootScript->mIsOrtho) {
    if(mRootScript->mEnviroment.mIsOrtho) {
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrthof(0, 320,  480, 0,  0, 1);
        glOrthof(0, mWidth,  mHeight, 0,  0, 1);
        glMatrixMode(GL_MODELVIEW);
    } else {
        float aspectH = ((float)mWidth) / mHeight;
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glFrustumf(-1, 1,  -aspectH, aspectH,  1, 100);
+5 −0
Original line number Diff line number Diff line
@@ -103,11 +103,16 @@ protected:
    ObjectBaseRef<ProgramVertex> mVertex;
    ObjectBaseRef<ProgramFragmentStore> mFragmentStore;

    ProgramFragment * mDefaultFragment;
    ProgramVertex * mDefaultVertex;
    ProgramFragmentStore * mDefaultFragmentStore;

private:
    Context();

    void initEGL();

    bool runScript(Script *s);
    bool runRootScript();

    static void * threadProc(void *);
+10 −3
Original line number Diff line number Diff line
@@ -47,6 +47,16 @@ public:
        mRef = NULL;
    }

    ObjectBaseRef(const ObjectBaseRef &ref) {
        mRef = ref.get();
        mRef->incRef();
    }

    ObjectBaseRef(T *ref) {
        mRef = ref;
        ref->incRef();
    }

    ~ObjectBaseRef() {
        clear();
    }
@@ -77,9 +87,6 @@ public:
protected:
    T * mRef;

private:
    ObjectBaseRef(const ObjectBaseRef &) {};

};


+32 −4
Original line number Diff line number Diff line
@@ -40,10 +40,38 @@ public:
        float mClearDepth;
        uint32_t mClearStencil;

        bool mUseStateVertex;
        bool mUseStateRaster;
        bool mUseStateFragment;
        bool mUseStateStore;
        enum StateVertex {
            VTX_ORTHO_WINDOW,
            VTX_ORTHO_NORMALIZED,
            VTX_PROJECTION,
            VTX_PARENT
        };
        StateVertex mStateVertex;

        enum StateRaster {
            RASTER_FLAT,
            RASTER_SMOOTH,
            RASTER_PARENT
        };
        StateRaster mStateRaster;

        enum StateFragment {
            FRAGMENT_COLOR,
            FRAGMENT_TEX_REPLACE,
            FRAGMENT_TEX_MODULATE,
            FRAGMENT_PARENT
        };
        StateFragment mStateFragment;

        enum StateFragmentStore {
            FRAGMENT_STORE_ALWAYS_REPLACE,
            FRAGMENT_STORE_ALWAYS_BLEND,
            FRAGMENT_STORE_DEPTH_LESS_REPLACE,
            FRAGMENT_STORE_DEPTH_LESS_BLEND,
            FRAGMENT_STORE_PARENT
        };
        StateFragmentStore mStateFragmentStore;

    };
    Enviroment_t mEnviroment;

Loading