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);
}
}