From d7f614f831214c2e62a9efe52bead9e870f0f761 Mon Sep 17 00:00:00 2001 From: John Grossman Date: Mon, 29 Aug 2011 16:01:00 -0700 Subject: [PATCH] Make the LocalClock HAL wrapper use a singleton HAL instance. Change the local clock helper wrapper to hold just a single copy of the local time HAL instead of having each wrapper hold their own HAL instance. Change-Id: Ibc365eccc78a98bd2ea6cf1c57a55a84b843bc2a --- include/aah_timesrv/local_clock.h | 5 +++-- libs/aah_timesrv/local_clock.cpp | 14 +++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/include/aah_timesrv/local_clock.h b/include/aah_timesrv/local_clock.h index 5a3af556edf5..845d1c21614d 100644 --- a/include/aah_timesrv/local_clock.h +++ b/include/aah_timesrv/local_clock.h @@ -22,13 +22,13 @@ #include #include +#include namespace android { class LocalClock { public: LocalClock(); - ~LocalClock(); bool initCheck(); @@ -39,7 +39,8 @@ class LocalClock { int max_records); private: - local_time_hw_device_t* dev_; + static Mutex dev_lock_; + static local_time_hw_device_t* dev_; }; } // namespace android diff --git a/libs/aah_timesrv/local_clock.cpp b/libs/aah_timesrv/local_clock.cpp index 540a1355ae91..2d9a481cc8fd 100644 --- a/libs/aah_timesrv/local_clock.cpp +++ b/libs/aah_timesrv/local_clock.cpp @@ -24,13 +24,22 @@ #include #include #include +#include namespace android { +Mutex LocalClock::dev_lock_; +local_time_hw_device_t* LocalClock::dev_ = NULL; + LocalClock::LocalClock() { int res; const hw_module_t* mod; + AutoMutex lock(&dev_lock_); + + if (dev_ != NULL) + return; + res = hw_get_module_by_class(LOCAL_TIME_HARDWARE_MODULE_ID, NULL, &mod); if (res) { LOGE("Failed to open local time HAL module (res = %d)", res); @@ -43,11 +52,6 @@ LocalClock::LocalClock() { } } -LocalClock::~LocalClock() { - if (NULL != dev_) - local_time_hw_device_close(dev_); -} - bool LocalClock::initCheck() { return (NULL != dev_); } -- 2.11.0