diff --git a/drm/VSyncWorker.cpp b/drm/VSyncWorker.cpp
index afc3949..ac80da4 100644
--- a/drm/VSyncWorker.cpp
+++ b/drm/VSyncWorker.cpp
@@ -30,13 +30,10 @@
 
 namespace android {
 
-auto VSyncWorker::CreateInstance(std::shared_ptr<DrmDisplayPipeline> &pipe,
-                                 VSyncWorkerCallbacks &callbacks)
+auto VSyncWorker::CreateInstance(std::shared_ptr<DrmDisplayPipeline> &pipe)
     -> std::shared_ptr<VSyncWorker> {
   auto vsw = std::shared_ptr<VSyncWorker>(new VSyncWorker());
 
-  vsw->callbacks_ = callbacks;
-
   if (pipe) {
     vsw->high_crtc_ = pipe->crtc->Get()->GetIndexInResArray()
                       << DRM_VBLANK_HIGH_CRTC_SHIFT;
@@ -95,7 +92,6 @@
     const std::lock_guard<std::mutex> lock(mutex_);
     thread_exit_ = true;
     enabled_ = false;
-    callbacks_ = {};
   }
 
   cv_.notify_all();
@@ -188,14 +184,12 @@
                   (int64_t)vblank.reply.tval_usec * kUsToNsMul;
     }
 
-    decltype(callbacks_.out_event) callback;
     std::optional<VsyncTimestampCallback> vsync_callback;
 
     {
       const std::lock_guard<std::mutex> lock(mutex_);
       if (!enabled_)
         continue;
-      callback = callbacks_.out_event;
       if (enable_vsync_timestamps_) {
         last_vsync_timestamp_ = timestamp;
       }
@@ -205,10 +199,6 @@
     if (vsync_callback) {
       vsync_callback.value()(timestamp, vsync_period_ns_);
     }
-
-    if (callback)
-      callback(timestamp);
-
     last_timestamp_ = timestamp;
   }
 
diff --git a/drm/VSyncWorker.h b/drm/VSyncWorker.h
index f1143e4..0809f48 100644
--- a/drm/VSyncWorker.h
+++ b/drm/VSyncWorker.h
@@ -26,10 +26,6 @@
 
 namespace android {
 
-struct VSyncWorkerCallbacks {
-  std::function<void(uint64_t /*timestamp*/)> out_event;
-};
-
 class VSyncWorker {
  public:
   using VsyncTimestampCallback = std::function<void(int64_t /*timestamp*/,
@@ -37,8 +33,7 @@
 
   ~VSyncWorker() = default;
 
-  auto static CreateInstance(std::shared_ptr<DrmDisplayPipeline> &pipe,
-                             VSyncWorkerCallbacks &callbacks)
+  auto static CreateInstance(std::shared_ptr<DrmDisplayPipeline> &pipe)
       -> std::shared_ptr<VSyncWorker>;
 
   // Set the expected vsync period.
@@ -67,8 +62,6 @@
   void UpdateVSyncControl();
   bool ShouldEnable() const;
 
-  VSyncWorkerCallbacks callbacks_;
-
   SharedFd drm_fd_;
   uint32_t high_crtc_ = 0;
 
