• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 // Copyright (c) 2014 Intel Corporation 
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //      http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 */
16 #ifndef SOFT_VSYNC_OBSERVER_H
17 #define SOFT_VSYNC_OBSERVER_H
18 
19 #include <common/base/SimpleThread.h>
20 
21 namespace android {
22 namespace intel {
23 
24 class IDisplayDevice;
25 
26 class SoftVsyncObserver {
27 public:
28     SoftVsyncObserver(IDisplayDevice& disp);
29     virtual ~SoftVsyncObserver();
30 
31 public:
32     virtual bool initialize();
33     virtual void deinitialize();
34     virtual void setRefreshRate(int rate);
35     virtual bool control(bool enabled);
36 
37 private:
38     IDisplayDevice& mDisplayDevice;
39     int  mDevice;
40     bool mEnabled;
41     int mRefreshRate;
42     nsecs_t mRefreshPeriod;
43     mutable Mutex mLock;
44     Condition mCondition;
45     mutable nsecs_t mNextFakeVSync;
46     bool mExitThread;
47     bool mInitialized;
48 
49 private:
50     DECLARE_THREAD(VsyncEventPollThread, SoftVsyncObserver);
51 };
52 
53 } // namespace intel
54 } // namespace android
55 
56 
57 
58 #endif /* SOFT_VSYNC_OBSERVER_H */
59 
60