sdm: Check for RegisterVsync return value

Check for RegisterVsync return value before settting
registered_vsync_ to true. Don't set if error.

Change-Id: I147cde07f302c7abc7bf178352c75e797cf2a711
CRs-Fixed: 2599786
diff --git a/sdm/libs/core/display_base.cpp b/sdm/libs/core/display_base.cpp
index 547b467..d40e5e8 100644
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -1253,6 +1253,8 @@
     }
     if (error == kErrorNone) {
       vsync_enable_ = enable;
+    } else {
+      vsync_enable_pending_ = true;
     }
   }
   vsync_enable_pending_ = !enable ? false : vsync_enable_pending_;
diff --git a/sdm/libs/core/drm/hw_events_drm.cpp b/sdm/libs/core/drm/hw_events_drm.cpp
index c6cf5a2..4bbf001 100644
--- a/sdm/libs/core/drm/hw_events_drm.cpp
+++ b/sdm/libs/core/drm/hw_events_drm.cpp
@@ -279,12 +279,16 @@
 }
 
 DisplayError HWEventsDRM::SetEventState(HWEvent event, bool enable, void *arg) {
+  DisplayError error = kErrorNone;
   switch (event) {
     case HWEvent::VSYNC: {
       std::lock_guard<std::mutex> lock(vsync_mutex_);
       vsync_enabled_ = enable;
       if (vsync_enabled_ && !vsync_registered_) {
-        RegisterVSync();
+        error = RegisterVSync();
+        if (error != kErrorNone) {
+          return error;
+        }
         vsync_registered_ = true;
       }
     } break;
@@ -558,11 +562,12 @@
 
 void HWEventsDRM::HandleVSync(char *data) {
   {
+    DisplayError ret = kErrorNone;
     std::lock_guard<std::mutex> lock(vsync_mutex_);
     vsync_registered_ = false;
     if (vsync_enabled_) {
-      RegisterVSync();
-      vsync_registered_ = true;
+      ret = RegisterVSync();
+      vsync_registered_ = (ret == kErrorNone);
     }
   }