RenderThread.h revision cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fc
1cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck/* 2cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * Copyright (C) 2013 The Android Open Source Project 3cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * 4cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * Licensed under the Apache License, Version 2.0 (the "License"); 5cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * you may not use this file except in compliance with the License. 6cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * You may obtain a copy of the License at 7cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * 8cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * http://www.apache.org/licenses/LICENSE-2.0 9cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * 10cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * Unless required by applicable law or agreed to in writing, software 11cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * distributed under the License is distributed on an "AS IS" BASIS, 12cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * See the License for the specific language governing permissions and 14cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck * limitations under the License. 15cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck */ 16cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 17cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck#ifndef RENDERTHREAD_H_ 18cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck#define RENDERTHREAD_H_ 19cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 20cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck#include "RenderTask.h" 21cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck#include <cutils/compiler.h> 22cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck#include <utils/Looper.h> 23cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck#include <utils/Mutex.h> 24cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck#include <utils/Singleton.h> 25cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck#include <utils/Thread.h> 26cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 27cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Recknamespace android { 28cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Recknamespace uirenderer { 29cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Recknamespace renderthread { 30cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 31cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reckclass ANDROID_API RenderThread : public Thread, public Singleton<RenderThread> { 32cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reckpublic: 33cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck // RenderThread takes complete ownership of tasks that are queued 34cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck // and will delete them after they are run 35cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck ANDROID_API void queue(RenderTask* task); 36cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 37cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reckprotected: 38cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck virtual bool threadLoop(); 39cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 40cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reckprivate: 41cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck friend class Singleton<RenderThread>; 42cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 43cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck RenderThread(); 44cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck virtual ~RenderThread(); 45cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 46cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck RenderTask* nextTask(); 47cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 48cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck sp<Looper> mLooper; 49cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck Mutex mLock; 50cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 51cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck RenderTask* mQueueHead; 52cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck RenderTask* mQueueTail; 53cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck}; 54cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck 55cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck} /* namespace renderthread */ 56cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck} /* namespace uirenderer */ 57cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck} /* namespace android */ 58cec24ae16e9a0a7c3075f1a8d9149bb7fb3813fcJohn Reck#endif /* RENDERTHREAD_H_ */ 59