diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index 3ecaa7f..6418122 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -41,11 +41,15 @@
 #include <gui/ISurfaceComposer.h>
 #include <gui/ISurfaceComposerClient.h>
 
+#include <hardware/hwcomposer_defs.h>
+
 #include <private/gui/LayerState.h>
 
 #include "Barrier.h"
 #include "MessageQueue.h"
 
+#include "DisplayHardware/HWComposer.h"
+
 namespace android {
 
 // ---------------------------------------------------------------------------
@@ -81,7 +85,8 @@
 class SurfaceFlinger : public BinderService<SurfaceFlinger>,
                        public BnSurfaceComposer,
                        private IBinder::DeathRecipient,
-                       private Thread
+                       private Thread,
+                       private HWComposer::EventHandler
 {
 public:
     static char const* getServiceName() {
@@ -90,6 +95,10 @@
 
     SurfaceFlinger();
 
+    enum {
+        EVENT_VSYNC = HWC_EVENT_VSYNC
+    };
+
     // post an asynchronous message to the main thread
     status_t postMessageAsync(const sp<MessageBase>& msg, nsecs_t reltime = 0,
         uint32_t flags = 0);
@@ -114,14 +123,19 @@
         return getDisplayHardware(0);
     }
 
+    // utility function to delete a texture on the main thread
+    void deleteTextureAsync(GLuint texture);
+
+
+    // enable/disable h/w composer event
+    // TODO: this should be made accessible only to EventThread
+    void eventControl(int event, int enabled);
+
     // called on the main thread by MessageQueue when an internal message
     // is received
     // TODO: this should be made accessible only to MessageQueue
     void onMessageReceived(int32_t what);
 
-    // utility function to delete a texture on the main thread
-    void deleteTextureAsync(GLuint texture);
-
 private:
     friend class Client;
     friend class DisplayEventConnection;
@@ -194,6 +208,11 @@
     virtual void onFirstRef();
 
     /* ------------------------------------------------------------------------
+     * HWComposer::EventHandler interface
+     */
+    virtual void onVSyncReceived(int dpy, nsecs_t timestamp);
+
+    /* ------------------------------------------------------------------------
      * Message handling
      */
     void waitForEvent();
@@ -308,6 +327,12 @@
     }
 
     /* ------------------------------------------------------------------------
+     * H/W composer
+     */
+
+    HWComposer& getHwComposer() const { return *mHwc; }
+
+        /* ------------------------------------------------------------------------
      * Compositing
      */
     void invalidateHwcGeometry();
@@ -359,6 +384,7 @@
     // constant members (no synchronization needed for access)
     sp<IMemoryHeap> mServerHeap;
     surface_flinger_cblk_t* mServerCblk;
+    HWComposer* mHwc;
     GLuint mWormholeTexName;
     GLuint mProtectedTexName;
     nsecs_t mBootTime;
