diff options
| author | 2009-11-15 12:06:20 -0800 | |
|---|---|---|
| committer | 2009-11-15 12:06:23 -0800 | |
| commit | 478de466ce0504b9af639c3338b883893670a8e8 (patch) | |
| tree | 61aba455baf06a4821a65b82d1115929619b49bd /libs/rs/rsThreadIO.cpp | |
| parent | 2b63ff51d5202eb2b458e937d4b65b326238733e (diff) | |
| parent | 9db3d07b9620b4269ab33f78604a36327e536ce1 (diff) | |
merge from eclair
Diffstat (limited to 'libs/rs/rsThreadIO.cpp')
| -rw-r--r-- | libs/rs/rsThreadIO.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/libs/rs/rsThreadIO.cpp b/libs/rs/rsThreadIO.cpp new file mode 100644 index 000000000000..527b3d7dbabb --- /dev/null +++ b/libs/rs/rsThreadIO.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2009 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. + */ + +#include "rsContext.h" + +#include "rsThreadIO.h" + +using namespace android; +using namespace android::renderscript; + +ThreadIO::ThreadIO() +{ + mToCore.init(16 * 1024); + mToClient.init(1024); +} + +ThreadIO::~ThreadIO() +{ +} + +void ThreadIO::shutdown() +{ + mToCore.shutdown(); +} + +bool ThreadIO::playCoreCommands(Context *con, bool waitForCommand) +{ + bool ret = false; + while(!mToCore.isEmpty() || waitForCommand) { + uint32_t cmdID = 0; + uint32_t cmdSize = 0; + ret = true; + if (con->props.mLogTimes) { + con->timerSet(Context::RS_TIMER_IDLE); + } + const void * data = mToCore.get(&cmdID, &cmdSize); + if (!cmdSize) { + // exception occured, probably shutdown. + return false; + } + if (con->props.mLogTimes) { + con->timerSet(Context::RS_TIMER_INTERNAL); + } + waitForCommand = false; + //LOGV("playCoreCommands 3 %i %i", cmdID, cmdSize); + + gPlaybackFuncs[cmdID](con, data); + mToCore.next(); + } + return ret; +} + + |