Merge "minui: Use android::base::unique_fd in MinuiBackendFbdev."
diff --git a/minui/graphics_fbdev.cpp b/minui/graphics_fbdev.cpp
index 4da5613..93e4420 100644
--- a/minui/graphics_fbdev.cpp
+++ b/minui/graphics_fbdev.cpp
@@ -28,6 +28,8 @@
 
 #include <memory>
 
+#include <android-base/unique_fd.h>
+
 #include "minui/minui.h"
 
 std::unique_ptr<GRSurfaceFbdev> GRSurfaceFbdev::Create(int width, int height, int row_bytes,
@@ -54,7 +56,7 @@
 }
 
 GRSurface* MinuiBackendFbdev::Init() {
-  int fd = open("/dev/graphics/fb0", O_RDWR);
+  android::base::unique_fd fd(open("/dev/graphics/fb0", O_RDWR));
   if (fd == -1) {
     perror("cannot open fb0");
     return nullptr;
@@ -63,13 +65,11 @@
   fb_fix_screeninfo fi;
   if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) {
     perror("failed to get fb0 info");
-    close(fd);
     return nullptr;
   }
 
   if (ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) {
     perror("failed to get fb0 info");
-    close(fd);
     return nullptr;
   }
 
@@ -96,7 +96,6 @@
   void* bits = mmap(0, fi.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
   if (bits == MAP_FAILED) {
     perror("failed to mmap framebuffer");
-    close(fd);
     return nullptr;
   }
 
@@ -128,10 +127,10 @@
 
   gr_draw = gr_framebuffer[1].get();
   memset(gr_draw->buffer_, 0, gr_draw->height * gr_draw->row_bytes);
-  fb_fd = fd;
+  fb_fd = std::move(fd);
   SetDisplayedFramebuffer(0);
 
-  printf("framebuffer: %d (%d x %d)\n", fb_fd, gr_draw->width, gr_draw->height);
+  printf("framebuffer: %d (%d x %d)\n", fb_fd.get(), gr_draw->width, gr_draw->height);
 
   Blank(true);
   Blank(false);
@@ -151,9 +150,3 @@
   }
   return gr_draw;
 }
-
-MinuiBackendFbdev::~MinuiBackendFbdev() {
-  if (fb_fd != -1) {
-    close(fb_fd);
-  }
-}
diff --git a/minui/graphics_fbdev.h b/minui/graphics_fbdev.h
index 934e584..016ab88 100644
--- a/minui/graphics_fbdev.h
+++ b/minui/graphics_fbdev.h
@@ -22,6 +22,8 @@
 #include <memory>
 #include <vector>
 
+#include <android-base/unique_fd.h>
+
 #include "graphics.h"
 #include "minui/minui.h"
 
@@ -48,7 +50,7 @@
 class MinuiBackendFbdev : public MinuiBackend {
  public:
   MinuiBackendFbdev() = default;
-  ~MinuiBackendFbdev() override;
+  ~MinuiBackendFbdev() override = default;
 
   GRSurface* Init() override;
   GRSurface* Flip() override;
@@ -64,5 +66,5 @@
   std::vector<uint8_t> memory_buffer;
   size_t displayed_buffer{ 0 };
   fb_var_screeninfo vi;
-  int fb_fd{ -1 };
+  android::base::unique_fd fb_fd;
 };