diff options
author | Tao Bao <tbao@google.com> | 2018-10-25 01:50:55 +0200 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-10-25 01:50:55 +0200 |
commit | b420e60596a7c675724026c16d9b0599dc5b0ede (patch) | |
tree | d9f15aa1ab79d6937523e40384fa2b50e65b529d /minui/graphics_drm.h | |
parent | [automerger skipped] Merge pie-platform-release to aosp-master - DO NOT MERGE (diff) | |
parent | Merge "minui: Cleanup GRSurfaceDrm and MinuiBackendDrm." (diff) | |
download | android_bootable_recovery-b420e60596a7c675724026c16d9b0599dc5b0ede.tar android_bootable_recovery-b420e60596a7c675724026c16d9b0599dc5b0ede.tar.gz android_bootable_recovery-b420e60596a7c675724026c16d9b0599dc5b0ede.tar.bz2 android_bootable_recovery-b420e60596a7c675724026c16d9b0599dc5b0ede.tar.lz android_bootable_recovery-b420e60596a7c675724026c16d9b0599dc5b0ede.tar.xz android_bootable_recovery-b420e60596a7c675724026c16d9b0599dc5b0ede.tar.zst android_bootable_recovery-b420e60596a7c675724026c16d9b0599dc5b0ede.zip |
Diffstat (limited to 'minui/graphics_drm.h')
-rw-r--r-- | minui/graphics_drm.h | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/minui/graphics_drm.h b/minui/graphics_drm.h index f3aad6bfc..02db89f05 100644 --- a/minui/graphics_drm.h +++ b/minui/graphics_drm.h @@ -18,6 +18,9 @@ #include <stdint.h> +#include <memory> + +#include <android-base/macros.h> #include <xf86drmMode.h> #include "graphics.h" @@ -25,6 +28,12 @@ class GRSurfaceDrm : public GRSurface { public: + explicit GRSurfaceDrm(int drm_fd) : drm_fd_(drm_fd) {} + ~GRSurfaceDrm() override; + + // Creates a GRSurfaceDrm instance. + static std::unique_ptr<GRSurfaceDrm> Create(int drm_fd, int width, int height); + uint8_t* data() override { return mmapped_buffer_; } @@ -32,30 +41,33 @@ class GRSurfaceDrm : public GRSurface { private: friend class MinuiBackendDrm; - uint32_t fb_id; - uint32_t handle; + const int drm_fd_; + + uint32_t fb_id{ 0 }; + uint32_t handle{ 0 }; uint8_t* mmapped_buffer_{ nullptr }; + + DISALLOW_COPY_AND_ASSIGN(GRSurfaceDrm); }; class MinuiBackendDrm : public MinuiBackend { public: + MinuiBackendDrm() = default; + ~MinuiBackendDrm() override; + GRSurface* Init() override; GRSurface* Flip() override; void Blank(bool) override; - ~MinuiBackendDrm() override; - MinuiBackendDrm(); private: void DrmDisableCrtc(int drm_fd, drmModeCrtc* crtc); - int DrmEnableCrtc(int drm_fd, drmModeCrtc* crtc, GRSurfaceDrm* surface); - GRSurfaceDrm* DrmCreateSurface(int width, int height); - void DrmDestroySurface(GRSurfaceDrm* surface); + bool DrmEnableCrtc(int drm_fd, drmModeCrtc* crtc, const std::unique_ptr<GRSurfaceDrm>& surface); void DisableNonMainCrtcs(int fd, drmModeRes* resources, drmModeCrtc* main_crtc); drmModeConnector* FindMainMonitor(int fd, drmModeRes* resources, uint32_t* mode_index); - GRSurfaceDrm* GRSurfaceDrms[2]; - int current_buffer; - drmModeCrtc* main_monitor_crtc; - drmModeConnector* main_monitor_connector; - int drm_fd; + std::unique_ptr<GRSurfaceDrm> GRSurfaceDrms[2]; + int current_buffer{ 0 }; + drmModeCrtc* main_monitor_crtc{ nullptr }; + drmModeConnector* main_monitor_connector{ nullptr }; + int drm_fd{ -1 }; }; |