diff --git a/drm/VSyncWorker.cpp b/drm/VSyncWorker.cpp
index 6123e5c..afc3949 100644
--- a/drm/VSyncWorker.cpp
+++ b/drm/VSyncWorker.cpp
@@ -48,10 +48,10 @@
   return vsw;
 }
 
-void VSyncWorker::VSyncControl(bool enabled) {
+void VSyncWorker::UpdateVSyncControl() {
   {
     const std::lock_guard<std::mutex> lock(mutex_);
-    enabled_ = enabled;
+    enabled_ = ShouldEnable();
     last_timestamp_ = -1;
   }
 
@@ -64,13 +64,16 @@
 }
 
 void VSyncWorker::SetVsyncTimestampTracking(bool enabled) {
-  const std::lock_guard<std::mutex> lock(mutex_);
-  enable_vsync_timestamps_ = enabled;
-  if (enabled) {
-    // Reset the last timestamp so the caller knows if a vsync timestamp is
-    // fresh or not.
-    last_vsync_timestamp_ = 0;
+  {
+    const std::lock_guard<std::mutex> lock(mutex_);
+    enable_vsync_timestamps_ = enabled;
+    if (enabled) {
+      // Reset the last timestamp so the caller knows if a vsync timestamp is
+      // fresh or not.
+      last_vsync_timestamp_ = 0;
+    }
   }
+  UpdateVSyncControl();
 }
 
 uint32_t VSyncWorker::GetLastVsyncTimestamp() {
@@ -80,8 +83,11 @@
 
 void VSyncWorker::SetTimestampCallback(
     std::optional<VsyncTimestampCallback> &&callback) {
-  const std::lock_guard<std::mutex> lock(mutex_);
-  callback_ = std::move(callback);
+  {
+    const std::lock_guard<std::mutex> lock(mutex_);
+    callback_ = std::move(callback);
+  }
+  UpdateVSyncControl();
 }
 
 void VSyncWorker::StopThread() {
@@ -95,6 +101,10 @@
   cv_.notify_all();
 }
 
+bool VSyncWorker::ShouldEnable() const {
+  return enable_vsync_timestamps_ || callback_.has_value();
+};
+
 /*
  * Returns the timestamp of the next vsync in phase with last_timestamp_.
  * For example:
