Loading services/surfaceflinger/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ LOCAL_SRC_FILES:= \ DisplayHardware/DisplayHardware.cpp \ DisplayHardware/DisplayHardwareBase.cpp \ DisplayHardware/HWComposer.cpp \ DisplayHardware/PowerHAL.cpp \ GLExtensions.cpp \ MessageQueue.cpp \ SurfaceFlinger.cpp \ Loading services/surfaceflinger/DisplayHardware/DisplayHardware.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -358,6 +358,13 @@ void DisplayHardware::setVSyncHandler(const sp<VSyncHandler>& handler) { mVSyncHandler = handler; } void DisplayHardware::eventControl(int event, int enabled) { if (event == EVENT_VSYNC) { mPowerHAL.vsyncHint(enabled); } mHwc->eventControl(event, enabled); } void DisplayHardware::onVSyncReceived(int dpy, nsecs_t timestamp) { sp<VSyncHandler> handler; { // scope for the lock Loading services/surfaceflinger/DisplayHardware/DisplayHardware.h +9 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ #include "DisplayHardware/DisplayHardwareBase.h" #include "HWComposer.h" #include "PowerHAL.h" namespace android { Loading Loading @@ -86,6 +87,12 @@ public: void setVSyncHandler(const sp<VSyncHandler>& handler); enum { EVENT_VSYNC = HWC_EVENT_VSYNC }; void eventControl(int event, int enabled); uint32_t getPageFlipCount() const; EGLDisplay getEGLDisplay() const { return mDisplay; } Loading Loading @@ -129,6 +136,8 @@ private: // constant once set HWComposer* mHwc; PowerHAL mPowerHAL; mutable Mutex mLock; Loading services/surfaceflinger/DisplayHardware/HWComposer.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -125,19 +125,21 @@ void HWComposer::vsync(int dpy, int64_t timestamp) { mEventHandler.onVSyncReceived(dpy, timestamp); } status_t HWComposer::eventControl(int event, int enabled) { void HWComposer::eventControl(int event, int enabled) { status_t err = NO_ERROR; if (mHwc && mHwc->common.version >= HWC_DEVICE_API_VERSION_0_3) { if (!mDebugForceFakeVSync) { err = mHwc->methods->eventControl(mHwc, event, enabled); // error here should not happen -- not sure what we should // do if it does. ALOGE_IF(err, "eventControl(%d, %d) failed %s", event, enabled, strerror(-err)); } } if (err == NO_ERROR && mVSyncThread != NULL) { mVSyncThread->setEnabled(enabled); } return err; } void HWComposer::setFrameBuffer(EGLDisplay dpy, EGLSurface sur) { Loading services/surfaceflinger/DisplayHardware/HWComposer.h +1 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ public: EVENT_VSYNC = HWC_EVENT_VSYNC }; status_t eventControl(int event, int enabled); void eventControl(int event, int enabled); // this class is only used to fake the VSync event on systems that don't // have it. Loading Loading
services/surfaceflinger/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ LOCAL_SRC_FILES:= \ DisplayHardware/DisplayHardware.cpp \ DisplayHardware/DisplayHardwareBase.cpp \ DisplayHardware/HWComposer.cpp \ DisplayHardware/PowerHAL.cpp \ GLExtensions.cpp \ MessageQueue.cpp \ SurfaceFlinger.cpp \ Loading
services/surfaceflinger/DisplayHardware/DisplayHardware.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -358,6 +358,13 @@ void DisplayHardware::setVSyncHandler(const sp<VSyncHandler>& handler) { mVSyncHandler = handler; } void DisplayHardware::eventControl(int event, int enabled) { if (event == EVENT_VSYNC) { mPowerHAL.vsyncHint(enabled); } mHwc->eventControl(event, enabled); } void DisplayHardware::onVSyncReceived(int dpy, nsecs_t timestamp) { sp<VSyncHandler> handler; { // scope for the lock Loading
services/surfaceflinger/DisplayHardware/DisplayHardware.h +9 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ #include "DisplayHardware/DisplayHardwareBase.h" #include "HWComposer.h" #include "PowerHAL.h" namespace android { Loading Loading @@ -86,6 +87,12 @@ public: void setVSyncHandler(const sp<VSyncHandler>& handler); enum { EVENT_VSYNC = HWC_EVENT_VSYNC }; void eventControl(int event, int enabled); uint32_t getPageFlipCount() const; EGLDisplay getEGLDisplay() const { return mDisplay; } Loading Loading @@ -129,6 +136,8 @@ private: // constant once set HWComposer* mHwc; PowerHAL mPowerHAL; mutable Mutex mLock; Loading
services/surfaceflinger/DisplayHardware/HWComposer.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -125,19 +125,21 @@ void HWComposer::vsync(int dpy, int64_t timestamp) { mEventHandler.onVSyncReceived(dpy, timestamp); } status_t HWComposer::eventControl(int event, int enabled) { void HWComposer::eventControl(int event, int enabled) { status_t err = NO_ERROR; if (mHwc && mHwc->common.version >= HWC_DEVICE_API_VERSION_0_3) { if (!mDebugForceFakeVSync) { err = mHwc->methods->eventControl(mHwc, event, enabled); // error here should not happen -- not sure what we should // do if it does. ALOGE_IF(err, "eventControl(%d, %d) failed %s", event, enabled, strerror(-err)); } } if (err == NO_ERROR && mVSyncThread != NULL) { mVSyncThread->setEnabled(enabled); } return err; } void HWComposer::setFrameBuffer(EGLDisplay dpy, EGLSurface sur) { Loading
services/surfaceflinger/DisplayHardware/HWComposer.h +1 −1 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ public: EVENT_VSYNC = HWC_EVENT_VSYNC }; status_t eventControl(int event, int enabled); void eventControl(int event, int enabled); // this class is only used to fake the VSync event on systems that don't // have it. Loading