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

Commit d5680f9b authored by Jason Sams's avatar Jason Sams
Browse files

Fix bug with bad conversion of java strings to C strings for object names. ...

Fix bug with bad conversion of java strings to C strings for object names.  Update test app to test object defines.
parent 196ac850
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ int main(void* con, int ft, int launchID) {

    //contextBindProgramFragment(con, loadI32(con, 0, 7));
    drawRect(con, 0, 256, 0, 512);
    contextBindProgramFragment(con, loadI32(con, 0, 6));
    contextBindProgramFragment(con, NAMED_PgmFragParts);

    if (touch) {
        newPart = loadI32(con, 2, 0);
@@ -106,6 +106,6 @@ int main(void* con, int ft, int launchID) {
        }
    }

    drawTriangleArray(con, loadI32(con, 0, 5), drawCount);
    drawTriangleArray(con, NAMED_PartBuffer, drawCount);
    return 1;
}
+1 −3
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ public class FountainView extends RSSurfaceView {

        mIntAlloc = mRS.allocationCreatePredefSized(RenderScript.ElementPredefined.USER_I32, 10);
        mPartAlloc = mRS.allocationCreatePredefSized(RenderScript.ElementPredefined.USER_I32, partCount * 3 * 3);
        mPartAlloc.setName("PartBuffer");
        mVertAlloc = mRS.allocationCreatePredefSized(RenderScript.ElementPredefined.USER_I32, partCount * 5 + 1);

        {
@@ -97,7 +98,6 @@ public class FountainView extends RSSurfaceView {
        mRS.programFragmentBegin(null, null);
        mPF = mRS.programFragmentCreate();
        mPF.setName("PgmFragParts");
        //mRS.contextBindProgramFragment(mPF);

        mRS.programFragmentBegin(null, null);
        mRS.programFragmentSetTexEnable(0, true);
@@ -113,8 +113,6 @@ public class FountainView extends RSSurfaceView {
        mParams[3] = 0;
        mParams[4] = 0;
        mParams[5] = mPartAlloc.getID();
        mParams[6] = mPF.getID();
        mParams[7] = mPF2.getID();
        mIntAlloc.data(mParams);

        int t2[] = new int[partCount * 4*3];
+1 −1
Original line number Diff line number Diff line
@@ -70,7 +70,7 @@ nAssignName(JNIEnv *_env, jobject _this, jint obj, jbyteArray str)

    jint len = _env->GetArrayLength(str);
    jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0);
    rsAssignName((void *)obj, (const char *)cptr);
    rsAssignName((void *)obj, (const char *)cptr, len);
    _env->ReleasePrimitiveArrayCritical(str, cptr, JNI_ABORT);
}

+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ ContextBindProgramVertex {
AssignName {
	param void *obj
	param const char *name
	param size_t len
	}

ElementBegin {
+18 −5
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
#include "rsDevice.h"
#include "rsContext.h"
#include "rsThreadIO.h"

#include "utils/String8.h"

using namespace android;
using namespace android::renderscript;
@@ -246,10 +246,10 @@ void Context::setVertex(ProgramVertex *pv)
    pv->setupGL();
}

void Context::assignName(ObjectBase *obj, const char *name)
void Context::assignName(ObjectBase *obj, const char *name, uint32_t len)
{
    rsAssert(!obj->getName());
    obj->setName(name);
    obj->setName(name, len);
    mNames.add(obj);
}

@@ -273,6 +273,19 @@ ObjectBase * Context::lookupName(const char *name) const
    return NULL;
}

void Context::appendNameDefines(String8 *str) const
{
    char buf[256];
    for (size_t ct=0; ct < mNames.size(); ct++) {
        str->append("#define NAMED_");
        str->append(mNames[ct]->getName());
        str->append(" ");
        sprintf(buf, "%i\n", (int)mNames[ct]);
        str->append(buf);
    }
}


///////////////////////////////////////////////////////////////////////////////////////////
//

@@ -316,10 +329,10 @@ void rsi_ContextBindProgramVertex(Context *rsc, RsProgramVertex vpv)
    rsc->setVertex(pv);
}

void rsi_AssignName(Context *rsc, void * obj, const char *name)
void rsi_AssignName(Context *rsc, void * obj, const char *name, uint32_t len)
{
    ObjectBase *ob = static_cast<ObjectBase *>(obj);
    rsc->assignName(ob, name);
    rsc->assignName(ob, name, len);
}


Loading