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>
diff --git a/drmresources.cpp b/drmresources.cpp
index 80e61ec..81381c3 100644
--- a/drmresources.cpp
+++ b/drmresources.cpp
@@ -19,6 +19,7 @@
#include "drmconnector.h"
#include "drmcrtc.h"
#include "drmencoder.h"
+#include "drmeventlistener.h"
#include "drmplane.h"
#include "drmresources.h"
@@ -33,7 +34,11 @@
namespace android {
-DrmResources::DrmResources() : compositor_(this) {
+DrmResources::DrmResources() : compositor_(this), event_listener_(this) {
+}
+
+DrmResources::~DrmResources() {
+ event_listener_.Exit();
}
int DrmResources::Init() {
@@ -194,6 +199,12 @@
if (ret)
return ret;
+ ret = event_listener_.Init();
+ if (ret) {
+ ALOGE("Can't initialize event listener %d", ret);
+ return ret;
+ }
+
for (auto &conn : connectors_) {
ret = CreateDisplayPipe(conn.get());
if (ret) {
@@ -363,6 +374,10 @@
return &compositor_;
}
+DrmEventListener *DrmResources::event_listener() {
+ return &event_listener_;
+}
+
int DrmResources::GetProperty(uint32_t obj_id, uint32_t obj_type,
const char *prop_name, DrmProperty *property) {
drmModeObjectPropertiesPtr props;