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