diff options
| author | 2017-05-19 00:19:31 +0000 | |
|---|---|---|
| committer | 2017-05-19 00:19:31 +0000 | |
| commit | f2f19636fab59e59d6f10a70a2a85cb63c36c42b (patch) | |
| tree | a947872a1216b8393e6eacabac680b05496b0069 /services/displayservice/DisplayEventReceiver.cpp | |
| parent | f4fa8fb4583e3fc4045d7d63ddb337ccb11b1252 (diff) | |
| parent | 167eefa720c7a57bf3149fb91d122399c77504e9 (diff) | |
Merge "Fix race condition in displayservice." into oc-dev am: 02e3c25f95
am: 167eefa720
Change-Id: I817744c1522aa031c6d34cdfa8a2af1445e87712
Diffstat (limited to 'services/displayservice/DisplayEventReceiver.cpp')
| -rw-r--r-- | services/displayservice/DisplayEventReceiver.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/services/displayservice/DisplayEventReceiver.cpp b/services/displayservice/DisplayEventReceiver.cpp index a7fd3c5cba..5993e443e6 100644 --- a/services/displayservice/DisplayEventReceiver.cpp +++ b/services/displayservice/DisplayEventReceiver.cpp @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + #define LOG_TAG "libdisplayservicehidl" #include <displayservice/DisplayEventReceiver.h> @@ -43,12 +44,14 @@ sp<Looper> getLooper() { return looper; } -DisplayEventReceiver::AttachedEvent::AttachedEvent(const sp<IEventCallback> &callback) : mCallback(callback) { +DisplayEventReceiver::AttachedEvent::AttachedEvent(const sp<IEventCallback> &callback) + : mCallback(callback) +{ mLooperAttached = getLooper()->addFd(mFwkReceiver.getFd(), - Looper::POLL_CALLBACK, - Looper::EVENT_INPUT, - this, - nullptr); + Looper::POLL_CALLBACK, + Looper::EVENT_INPUT, + this, + nullptr); } DisplayEventReceiver::AttachedEvent::~AttachedEvent() { @@ -86,7 +89,7 @@ int DisplayEventReceiver::AttachedEvent::handleEvent(int fd, int events, void* / return 1; // keep the callback } - const static size_t SIZE = 1; + constexpr size_t SIZE = 1; ssize_t n; FwkReceiver::Event buf[SIZE]; @@ -149,11 +152,11 @@ Return<Status> DisplayEventReceiver::requestNextVsync() { } Return<Status> DisplayEventReceiver::close() { + std::unique_lock<std::mutex> lock(mMutex); if (mAttached == nullptr) { return Status::BAD_VALUE; } - std::unique_lock<std::mutex> lock(mMutex); bool success = mAttached->detach(); mAttached = nullptr; |