camera: libcbm: Do not destruct static CameraBufferManager

go/totw/110

BUG=b:167679596
TEST=None

Change-Id: I127cca713e151638e5c7c2d03504c39672337f7a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2485987
Reviewed-by: Shik Chen <shik@chromium.org>
Commit-Queue: Ren-Pei Zeng <kamesan@chromium.org>
Tested-by: Ren-Pei Zeng <kamesan@chromium.org>
diff --git a/camera/common/camera_buffer_manager_impl.cc b/camera/common/camera_buffer_manager_impl.cc
index cd5a8a0..619f5a3 100644
--- a/camera/common/camera_buffer_manager_impl.cc
+++ b/camera/common/camera_buffer_manager_impl.cc
@@ -11,6 +11,7 @@
 #include <linux/videodev2.h>
 #include <sys/mman.h>
 
+#include <base/no_destructor.h>
 #include <drm_fourcc.h>
 #include <hardware/gralloc.h>
 #include <system/graphics.h>
@@ -63,12 +64,12 @@
 
 // static
 CameraBufferManager* CameraBufferManager::GetInstance() {
-  static CameraBufferManagerImpl instance;
-  if (!instance.gbm_device_) {
+  static base::NoDestructor<CameraBufferManagerImpl> instance;
+  if (!instance->gbm_device_) {
     LOGF(ERROR) << "Failed to create GBM device for CameraBufferManager";
     return nullptr;
   }
-  return &instance;
+  return instance.get();
 }
 
 // static