diff options
Diffstat (limited to 'msm8998/sdm/libs/hwc2/hwc_callbacks.cpp')
-rw-r--r-- | msm8998/sdm/libs/hwc2/hwc_callbacks.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/msm8998/sdm/libs/hwc2/hwc_callbacks.cpp b/msm8998/sdm/libs/hwc2/hwc_callbacks.cpp index c52632a5..e12e0574 100644 --- a/msm8998/sdm/libs/hwc2/hwc_callbacks.cpp +++ b/msm8998/sdm/libs/hwc2/hwc_callbacks.cpp @@ -35,18 +35,21 @@ namespace sdm { void HWCCallbacks::Hotplug(hwc2_display_t display, HWC2::Connection state) { + std::lock_guard<std::mutex> hotplug_lock(hotplug_mutex_); if (hotplug_) { hotplug_(hotplug_data_, display, INT32(state)); } } void HWCCallbacks::Refresh(hwc2_display_t display) { + std::lock_guard<std::mutex> refresh_lock(refresh_mutex_); if (refresh_) { refresh_(refresh_data_, display); } } void HWCCallbacks::Vsync(hwc2_display_t display, int64_t timestamp) { + std::lock_guard<std::mutex> vsync_lock(vsync_mutex_); if (vsync_) { DTRACE_SCOPED(); vsync_(vsync_data_, display, timestamp); @@ -56,18 +59,21 @@ void HWCCallbacks::Vsync(hwc2_display_t display, int64_t timestamp) { HWC2::Error HWCCallbacks::Register(HWC2::Callback descriptor, hwc2_callback_data_t callback_data, hwc2_function_pointer_t pointer) { switch (descriptor) { - case HWC2::Callback::Hotplug: + case HWC2::Callback::Hotplug: { + std::lock_guard<std::mutex> hotplug_lock(hotplug_mutex_); hotplug_data_ = callback_data; hotplug_ = reinterpret_cast<HWC2_PFN_HOTPLUG>(pointer); - break; - case HWC2::Callback::Refresh: + } break; + case HWC2::Callback::Refresh: { + std::lock_guard<std::mutex> refresh_lock(refresh_mutex_); refresh_data_ = callback_data; refresh_ = reinterpret_cast<HWC2_PFN_REFRESH>(pointer); - break; - case HWC2::Callback::Vsync: + } break; + case HWC2::Callback::Vsync: { + std::lock_guard<std::mutex> vsync_lock(vsync_mutex_); vsync_data_ = callback_data; vsync_ = reinterpret_cast<HWC2_PFN_VSYNC>(pointer); - break; + } break; default: return HWC2::Error::BadParameter; } |