diff --git a/drmcompositorworker.h b/drmcompositorworker.h
index 9f74fb6..00e14ee 100644
--- a/drmcompositorworker.h
+++ b/drmcompositorworker.h
@@ -26,12 +26,12 @@
 class DrmCompositorWorker : public Worker {
  public:
   DrmCompositorWorker(DrmDisplayCompositor *compositor);
-  ~DrmCompositorWorker();
+  ~DrmCompositorWorker() override;
 
   int Init();
 
  protected:
-  virtual void Routine();
+  void Routine() override;
 
   DrmDisplayCompositor *compositor_;
 };
diff --git a/drmdisplaycompositor.h b/drmdisplaycompositor.h
index c1b4bcd..e756fde 100644
--- a/drmdisplaycompositor.h
+++ b/drmdisplaycompositor.h
@@ -108,14 +108,14 @@
   class FrameWorker : public Worker {
    public:
     FrameWorker(DrmDisplayCompositor *compositor);
-    ~FrameWorker();
+    ~FrameWorker() override;
 
     int Init();
     void QueueFrame(std::unique_ptr<DrmDisplayComposition> composition,
                     int status);
 
    protected:
-    virtual void Routine();
+    void Routine() override;
 
    private:
     DrmDisplayCompositor *compositor_;
diff --git a/drmgenericimporter.h b/drmgenericimporter.h
index d509ed8..c362c17 100644
--- a/drmgenericimporter.h
+++ b/drmgenericimporter.h
@@ -27,12 +27,12 @@
 class DrmGenericImporter : public Importer {
  public:
   DrmGenericImporter(DrmResources *drm);
-  virtual ~DrmGenericImporter();
+  ~DrmGenericImporter() override;
 
   int Init();
 
-  virtual int ImportBuffer(buffer_handle_t handle, hwc_drm_bo_t *bo);
-  virtual int ReleaseBuffer(hwc_drm_bo_t *bo);
+  int ImportBuffer(buffer_handle_t handle, hwc_drm_bo_t *bo) override;
+  int ReleaseBuffer(hwc_drm_bo_t *bo) override;
 
  private:
   uint32_t ConvertHalFormatToDrm(uint32_t hal_format);
diff --git a/drmhwcgralloc.h b/drmhwcgralloc.h
index 880c8a4..765c897 100644
--- a/drmhwcgralloc.h
+++ b/drmhwcgralloc.h
@@ -64,4 +64,4 @@
   void *priv;
 } hwc_drm_bo_t;
 
-#endif // ANDROID_DRMHWCGRALLOC_H_
+#endif  // ANDROID_DRMHWCGRALLOC_H_
diff --git a/nvimporter.cpp b/nvimporter.cpp
index 71b3b7f..d5c3abc 100644
--- a/nvimporter.cpp
+++ b/nvimporter.cpp
@@ -161,8 +161,8 @@
       ALOGE("Failed to close gem handle %d %d", i, ret);
     } else {
       /* Clear any duplicate gem handle as well but don't close again */
-      for(int j = i + 1; j < num_gem_handles; j++)
-        if(bo->gem_handles[j] == bo->gem_handles[i])
+      for (int j = i + 1; j < num_gem_handles; j++)
+        if (bo->gem_handles[j] == bo->gem_handles[i])
           bo->gem_handles[j] = 0;
       bo->gem_handles[i] = 0;
     }
diff --git a/nvimporter.h b/nvimporter.h
index a07f577..d6033db 100644
--- a/nvimporter.h
+++ b/nvimporter.h
@@ -29,12 +29,12 @@
 class NvImporter : public Importer {
  public:
   NvImporter(DrmResources *drm);
-  virtual ~NvImporter();
+  ~NvImporter() override;
 
   int Init();
 
-  virtual int ImportBuffer(buffer_handle_t handle, hwc_drm_bo_t *bo);
-  virtual int ReleaseBuffer(hwc_drm_bo_t *bo);
+  int ImportBuffer(buffer_handle_t handle, hwc_drm_bo_t *bo) override;
+  int ReleaseBuffer(hwc_drm_bo_t *bo) override;
 
  private:
   typedef struct NvBuffer {
diff --git a/virtualcompositorworker.cpp b/virtualcompositorworker.cpp
index e7acef0..ea46461 100644
--- a/virtualcompositorworker.cpp
+++ b/virtualcompositorworker.cpp
@@ -35,10 +35,10 @@
 static const int kAcquireWaitTimeoutMs = 50;
 
 VirtualCompositorWorker::VirtualCompositorWorker()
-    : Worker("virtual-compositor", HAL_PRIORITY_URGENT_DISPLAY)
-    , timeline_fd_(-1)
-    , timeline_(0)
-    , timeline_current_(0) {
+    : Worker("virtual-compositor", HAL_PRIORITY_URGENT_DISPLAY),
+      timeline_fd_(-1),
+      timeline_(0),
+      timeline_current_(0) {
 }
 
 VirtualCompositorWorker::~VirtualCompositorWorker() {
diff --git a/virtualcompositorworker.h b/virtualcompositorworker.h
index 4a15f0c..3066547 100644
--- a/virtualcompositorworker.h
+++ b/virtualcompositorworker.h
@@ -27,13 +27,13 @@
 class VirtualCompositorWorker : public Worker {
  public:
   VirtualCompositorWorker();
-  ~VirtualCompositorWorker();
+  ~VirtualCompositorWorker() override;
 
   int Init();
   void QueueComposite(hwc_display_contents_1_t *dc);
 
  protected:
-  virtual void Routine();
+  void Routine() override;
 
  private:
   struct VirtualComposition {
diff --git a/vsyncworker.h b/vsyncworker.h
index ce7b94a..98ac546 100644
--- a/vsyncworker.h
+++ b/vsyncworker.h
@@ -31,7 +31,7 @@
 class VSyncWorker : public Worker {
  public:
   VSyncWorker();
-  ~VSyncWorker();
+  ~VSyncWorker() override;
 
   int Init(DrmResources *drm, int display);
   int SetProcs(hwc_procs_t const *procs);
@@ -39,7 +39,7 @@
   int VSyncControl(bool enabled);
 
  protected:
-  virtual void Routine();
+  void Routine() override;
 
  private:
   int64_t GetPhasedVSync(int64_t frame_ns, int64_t current);
