diff options
author | Sean Paul <seanpaul@chromium.org> | 2015-07-28 14:15:42 -0400 |
---|---|---|
committer | Sean Paul <seanpaul@chromium.org> | 2016-03-24 16:36:44 -0400 |
commit | 047b9b2484b4e68741df2cb522915f968c013373 (patch) | |
tree | b4a63f62b16646fe87bd73c6bee5efca4c17d2e2 /drmeventlistener.h | |
parent | 538a375097b7df59f8852997f9dada0bde86b328 (diff) |
drm_hwcomposer: Add DrmEventListener worker
This patch adds a worker which listens to drm events. If the
drm event has a handler associated with it, the listener will
call the handler.
BUG=chrome-os-partner:41682
TEST=Tested on ryu with DP
Change-Id: I5d691d191425604766a00be3e72111095d025d06
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Diffstat (limited to 'drmeventlistener.h')
-rw-r--r-- | drmeventlistener.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/drmeventlistener.h b/drmeventlistener.h new file mode 100644 index 0000000..61eefe8 --- /dev/null +++ b/drmeventlistener.h @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ANDROID_DRM_EVENT_LISTENER_H_ +#define ANDROID_DRM_EVENT_LISTENER_H_ + +#include "autofd.h" +#include "worker.h" + +namespace android { + +class DrmResources; + +class DrmEventHandler { + public: + DrmEventHandler() { + } + virtual ~DrmEventHandler() { + } + + virtual void HandleEvent(uint64_t timestamp_us) = 0; +}; + +class DrmEventListener : public Worker { + public: + DrmEventListener(DrmResources *drm); + virtual ~DrmEventListener() { + } + + int Init(); + + void RegisterHotplugHandler(DrmEventHandler *handler); + + static void FlipHandler(int fd, unsigned int sequence, unsigned int tv_sec, + unsigned int tv_usec, void *user_data); + + protected: + virtual void Routine(); + + private: + void UEventHandler(); + + fd_set fds_; + UniqueFd uevent_fd_; + int max_fd_ = -1; + + DrmResources *drm_; + DrmEventHandler *hotplug_handler_ = NULL; +}; +} + +#endif |