summaryrefslogtreecommitdiff
path: root/msm8998/sdm/libs/hwc2/hwc_callbacks.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'msm8998/sdm/libs/hwc2/hwc_callbacks.cpp')
-rw-r--r--msm8998/sdm/libs/hwc2/hwc_callbacks.cpp18
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;
}