aboutsummaryrefslogtreecommitdiff
path: root/drm/ResourceManager.h
diff options
context:
space:
mode:
authorRoman Stratiienko <roman.o.stratiienko@globallogic.com>2021-10-25 22:54:20 +0300
committerRoman Stratiienko <roman.o.stratiienko@globallogic.com>2021-11-10 19:30:24 +0200
commit1e053b4e1913beeddc74b423cbd3a753192822c0 (patch)
tree0574a41802b58be8de9a050a507c55383ce22674 /drm/ResourceManager.h
parent2a1f1ae02d31dcb0ca39de2da103539cb7e4aae7 (diff)
downloaddrm_hwcomposer-1e053b4e1913beeddc74b423cbd3a753192822c0.tar.gz
drm_hwcomposer: Make uevent listener standalone
1. DRM event listener doesn't work in this conditions, uevent blocks the thread and non-blocking select() doesn't make any sense. Remove DRM event handling for now. 2. UEvent listeren is common for all DrmDevices, therefore put it into ResourceManager class. Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
Diffstat (limited to 'drm/ResourceManager.h')
-rw-r--r--drm/ResourceManager.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/drm/ResourceManager.h b/drm/ResourceManager.h
index d9e0712..5ffe92c 100644
--- a/drm/ResourceManager.h
+++ b/drm/ResourceManager.h
@@ -20,6 +20,7 @@
#include <string.h>
#include "DrmDevice.h"
+#include "UEventListener.h"
#include "DrmFbImporter.h"
namespace android {
@@ -29,6 +30,10 @@ class ResourceManager {
ResourceManager();
ResourceManager(const ResourceManager &) = delete;
ResourceManager &operator=(const ResourceManager &) = delete;
+ ~ResourceManager() {
+ uevent_listener_.Exit();
+ }
+
int Init();
DrmDevice *GetDrmDevice(int display);
const std::vector<std::unique_ptr<DrmDevice>> &getDrmDevices() const {
@@ -41,6 +46,10 @@ class ResourceManager {
return scale_with_gpu_;
}
+ UEventListener *GetUEventListener() {
+ return &uevent_listener_;
+ }
+
private:
int AddDrmDevice(std::string const &path);
@@ -48,6 +57,8 @@ class ResourceManager {
std::vector<std::unique_ptr<DrmDevice>> drms_;
bool scale_with_gpu_{};
+
+ UEventListener uevent_listener_;
};
} // namespace android