aboutsummaryrefslogtreecommitdiff
path: root/drm/DrmDevice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'drm/DrmDevice.cpp')
-rw-r--r--drm/DrmDevice.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/drm/DrmDevice.cpp b/drm/DrmDevice.cpp
index fd4589e..0f73f1f 100644
--- a/drm/DrmDevice.cpp
+++ b/drm/DrmDevice.cpp
@@ -18,7 +18,6 @@
#include "DrmDevice.h"
-#include <fcntl.h>
#include <xf86drm.h>
#include <xf86drmMode.h>
@@ -28,12 +27,29 @@
#include "drm/DrmAtomicStateManager.h"
#include "drm/DrmPlane.h"
+#include "drm/ResourceManager.h"
#include "utils/log.h"
#include "utils/properties.h"
namespace android {
-DrmDevice::DrmDevice() {
+auto DrmDevice::CreateInstance(std::string const &path,
+ ResourceManager *res_man)
+ -> std::unique_ptr<DrmDevice> {
+ if (!IsKMSDev(path.c_str())) {
+ return {};
+ }
+
+ auto device = std::unique_ptr<DrmDevice>(new DrmDevice(res_man));
+
+ if (device->Init(path.c_str()) != 0) {
+ return {};
+ }
+
+ return device;
+}
+
+DrmDevice::DrmDevice(ResourceManager *res_man) : res_man_(res_man) {
drm_fb_importer_ = std::make_unique<DrmFbImporter>(*this);
}