1d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis/* 2d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * Copyright (C) 2013 The Android Open Source Project 3d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * 4d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * Licensed under the Apache License, Version 2.0 (the "License"); 5d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * you may not use this file except in compliance with the License. 6d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * You may obtain a copy of the License at 7d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * 8d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * http://www.apache.org/licenses/LICENSE-2.0 9d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * 10d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * Unless required by applicable law or agreed to in writing, software 11d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * distributed under the License is distributed on an "AS IS" BASIS, 12d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * See the License for the specific language governing permissions and 14d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis * limitations under the License. 15d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis */ 16d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 17d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis#ifndef ANDROID_EVENTCONTROLTHREAD_H 18d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis#define ANDROID_EVENTCONTROLTHREAD_H 19d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 20d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis#include <stddef.h> 21d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 22d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis#include <utils/Mutex.h> 23d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis#include <utils/Thread.h> 24d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 25d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennisnamespace android { 26d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 27d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennisclass SurfaceFlinger; 28d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 29d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennisclass EventControlThread: public Thread { 30d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennispublic: 31d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 32d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis EventControlThread(const sp<SurfaceFlinger>& flinger); 33d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis virtual ~EventControlThread() {} 34d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 35d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis void setVsyncEnabled(bool enabled); 36d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis virtual bool threadLoop(); 37d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 38d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennisprivate: 39d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis sp<SurfaceFlinger> mFlinger; 40d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis bool mVsyncEnabled; 41d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 42d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis Mutex mMutex; 43d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis Condition mCond; 44d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis}; 45d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 46d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis} 47d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis 48d1700756ec9520c3fba22f9a14fd064a6e288810Jamie Gennis#endif // ANDROID_DISPSYNC_H 49