Loading graphics/java/android/renderscript/RenderScript.java +7 −4 Original line number Original line Diff line number Diff line Loading @@ -68,9 +68,9 @@ public class RenderScript { native int nDeviceCreate(); native int nDeviceCreate(); native void nDeviceDestroy(int dev); native void nDeviceDestroy(int dev); native void nDeviceSetConfig(int dev, int param, int value); native void nDeviceSetConfig(int dev, int param, int value); native void nContextGetUserMessage(int con, int[] data); native int nContextGetUserMessage(int con, int[] data); native String nContextGetErrorMessage(int con); native String nContextGetErrorMessage(int con); native int nContextPeekMessage(int con, int[] subID, boolean wait); native int nContextPeekMessage(int con, int[] subID); native void nContextInitToClient(int con); native void nContextInitToClient(int con); native void nContextDeinitToClient(int con); native void nContextDeinitToClient(int con); Loading Loading @@ -736,7 +736,7 @@ public class RenderScript { mRS.nContextInitToClient(mRS.mContext); mRS.nContextInitToClient(mRS.mContext); while(mRun) { while(mRun) { rbuf[0] = 0; rbuf[0] = 0; int msg = mRS.nContextPeekMessage(mRS.mContext, mAuxData, true); int msg = mRS.nContextPeekMessage(mRS.mContext, mAuxData); int size = mAuxData[1]; int size = mAuxData[1]; int subID = mAuxData[0]; int subID = mAuxData[0]; Loading @@ -744,7 +744,10 @@ public class RenderScript { if ((size>>2) >= rbuf.length) { if ((size>>2) >= rbuf.length) { rbuf = new int[(size + 3) >> 2]; rbuf = new int[(size + 3) >> 2]; } } mRS.nContextGetUserMessage(mRS.mContext, rbuf); if (mRS.nContextGetUserMessage(mRS.mContext, rbuf) != RS_MESSAGE_TO_CLIENT_USER) { throw new RSDriverException("Error processing message from Renderscript."); } if(mRS.mMessageCallback != null) { if(mRS.mMessageCallback != null) { mRS.mMessageCallback.mData = rbuf; mRS.mMessageCallback.mData = rbuf; Loading graphics/jni/android_renderscript_RenderScript.cpp +8 −9 Original line number Original line Diff line number Diff line Loading @@ -240,15 +240,14 @@ nContextGetErrorMessage(JNIEnv *_env, jobject _this, RsContext con) int id = rsContextGetMessage(con, int id = rsContextGetMessage(con, buf, sizeof(buf), buf, sizeof(buf), &receiveLen, sizeof(receiveLen), &receiveLen, sizeof(receiveLen), &subID, sizeof(subID), &subID, sizeof(subID)); true); if (!id && receiveLen) { if (!id && receiveLen) { LOGV("message receive buffer too small. %i", receiveLen); LOGV("message receive buffer too small. %i", receiveLen); } } return _env->NewStringUTF(buf); return _env->NewStringUTF(buf); } } static void static jint nContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data) nContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data) { { jint len = _env->GetArrayLength(data); jint len = _env->GetArrayLength(data); Loading @@ -259,23 +258,23 @@ nContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray dat int id = rsContextGetMessage(con, int id = rsContextGetMessage(con, ptr, len * 4, ptr, len * 4, &receiveLen, sizeof(receiveLen), &receiveLen, sizeof(receiveLen), &subID, sizeof(subID), &subID, sizeof(subID)); true); if (!id && receiveLen) { if (!id && receiveLen) { LOGV("message receive buffer too small. %i", receiveLen); LOGV("message receive buffer too small. %i", receiveLen); } } _env->ReleaseIntArrayElements(data, ptr, 0); _env->ReleaseIntArrayElements(data, ptr, 0); return id; } } static jint static jint nContextPeekMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray auxData, jboolean wait) nContextPeekMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray auxData) { { LOG_API("nContextPeekMessage, con(%p)", con); LOG_API("nContextPeekMessage, con(%p)", con); jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); size_t receiveLen; size_t receiveLen; uint32_t subID; uint32_t subID; int id = rsContextPeekMessage(con, &receiveLen, sizeof(receiveLen), int id = rsContextPeekMessage(con, &receiveLen, sizeof(receiveLen), &subID, sizeof(subID), wait); &subID, sizeof(subID)); auxDataPtr[0] = (jint)subID; auxDataPtr[0] = (jint)subID; auxDataPtr[1] = (jint)receiveLen; auxDataPtr[1] = (jint)receiveLen; _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); Loading Loading @@ -1160,9 +1159,9 @@ static JNINativeMethod methods[] = { {"nDeviceCreate", "()I", (void*)nDeviceCreate }, {"nDeviceCreate", "()I", (void*)nDeviceCreate }, {"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, {"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, {"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, {"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, {"nContextGetUserMessage", "(I[I)V", (void*)nContextGetUserMessage }, {"nContextGetUserMessage", "(I[I)I", (void*)nContextGetUserMessage }, {"nContextGetErrorMessage", "(I)Ljava/lang/String;", (void*)nContextGetErrorMessage }, {"nContextGetErrorMessage", "(I)Ljava/lang/String;", (void*)nContextGetErrorMessage }, {"nContextPeekMessage", "(I[IZ)I", (void*)nContextPeekMessage }, {"nContextPeekMessage", "(I[I)I", (void*)nContextPeekMessage }, {"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, {"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, {"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, {"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, Loading libs/rs/rs.spec +3 −5 Original line number Original line Diff line number Diff line Loading @@ -45,16 +45,14 @@ ContextGetMessage { direct direct param void *data param void *data param size_t *receiveLen param size_t *receiveLen param uint32_t *subID param uint32_t *usrID param bool wait ret RsMessageToClientType ret RsMessageToClientType } } ContextPeekMessage { ContextPeekMessage { direct direct param size_t *receiveLen param size_t *receiveLen param uint32_t *subID param uint32_t *usrID param bool wait ret RsMessageToClientType ret RsMessageToClientType } } Loading Loading @@ -106,7 +104,7 @@ AllocationCubeCreateFromBitmap { ContextFinish { ContextFinish { handcodeApi sync } } ContextBindRootScript { ContextBindRootScript { Loading libs/rs/rsContext.cpp +14 −63 Original line number Original line Diff line number Diff line Loading @@ -344,6 +344,8 @@ Context * Context::createContext(Device *dev, const RsSurfaceConfig *sc) { bool Context::initContext(Device *dev, const RsSurfaceConfig *sc) { bool Context::initContext(Device *dev, const RsSurfaceConfig *sc) { pthread_mutex_lock(&gInitMutex); pthread_mutex_lock(&gInitMutex); mIO.init(); dev->addContext(this); dev->addContext(this); mDev = dev; mDev = dev; if (sc) { if (sc) { Loading Loading @@ -393,7 +395,7 @@ bool Context::initContext(Device *dev, const RsSurfaceConfig *sc) { Context::~Context() { Context::~Context() { LOGV("Context::~Context"); LOGV("Context::~Context"); mIO.mToCore.flush(); mIO.coreFlush(); rsAssert(mExit); rsAssert(mExit); mExit = true; mExit = true; mPaused = false; mPaused = false; Loading Loading @@ -505,69 +507,18 @@ void Context::removeName(ObjectBase *obj) { } } } } RsMessageToClientType Context::peekMessageToClient(size_t *receiveLen, uint32_t *subID, bool wait) { RsMessageToClientType Context::peekMessageToClient(size_t *receiveLen, uint32_t *subID) { *receiveLen = 0; return (RsMessageToClientType)mIO.getClientHeader(receiveLen, subID); if (!wait && mIO.mToClient.isEmpty()) { return RS_MESSAGE_TO_CLIENT_NONE; } } uint32_t bytesData = 0; RsMessageToClientType Context::getMessageToClient(void *data, size_t *receiveLen, uint32_t *subID, size_t bufferLen) { uint32_t commandID = 0; return (RsMessageToClientType)mIO.getClientPayload(data, receiveLen, subID, bufferLen); const uint32_t *d = (const uint32_t *)mIO.mToClient.get(&commandID, &bytesData); *receiveLen = bytesData - sizeof(uint32_t); if (bytesData) { *subID = d[0]; } return (RsMessageToClientType)commandID; } RsMessageToClientType Context::getMessageToClient(void *data, size_t *receiveLen, uint32_t *subID, size_t bufferLen, bool wait) { //LOGE("getMessageToClient %i %i", bufferLen, wait); *receiveLen = 0; if (!wait && mIO.mToClient.isEmpty()) { return RS_MESSAGE_TO_CLIENT_NONE; } //LOGE("getMessageToClient 2 con=%p", this); uint32_t bytesData = 0; uint32_t commandID = 0; const uint32_t *d = (const uint32_t *)mIO.mToClient.get(&commandID, &bytesData); //LOGE("getMessageToClient 3 %i %i", commandID, bytesData); *receiveLen = bytesData - sizeof(uint32_t); *subID = d[0]; //LOGE("getMessageToClient %i %i", commandID, *subID); if (bufferLen >= (*receiveLen)) { memcpy(data, d+1, *receiveLen); mIO.mToClient.next(); return (RsMessageToClientType)commandID; } return RS_MESSAGE_TO_CLIENT_RESIZE; } } bool Context::sendMessageToClient(const void *data, RsMessageToClientType cmdID, bool Context::sendMessageToClient(const void *data, RsMessageToClientType cmdID, uint32_t subID, size_t len, bool waitForSpace) const { uint32_t subID, size_t len, bool waitForSpace) const { //LOGE("sendMessageToClient %i %i %i %i", cmdID, subID, len, waitForSpace); if (cmdID == 0) { return mIO.sendToClient(cmdID, subID, data, len, waitForSpace); LOGE("Attempting to send invalid command 0 to client."); return false; } if (!waitForSpace) { if (!mIO.mToClient.makeSpaceNonBlocking(len + 12)) { // Not enough room, and not waiting. return false; } } //LOGE("sendMessageToClient 2"); uint32_t *p = (uint32_t *)mIO.mToClient.reserve(len + sizeof(subID)); p[0] = subID; if (len > 0) { memcpy(p+1, data, len); } mIO.mToClient.commit(cmdID, len + sizeof(subID)); //LOGE("sendMessageToClient 3"); return true; } } void Context::initToClient() { void Context::initToClient() { Loading @@ -577,7 +528,7 @@ void Context::initToClient() { } } void Context::deinitToClient() { void Context::deinitToClient() { mIO.mToClient.shutdown(); mIO.clientShutdown(); } } void Context::setError(RsError e, const char *msg) const { void Context::setError(RsError e, const char *msg) const { Loading Loading @@ -706,16 +657,16 @@ RsContext rsi_ContextCreateGL(RsDevice vdev, uint32_t version, RsMessageToClientType rsi_ContextPeekMessage(Context *rsc, RsMessageToClientType rsi_ContextPeekMessage(Context *rsc, size_t * receiveLen, size_t receiveLen_length, size_t * receiveLen, size_t receiveLen_length, uint32_t * subID, size_t subID_length, bool wait) { uint32_t * subID, size_t subID_length) { return rsc->peekMessageToClient(receiveLen, subID, wait); return rsc->peekMessageToClient(receiveLen, subID); } } RsMessageToClientType rsi_ContextGetMessage(Context *rsc, void * data, size_t data_length, RsMessageToClientType rsi_ContextGetMessage(Context *rsc, void * data, size_t data_length, size_t * receiveLen, size_t receiveLen_length, size_t * receiveLen, size_t receiveLen_length, uint32_t * subID, size_t subID_length, bool wait) { uint32_t * subID, size_t subID_length) { rsAssert(subID_length == sizeof(uint32_t)); rsAssert(subID_length == sizeof(uint32_t)); rsAssert(receiveLen_length == sizeof(size_t)); rsAssert(receiveLen_length == sizeof(size_t)); return rsc->getMessageToClient(data, receiveLen, subID, data_length, wait); return rsc->getMessageToClient(data, receiveLen, subID, data_length); } } void rsi_ContextInitToClient(Context *rsc) { void rsi_ContextInitToClient(Context *rsc) { Loading libs/rs/rsContext.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -143,8 +143,8 @@ public: void assignName(ObjectBase *obj, const char *name, uint32_t len); void assignName(ObjectBase *obj, const char *name, uint32_t len); void removeName(ObjectBase *obj); void removeName(ObjectBase *obj); RsMessageToClientType peekMessageToClient(size_t *receiveLen, uint32_t *subID, bool wait); RsMessageToClientType peekMessageToClient(size_t *receiveLen, uint32_t *subID); RsMessageToClientType getMessageToClient(void *data, size_t *receiveLen, uint32_t *subID, size_t bufferLen, bool wait); RsMessageToClientType getMessageToClient(void *data, size_t *receiveLen, uint32_t *subID, size_t bufferLen); bool sendMessageToClient(const void *data, RsMessageToClientType cmdID, uint32_t subID, size_t len, bool waitForSpace) const; bool sendMessageToClient(const void *data, RsMessageToClientType cmdID, uint32_t subID, size_t len, bool waitForSpace) const; uint32_t runScript(Script *s); uint32_t runScript(Script *s); Loading Loading
graphics/java/android/renderscript/RenderScript.java +7 −4 Original line number Original line Diff line number Diff line Loading @@ -68,9 +68,9 @@ public class RenderScript { native int nDeviceCreate(); native int nDeviceCreate(); native void nDeviceDestroy(int dev); native void nDeviceDestroy(int dev); native void nDeviceSetConfig(int dev, int param, int value); native void nDeviceSetConfig(int dev, int param, int value); native void nContextGetUserMessage(int con, int[] data); native int nContextGetUserMessage(int con, int[] data); native String nContextGetErrorMessage(int con); native String nContextGetErrorMessage(int con); native int nContextPeekMessage(int con, int[] subID, boolean wait); native int nContextPeekMessage(int con, int[] subID); native void nContextInitToClient(int con); native void nContextInitToClient(int con); native void nContextDeinitToClient(int con); native void nContextDeinitToClient(int con); Loading Loading @@ -736,7 +736,7 @@ public class RenderScript { mRS.nContextInitToClient(mRS.mContext); mRS.nContextInitToClient(mRS.mContext); while(mRun) { while(mRun) { rbuf[0] = 0; rbuf[0] = 0; int msg = mRS.nContextPeekMessage(mRS.mContext, mAuxData, true); int msg = mRS.nContextPeekMessage(mRS.mContext, mAuxData); int size = mAuxData[1]; int size = mAuxData[1]; int subID = mAuxData[0]; int subID = mAuxData[0]; Loading @@ -744,7 +744,10 @@ public class RenderScript { if ((size>>2) >= rbuf.length) { if ((size>>2) >= rbuf.length) { rbuf = new int[(size + 3) >> 2]; rbuf = new int[(size + 3) >> 2]; } } mRS.nContextGetUserMessage(mRS.mContext, rbuf); if (mRS.nContextGetUserMessage(mRS.mContext, rbuf) != RS_MESSAGE_TO_CLIENT_USER) { throw new RSDriverException("Error processing message from Renderscript."); } if(mRS.mMessageCallback != null) { if(mRS.mMessageCallback != null) { mRS.mMessageCallback.mData = rbuf; mRS.mMessageCallback.mData = rbuf; Loading
graphics/jni/android_renderscript_RenderScript.cpp +8 −9 Original line number Original line Diff line number Diff line Loading @@ -240,15 +240,14 @@ nContextGetErrorMessage(JNIEnv *_env, jobject _this, RsContext con) int id = rsContextGetMessage(con, int id = rsContextGetMessage(con, buf, sizeof(buf), buf, sizeof(buf), &receiveLen, sizeof(receiveLen), &receiveLen, sizeof(receiveLen), &subID, sizeof(subID), &subID, sizeof(subID)); true); if (!id && receiveLen) { if (!id && receiveLen) { LOGV("message receive buffer too small. %i", receiveLen); LOGV("message receive buffer too small. %i", receiveLen); } } return _env->NewStringUTF(buf); return _env->NewStringUTF(buf); } } static void static jint nContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data) nContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray data) { { jint len = _env->GetArrayLength(data); jint len = _env->GetArrayLength(data); Loading @@ -259,23 +258,23 @@ nContextGetUserMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray dat int id = rsContextGetMessage(con, int id = rsContextGetMessage(con, ptr, len * 4, ptr, len * 4, &receiveLen, sizeof(receiveLen), &receiveLen, sizeof(receiveLen), &subID, sizeof(subID), &subID, sizeof(subID)); true); if (!id && receiveLen) { if (!id && receiveLen) { LOGV("message receive buffer too small. %i", receiveLen); LOGV("message receive buffer too small. %i", receiveLen); } } _env->ReleaseIntArrayElements(data, ptr, 0); _env->ReleaseIntArrayElements(data, ptr, 0); return id; } } static jint static jint nContextPeekMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray auxData, jboolean wait) nContextPeekMessage(JNIEnv *_env, jobject _this, RsContext con, jintArray auxData) { { LOG_API("nContextPeekMessage, con(%p)", con); LOG_API("nContextPeekMessage, con(%p)", con); jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); size_t receiveLen; size_t receiveLen; uint32_t subID; uint32_t subID; int id = rsContextPeekMessage(con, &receiveLen, sizeof(receiveLen), int id = rsContextPeekMessage(con, &receiveLen, sizeof(receiveLen), &subID, sizeof(subID), wait); &subID, sizeof(subID)); auxDataPtr[0] = (jint)subID; auxDataPtr[0] = (jint)subID; auxDataPtr[1] = (jint)receiveLen; auxDataPtr[1] = (jint)receiveLen; _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); _env->ReleaseIntArrayElements(auxData, auxDataPtr, 0); Loading Loading @@ -1160,9 +1159,9 @@ static JNINativeMethod methods[] = { {"nDeviceCreate", "()I", (void*)nDeviceCreate }, {"nDeviceCreate", "()I", (void*)nDeviceCreate }, {"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, {"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy }, {"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, {"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig }, {"nContextGetUserMessage", "(I[I)V", (void*)nContextGetUserMessage }, {"nContextGetUserMessage", "(I[I)I", (void*)nContextGetUserMessage }, {"nContextGetErrorMessage", "(I)Ljava/lang/String;", (void*)nContextGetErrorMessage }, {"nContextGetErrorMessage", "(I)Ljava/lang/String;", (void*)nContextGetErrorMessage }, {"nContextPeekMessage", "(I[IZ)I", (void*)nContextPeekMessage }, {"nContextPeekMessage", "(I[I)I", (void*)nContextPeekMessage }, {"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, {"nContextInitToClient", "(I)V", (void*)nContextInitToClient }, {"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, {"nContextDeinitToClient", "(I)V", (void*)nContextDeinitToClient }, Loading
libs/rs/rs.spec +3 −5 Original line number Original line Diff line number Diff line Loading @@ -45,16 +45,14 @@ ContextGetMessage { direct direct param void *data param void *data param size_t *receiveLen param size_t *receiveLen param uint32_t *subID param uint32_t *usrID param bool wait ret RsMessageToClientType ret RsMessageToClientType } } ContextPeekMessage { ContextPeekMessage { direct direct param size_t *receiveLen param size_t *receiveLen param uint32_t *subID param uint32_t *usrID param bool wait ret RsMessageToClientType ret RsMessageToClientType } } Loading Loading @@ -106,7 +104,7 @@ AllocationCubeCreateFromBitmap { ContextFinish { ContextFinish { handcodeApi sync } } ContextBindRootScript { ContextBindRootScript { Loading
libs/rs/rsContext.cpp +14 −63 Original line number Original line Diff line number Diff line Loading @@ -344,6 +344,8 @@ Context * Context::createContext(Device *dev, const RsSurfaceConfig *sc) { bool Context::initContext(Device *dev, const RsSurfaceConfig *sc) { bool Context::initContext(Device *dev, const RsSurfaceConfig *sc) { pthread_mutex_lock(&gInitMutex); pthread_mutex_lock(&gInitMutex); mIO.init(); dev->addContext(this); dev->addContext(this); mDev = dev; mDev = dev; if (sc) { if (sc) { Loading Loading @@ -393,7 +395,7 @@ bool Context::initContext(Device *dev, const RsSurfaceConfig *sc) { Context::~Context() { Context::~Context() { LOGV("Context::~Context"); LOGV("Context::~Context"); mIO.mToCore.flush(); mIO.coreFlush(); rsAssert(mExit); rsAssert(mExit); mExit = true; mExit = true; mPaused = false; mPaused = false; Loading Loading @@ -505,69 +507,18 @@ void Context::removeName(ObjectBase *obj) { } } } } RsMessageToClientType Context::peekMessageToClient(size_t *receiveLen, uint32_t *subID, bool wait) { RsMessageToClientType Context::peekMessageToClient(size_t *receiveLen, uint32_t *subID) { *receiveLen = 0; return (RsMessageToClientType)mIO.getClientHeader(receiveLen, subID); if (!wait && mIO.mToClient.isEmpty()) { return RS_MESSAGE_TO_CLIENT_NONE; } } uint32_t bytesData = 0; RsMessageToClientType Context::getMessageToClient(void *data, size_t *receiveLen, uint32_t *subID, size_t bufferLen) { uint32_t commandID = 0; return (RsMessageToClientType)mIO.getClientPayload(data, receiveLen, subID, bufferLen); const uint32_t *d = (const uint32_t *)mIO.mToClient.get(&commandID, &bytesData); *receiveLen = bytesData - sizeof(uint32_t); if (bytesData) { *subID = d[0]; } return (RsMessageToClientType)commandID; } RsMessageToClientType Context::getMessageToClient(void *data, size_t *receiveLen, uint32_t *subID, size_t bufferLen, bool wait) { //LOGE("getMessageToClient %i %i", bufferLen, wait); *receiveLen = 0; if (!wait && mIO.mToClient.isEmpty()) { return RS_MESSAGE_TO_CLIENT_NONE; } //LOGE("getMessageToClient 2 con=%p", this); uint32_t bytesData = 0; uint32_t commandID = 0; const uint32_t *d = (const uint32_t *)mIO.mToClient.get(&commandID, &bytesData); //LOGE("getMessageToClient 3 %i %i", commandID, bytesData); *receiveLen = bytesData - sizeof(uint32_t); *subID = d[0]; //LOGE("getMessageToClient %i %i", commandID, *subID); if (bufferLen >= (*receiveLen)) { memcpy(data, d+1, *receiveLen); mIO.mToClient.next(); return (RsMessageToClientType)commandID; } return RS_MESSAGE_TO_CLIENT_RESIZE; } } bool Context::sendMessageToClient(const void *data, RsMessageToClientType cmdID, bool Context::sendMessageToClient(const void *data, RsMessageToClientType cmdID, uint32_t subID, size_t len, bool waitForSpace) const { uint32_t subID, size_t len, bool waitForSpace) const { //LOGE("sendMessageToClient %i %i %i %i", cmdID, subID, len, waitForSpace); if (cmdID == 0) { return mIO.sendToClient(cmdID, subID, data, len, waitForSpace); LOGE("Attempting to send invalid command 0 to client."); return false; } if (!waitForSpace) { if (!mIO.mToClient.makeSpaceNonBlocking(len + 12)) { // Not enough room, and not waiting. return false; } } //LOGE("sendMessageToClient 2"); uint32_t *p = (uint32_t *)mIO.mToClient.reserve(len + sizeof(subID)); p[0] = subID; if (len > 0) { memcpy(p+1, data, len); } mIO.mToClient.commit(cmdID, len + sizeof(subID)); //LOGE("sendMessageToClient 3"); return true; } } void Context::initToClient() { void Context::initToClient() { Loading @@ -577,7 +528,7 @@ void Context::initToClient() { } } void Context::deinitToClient() { void Context::deinitToClient() { mIO.mToClient.shutdown(); mIO.clientShutdown(); } } void Context::setError(RsError e, const char *msg) const { void Context::setError(RsError e, const char *msg) const { Loading Loading @@ -706,16 +657,16 @@ RsContext rsi_ContextCreateGL(RsDevice vdev, uint32_t version, RsMessageToClientType rsi_ContextPeekMessage(Context *rsc, RsMessageToClientType rsi_ContextPeekMessage(Context *rsc, size_t * receiveLen, size_t receiveLen_length, size_t * receiveLen, size_t receiveLen_length, uint32_t * subID, size_t subID_length, bool wait) { uint32_t * subID, size_t subID_length) { return rsc->peekMessageToClient(receiveLen, subID, wait); return rsc->peekMessageToClient(receiveLen, subID); } } RsMessageToClientType rsi_ContextGetMessage(Context *rsc, void * data, size_t data_length, RsMessageToClientType rsi_ContextGetMessage(Context *rsc, void * data, size_t data_length, size_t * receiveLen, size_t receiveLen_length, size_t * receiveLen, size_t receiveLen_length, uint32_t * subID, size_t subID_length, bool wait) { uint32_t * subID, size_t subID_length) { rsAssert(subID_length == sizeof(uint32_t)); rsAssert(subID_length == sizeof(uint32_t)); rsAssert(receiveLen_length == sizeof(size_t)); rsAssert(receiveLen_length == sizeof(size_t)); return rsc->getMessageToClient(data, receiveLen, subID, data_length, wait); return rsc->getMessageToClient(data, receiveLen, subID, data_length); } } void rsi_ContextInitToClient(Context *rsc) { void rsi_ContextInitToClient(Context *rsc) { Loading
libs/rs/rsContext.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -143,8 +143,8 @@ public: void assignName(ObjectBase *obj, const char *name, uint32_t len); void assignName(ObjectBase *obj, const char *name, uint32_t len); void removeName(ObjectBase *obj); void removeName(ObjectBase *obj); RsMessageToClientType peekMessageToClient(size_t *receiveLen, uint32_t *subID, bool wait); RsMessageToClientType peekMessageToClient(size_t *receiveLen, uint32_t *subID); RsMessageToClientType getMessageToClient(void *data, size_t *receiveLen, uint32_t *subID, size_t bufferLen, bool wait); RsMessageToClientType getMessageToClient(void *data, size_t *receiveLen, uint32_t *subID, size_t bufferLen); bool sendMessageToClient(const void *data, RsMessageToClientType cmdID, uint32_t subID, size_t len, bool waitForSpace) const; bool sendMessageToClient(const void *data, RsMessageToClientType cmdID, uint32_t subID, size_t len, bool waitForSpace) const; uint32_t runScript(Script *s); uint32_t runScript(Script *s); Loading