From 8f859656afb81b87f21c727d6cb83c812e199b29 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Sat, 14 Sep 2019 09:51:51 -0400
Subject: [PATCH] Even more compiler handholding

---
 indra/llappearance/lltexturemanagerbridge.h |  2 +-
 indra/llcommon/llthread.cpp                 |  8 ------
 indra/llcommon/llthread.h                   |  2 +-
 indra/llrender/llgltexture.h                |  8 +++---
 indra/llrender/lltexture.cpp                |  5 ----
 indra/llrender/lltexture.h                  |  2 +-
 indra/llvfs/lllfsthread.h                   |  6 ++---
 indra/newview/llagentcamera.h               |  2 +-
 indra/newview/llfloaterbvhpreview.h         |  2 +-
 indra/newview/llfloaterimagepreview.h       |  4 +--
 indra/newview/llfloatermodelpreview.h       |  2 +-
 indra/newview/llhudeffectbeam.h             |  2 +-
 indra/newview/llhudeffectblob.h             |  2 +-
 indra/newview/llhudeffectlookat.h           |  2 +-
 indra/newview/llhudeffectpointat.h          |  2 +-
 indra/newview/llhudeffecttrail.h            |  2 +-
 indra/newview/llhudicon.h                   |  2 +-
 indra/newview/llhudnametag.h                |  2 +-
 indra/newview/llhudtext.h                   |  2 +-
 indra/newview/lltexturecache.cpp            | 14 +++++------
 indra/newview/lltexturecache.h              |  6 ++---
 indra/newview/lltexturefetch.cpp            | 21 ++++++++--------
 indra/newview/lltoolmorph.h                 |  4 +--
 indra/newview/llviewertexture.cpp           |  2 +-
 indra/newview/llviewertexture.h             | 28 ++++++++++-----------
 indra/newview/llviewertextureanim.h         |  2 +-
 indra/newview/llvoicevisualizer.h           |  2 +-
 27 files changed, 62 insertions(+), 76 deletions(-)

diff --git a/indra/llappearance/lltexturemanagerbridge.h b/indra/llappearance/lltexturemanagerbridge.h
index 101704b162..3c78618cc6 100644
--- a/indra/llappearance/lltexturemanagerbridge.h
+++ b/indra/llappearance/lltexturemanagerbridge.h
@@ -35,7 +35,7 @@
 class LLTextureManagerBridge
 {
 public:
-    virtual ~LLTextureManagerBridge() {}
+	virtual ~LLTextureManagerBridge() = default;
 
 	virtual LLPointer<LLGLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE) = 0;
 	virtual LLPointer<LLGLTexture> getLocalTexture(const U32 width, const U32 height, const U8 components, BOOL usemipmaps, BOOL generate_gl_tex = TRUE) = 0;
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
index 6b33d34aa4..baf3f6de35 100644
--- a/indra/llcommon/llthread.cpp
+++ b/indra/llcommon/llthread.cpp
@@ -381,11 +381,3 @@ LLThreadSafeRefCount::~LLThreadSafeRefCount()
 		LL_ERRS() << "deleting referenced object mRef = " << mRef << LL_ENDL;
     }
 }
-
-//============================================================================
-
-LLResponder::~LLResponder()
-{
-}
-
-//============================================================================
diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h
index b7da25a16a..dd1dc2253b 100644
--- a/indra/llcommon/llthread.h
+++ b/indra/llcommon/llthread.h
@@ -152,7 +152,7 @@ void LLThread::unlockData()
 class LL_COMMON_API LLResponder : public LLThreadSafeRefCount
 {
 protected:
-    virtual ~LLResponder();
+    virtual ~LLResponder() = default;
 public:
     virtual void completed(bool success) = 0;
 };
diff --git a/indra/llrender/llgltexture.h b/indra/llrender/llgltexture.h
index 694ba7b40d..202e888bc9 100644
--- a/indra/llrender/llgltexture.h
+++ b/indra/llrender/llgltexture.h
@@ -116,8 +116,8 @@ public:
 	//---------------------------------------------------------------------------------------------
 	//functions to access LLImageGL
 	//---------------------------------------------------------------------------------------------
-	/*virtual*/S32	       getWidth(S32 discard_level = -1) const override;
-	/*virtual*/S32	       getHeight(S32 discard_level = -1) const override;
+	/*virtual*/S32	       getWidth(S32 discard_level = -1) const final override;
+	/*virtual*/S32	       getHeight(S32 discard_level = -1) const final override;
 
 	BOOL       hasGLTexture() const ;
 	LLGLuint   getTexName() const ;		
@@ -155,7 +155,7 @@ public:
 	//---------------------------------------------------------------------------------------------
 
 	//-----------------
-	/*virtual*/ void setActive() override;
+	/*virtual*/ void setActive() final override;
 	void forceActive() ;
 	void setNoDelete() ;
 	void dontDiscard() { mDontDiscard = 1; mTextureState = NO_DELETE; }
@@ -176,7 +176,7 @@ protected:
 	void setTexelsPerImage();
 
 	//note: do not make this function public.
-	/*virtual*/ LLImageGL* getGLTexture() const override;
+	/*virtual*/ LLImageGL* getGLTexture() const final override;
 
 protected:
 	S32 mBoostLevel;				// enum describing priority level
diff --git a/indra/llrender/lltexture.cpp b/indra/llrender/lltexture.cpp
index 90fbcec2be..53282bf749 100644
--- a/indra/llrender/lltexture.cpp
+++ b/indra/llrender/lltexture.cpp
@@ -24,8 +24,3 @@
  */
 #include "linden_common.h"
 #include "lltexture.h"
-
-//virtual 
-LLTexture::~LLTexture()
-{
-}
diff --git a/indra/llrender/lltexture.h b/indra/llrender/lltexture.h
index 9fca8b8cd3..f449e22477 100644
--- a/indra/llrender/lltexture.h
+++ b/indra/llrender/lltexture.h
@@ -48,7 +48,7 @@ class LLTexture : public virtual LLRefCount, public LLTrace::MemTrackable<LLText
 	friend class LLFontGL ;
 
 protected:
-	virtual ~LLTexture();
+	virtual ~LLTexture() = default;
 
 public:
 	LLTexture()
diff --git a/indra/llvfs/lllfsthread.h b/indra/llvfs/lllfsthread.h
index 98efc86c07..76e965c4fe 100644
--- a/indra/llvfs/lllfsthread.h
+++ b/indra/llvfs/lllfsthread.h
@@ -89,9 +89,9 @@ public:
 			return mFileName;
 		}
 		
-		/*virtual*/ bool processRequest() override;
-		/*virtual*/ void finishRequest(bool completed) override;
-		/*virtual*/ void deleteRequest() override;
+		/*virtual*/ bool processRequest() final override;
+		/*virtual*/ void finishRequest(bool completed) final override;
+		/*virtual*/ void deleteRequest() final override;
 		
 	private:
 		LLLFSThread* mThread;
diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h
index a5603a9e68..1e08e4a493 100644
--- a/indra/newview/llagentcamera.h
+++ b/indra/newview/llagentcamera.h
@@ -79,7 +79,7 @@ public:
 	//--------------------------------------------------------------------
 public:
 	LLAgentCamera();
-	virtual 		~LLAgentCamera();
+	~LLAgentCamera();
 	void			init();
 	void			cleanup();
 	void		    setAvatarObject(LLVOAvatarSelf* avatar);
diff --git a/indra/newview/llfloaterbvhpreview.h b/indra/newview/llfloaterbvhpreview.h
index d882941bf9..6142e93bb6 100644
--- a/indra/newview/llfloaterbvhpreview.h
+++ b/indra/newview/llfloaterbvhpreview.h
@@ -37,7 +37,7 @@
 class LLVOAvatar;
 class LLViewerJointMesh;
 
-class LLPreviewAnimation : public LLViewerDynamicTexture
+class LLPreviewAnimation final : public LLViewerDynamicTexture
 {
 protected:
 	virtual ~LLPreviewAnimation();
diff --git a/indra/newview/llfloaterimagepreview.h b/indra/newview/llfloaterimagepreview.h
index 7b006fbab5..d1f5d7dfd2 100644
--- a/indra/newview/llfloaterimagepreview.h
+++ b/indra/newview/llfloaterimagepreview.h
@@ -39,7 +39,7 @@ class LLTextBox;
 class LLVertexBuffer;
 class LLVolume;
 
-class LLImagePreviewSculpted : public LLViewerDynamicTexture
+class LLImagePreviewSculpted final : public LLViewerDynamicTexture
 {
 protected:
 	virtual ~LLImagePreviewSculpted();
@@ -72,7 +72,7 @@ protected:
 };
 
 
-class LLImagePreviewAvatar : public LLViewerDynamicTexture
+class LLImagePreviewAvatar final : public LLViewerDynamicTexture
 {
 protected:
 	virtual ~LLImagePreviewAvatar();
diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h
index 4c276e666f..3f5c572487 100644
--- a/indra/newview/llfloatermodelpreview.h
+++ b/indra/newview/llfloatermodelpreview.h
@@ -230,7 +230,7 @@ private:
 };
 
 
-class LLModelPreview : public LLViewerDynamicTexture, public LLMutex
+class LLModelPreview final : public LLViewerDynamicTexture, public LLMutex
 {	
 	typedef boost::signals2::signal<void (F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost)> details_signal_t;
 	typedef boost::signals2::signal<void (void)> model_loaded_signal_t;
diff --git a/indra/newview/llhudeffectbeam.h b/indra/newview/llhudeffectbeam.h
index b6ccbdcd5a..d62c22035d 100644
--- a/indra/newview/llhudeffectbeam.h
+++ b/indra/newview/llhudeffectbeam.h
@@ -37,7 +37,7 @@ class LLViewerObject;
 
 const S32 NUM_POINTS = 5;
 
-class LLHUDEffectBeam : public LLHUDEffect
+class LLHUDEffectBeam final : public LLHUDEffect
 {
 public:
 	/*virtual*/ void setSourceObject(LLViewerObject *objp) final override;
diff --git a/indra/newview/llhudeffectblob.h b/indra/newview/llhudeffectblob.h
index 9217043cd0..e0f252293c 100644
--- a/indra/newview/llhudeffectblob.h
+++ b/indra/newview/llhudeffectblob.h
@@ -30,7 +30,7 @@
 #include "llhudeffect.h"
 #include "lluiimage.h"
 
-class LLHUDEffectBlob : public LLHUDEffect
+class LLHUDEffectBlob final : public LLHUDEffect
 {
 public:
 	friend class LLHUDObject;
diff --git a/indra/newview/llhudeffectlookat.h b/indra/newview/llhudeffectlookat.h
index 651547544c..8118e6d58d 100644
--- a/indra/newview/llhudeffectlookat.h
+++ b/indra/newview/llhudeffectlookat.h
@@ -50,7 +50,7 @@ typedef enum e_lookat_type
 	LOOKAT_NUM_TARGETS
 } ELookAtType;
 
-class LLHUDEffectLookAt : public LLHUDEffect
+class LLHUDEffectLookAt final : public LLHUDEffect
 {
 public:
 	friend class LLHUDObject;
diff --git a/indra/newview/llhudeffectpointat.h b/indra/newview/llhudeffectpointat.h
index 787000d64e..1f1178944a 100644
--- a/indra/newview/llhudeffectpointat.h
+++ b/indra/newview/llhudeffectpointat.h
@@ -42,7 +42,7 @@ typedef enum e_pointat_type
 	POINTAT_NUM_TARGETS
 } EPointAtType;
 
-class LLHUDEffectPointAt : public LLHUDEffect
+class LLHUDEffectPointAt final : public LLHUDEffect
 {
 public:
 	friend class LLHUDObject;
diff --git a/indra/newview/llhudeffecttrail.h b/indra/newview/llhudeffecttrail.h
index 9ecebc2498..ee742d5c9a 100644
--- a/indra/newview/llhudeffecttrail.h
+++ b/indra/newview/llhudeffecttrail.h
@@ -39,7 +39,7 @@ class LLViewerObject;
 constexpr U32 NUM_TRAIL_POINTS = 40;
 
 
-class LLHUDEffectSpiral : public LLHUDEffect
+class LLHUDEffectSpiral final : public LLHUDEffect
 {
 public:
 	/*virtual*/ void markDead() final override;
diff --git a/indra/newview/llhudicon.h b/indra/newview/llhudicon.h
index 25da0b1fc9..939a0697f3 100644
--- a/indra/newview/llhudicon.h
+++ b/indra/newview/llhudicon.h
@@ -41,7 +41,7 @@
 // Renders a 2D icon billboard floating at the location specified.
 class LLViewerTexture;
 
-class LLHUDIcon : public LLHUDObject
+class LLHUDIcon final : public LLHUDObject
 {
 friend class LLHUDObject;
 
diff --git a/indra/newview/llhudnametag.h b/indra/newview/llhudnametag.h
index 7c3a5ded70..d7f425e0ad 100644
--- a/indra/newview/llhudnametag.h
+++ b/indra/newview/llhudnametag.h
@@ -48,7 +48,7 @@ struct llhudnametag_further_away
 	bool operator()(const LLPointer<LLHUDNameTag>& lhs, const LLPointer<LLHUDNameTag>& rhs) const;
 };
 
-class LLHUDNameTag : public LLHUDObject
+class LLHUDNameTag final : public LLHUDObject
 {
 protected:
 	class LLHUDTextSegment
diff --git a/indra/newview/llhudtext.h b/indra/newview/llhudtext.h
index d6c2873c94..023c1ef4b6 100644
--- a/indra/newview/llhudtext.h
+++ b/indra/newview/llhudtext.h
@@ -46,7 +46,7 @@ struct lltextobject_further_away
 	bool operator()(const LLPointer<LLHUDText>& lhs, const LLPointer<LLHUDText>& rhs) const;
 };
 
-class LLHUDText : public LLHUDObject
+class LLHUDText final : public LLHUDObject
 {
 protected:
 	class LLHUDTextSegment
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 4112ef1592..55f9efe3f1 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -59,7 +59,7 @@ class LLTextureCacheWorker : public LLWorkerClass
 	friend class LLTextureCache;
 
 private:
-	class ReadResponder : public LLLFSThread::Responder
+	class ReadResponder final : public LLLFSThread::Responder
 	{
 	public:
 		ReadResponder(LLTextureCache* cache, handle_t handle) : mCache(cache), mHandle(handle) {}
@@ -75,7 +75,7 @@ private:
 		LLTextureCacheWorker::handle_t mHandle;
 	};
 
-	class WriteResponder : public LLLFSThread::Responder
+	class WriteResponder final : public LLLFSThread::Responder
 	{
 	public:
 		WriteResponder(LLTextureCache* cache, handle_t handle) : mCache(cache), mHandle(handle) {}
@@ -136,9 +136,9 @@ public:
 	}
 
 private:
-    void startWork(S32 param) override; // called from addWork() (MAIN THREAD)
-    void finishWork(S32 param, bool completed) override; // called from finishRequest() (WORK THREAD)
-    void endWork(S32 param, bool aborted) override; // called from doWork() (MAIN THREAD)
+    void startWork(S32 param) final override; // called from addWork() (MAIN THREAD)
+    void finishWork(S32 param, bool completed) final override; // called from finishRequest() (WORK THREAD)
+    void endWork(S32 param, bool aborted) final override; // called from doWork() (MAIN THREAD)
 
 protected:
 	LLTextureCache* mCache;
@@ -158,7 +158,7 @@ protected:
 	LLAtomicS32 mBytesRead;
 };
 
-class LLTextureCacheLocalFileWorker : public LLTextureCacheWorker
+class LLTextureCacheLocalFileWorker final : public LLTextureCacheWorker
 {
 public:
 	LLTextureCacheLocalFileWorker(LLTextureCache* cache, U32 priority, const std::string& filename, const LLUUID& id,
@@ -280,7 +280,7 @@ bool LLTextureCacheLocalFileWorker::doWrite()
 	return false;
 }
 
-class LLTextureCacheRemoteWorker : public LLTextureCacheWorker
+class LLTextureCacheRemoteWorker final : public LLTextureCacheWorker
 {
 public:
 	LLTextureCacheRemoteWorker(LLTextureCache* cache, U32 priority, const LLUUID& id,
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index 7ef9612f81..9b6ec7b313 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -36,7 +36,7 @@ class LLImageFormatted;
 class LLTextureCacheWorker;
 class LLImageRaw;
 
-class LLTextureCache : public LLWorkerThread
+class LLTextureCache final : public LLWorkerThread
 {
 	friend class LLTextureCacheWorker;
 	friend class LLTextureCacheRemoteWorker;
@@ -83,7 +83,7 @@ public:
 	{
 	public:
 		ReadResponder();
-		void setData(U8* data, S32 datasize, S32 imagesize, S32 imageformat, BOOL imagelocal) override;
+		void setData(U8* data, S32 datasize, S32 imagesize, S32 imageformat, BOOL imagelocal) final override;
 		void setImage(LLImageFormatted* image) { mFormattedImage = image; }
 	protected:
 		LLPointer<LLImageFormatted> mFormattedImage;
@@ -93,7 +93,7 @@ public:
 
 	class WriteResponder : public Responder
 	{
-		void setData(U8* data, S32 datasize, S32 imagesize, S32 imageformat, BOOL imagelocal) override
+		void setData(U8* data, S32 datasize, S32 imagesize, S32 imageformat, BOOL imagelocal) final override
 		{
 			// not used
 		}
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 15348ae7dd..2f1681b532 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -295,7 +295,7 @@ class LLTextureFetchWorker : public LLWorkerClass, public LLCore::HttpHandler
 	friend class LLTextureFetchDebugger;
 	
 private:
-	class CacheReadResponder : public LLTextureCache::ReadResponder
+	class CacheReadResponder final : public LLTextureCache::ReadResponder
 	{
 	public:
 
@@ -320,7 +320,7 @@ private:
 		LLUUID mID;
 	};
 
-	class CacheWriteResponder : public LLTextureCache::WriteResponder
+	class CacheWriteResponder final : public LLTextureCache::WriteResponder
 	{
 	public:
 
@@ -344,7 +344,7 @@ private:
 		LLUUID mID;
 	};
 	
-	class DecodeResponder : public LLImageDecodeThread::Responder
+	class DecodeResponder final : public LLImageDecodeThread::Responder
 	{
 	public:
 
@@ -747,8 +747,7 @@ class LLTextureFetch::TFRequest // : public LLQueuedThread::QueuedRequest
 public:
 	// Default ctors and assignment operator are correct.
 
-	virtual ~TFRequest()
-		{}
+	virtual ~TFRequest() = default;
 
 	// Patterned after QueuedRequest's method but expected behavior
 	// is different.  Always expected to complete on the first call
@@ -771,7 +770,7 @@ namespace
  *
  * Corresponds to LLTextureFetch::commandSetRegion()
  */
-class TFReqSetRegion : public LLTextureFetch::TFRequest
+class TFReqSetRegion final : public LLTextureFetch::TFRequest
 {
 public:
 	TFReqSetRegion(U64 region_handle)
@@ -804,7 +803,7 @@ public:
  *
  * Corresponds to LLTextureFetch::commandSendMetrics()
  */
-class TFReqSendMetrics : public LLTextureFetch::TFRequest
+class TFReqSendMetrics final : public LLTextureFetch::TFRequest
 {
 public:
     /**
@@ -3977,7 +3976,7 @@ namespace
 // a Responder that tried harder to detect delivery breaks
 // but it really isn't that important.  If someone wants to
 // revisit that effort, here is a place to start.
-class AssetReportHandler : public LLCore::HttpHandler
+class AssetReportHandler final : public LLCore::HttpHandler
 {
 public:
 
@@ -4145,7 +4144,7 @@ truncate_viewer_metrics(int max_regions, LLSD & metrics)
 //Start LLTextureFetchDebugger
 ///////////////////////////////////////////////////////////////////////////////////////////
 //---------------------
-class LLDebuggerCacheReadResponder : public LLTextureCache::ReadResponder
+class LLDebuggerCacheReadResponder final : public LLTextureCache::ReadResponder
 {
 public:
 	LLDebuggerCacheReadResponder(LLTextureFetchDebugger* debugger, S32 id, LLImageFormatted* image)
@@ -4163,7 +4162,7 @@ private:
 	S32 mID;
 };
 
-class LLDebuggerCacheWriteResponder : public LLTextureCache::WriteResponder
+class LLDebuggerCacheWriteResponder final : public LLTextureCache::WriteResponder
 {
 public:
 	LLDebuggerCacheWriteResponder(LLTextureFetchDebugger* debugger, S32 id)
@@ -4180,7 +4179,7 @@ private:
 	S32 mID;
 };
 
-class LLDebuggerDecodeResponder : public LLImageDecodeThread::Responder
+class LLDebuggerDecodeResponder final : public LLImageDecodeThread::Responder
 {
 public:
 	LLDebuggerDecodeResponder(LLTextureFetchDebugger* debugger, S32 id)
diff --git a/indra/newview/lltoolmorph.h b/indra/newview/lltoolmorph.h
index 62a5d7090f..f8e63bdbc9 100644
--- a/indra/newview/lltoolmorph.h
+++ b/indra/newview/lltoolmorph.h
@@ -46,7 +46,7 @@ class LLJoint;
 //-----------------------------------------------------------------------------
 // LLVisualParamHint
 //-----------------------------------------------------------------------------
-class LLVisualParamHint : public LLViewerDynamicTexture
+class LLVisualParamHint final : public LLViewerDynamicTexture
 {
 protected:
 	virtual ~LLVisualParamHint();
@@ -101,7 +101,7 @@ protected:
 };
 
 // this class resets avatar data at the end of an update cycle
-class LLVisualParamReset : public LLViewerDynamicTexture
+class LLVisualParamReset final : public LLViewerDynamicTexture
 {
 protected:
 	/*virtual */ ~LLVisualParamReset(){}
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index c8b5b7fa63..11b8f2c52b 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -343,7 +343,7 @@ LLViewerFetchedTexture* LLViewerTextureManager::getFetchedTextureFromHost(const
 }
 
 // Create a bridge to the viewer texture manager.
-class LLViewerTextureManagerBridge : public LLTextureManagerBridge
+class LLViewerTextureManagerBridge final : public LLTextureManagerBridge
 {
 	/*virtual*/ LLPointer<LLGLTexture> getLocalTexture(BOOL usemipmaps = TRUE, BOOL generate_gl_tex = TRUE) override
     {
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index 860490e0b0..6d41db7faa 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -121,12 +121,12 @@ public:
 	virtual BOOL isMissingAsset() const ;
 	void dump() override;	// debug info to LL_INFOS()
 	
-	/*virtual*/ bool bindDefaultImage(const S32 stage = 0) override;
-	/*virtual*/ bool bindDebugImage(const S32 stage = 0) override;
+	/*virtual*/ bool bindDefaultImage(const S32 stage = 0) final override;
+	/*virtual*/ bool bindDebugImage(const S32 stage = 0) final override;
 	/*virtual*/ void forceImmediateUpdate() override;
 	/*virtual*/ bool isActiveFetching() override;
 	
-	/*virtual*/ const LLUUID& getID() const override { return mID; }
+	/*virtual*/ const LLUUID& getID() const final override { return mID; }
 	void setBoostLevel(S32 level);
 	S32  getBoostLevel() { return mBoostLevel; }
 	void setTextureListType(S32 tex_type) { mTextureListType = tex_type; }
@@ -165,7 +165,7 @@ public:
 	BOOL hasParcelMedia() const { return mParcelMedia != nullptr;}
 	LLViewerMediaTexture* getParcelMedia() const { return mParcelMedia;}
 
-	/*virtual*/ void updateBindStatsForTester() override;
+	/*virtual*/ void updateBindStatsForTester() final override;
 protected:
 	void cleanup() ;
 	void init(bool firstinit) ;
@@ -304,8 +304,8 @@ public:
 public:
 	/*virtual*/ S8 getType() const override;
 	FTType getFTType() const;
-	/*virtual*/ void forceImmediateUpdate() override;
-	/*virtual*/ void dump() override;
+	/*virtual*/ void forceImmediateUpdate() final override;
+	/*virtual*/ void dump() final override;
 
 	// Set callbacks to get called when the image gets updated with higher 
 	// resolution versions.
@@ -361,10 +361,10 @@ public:
 	// Override the computation of discard levels if we know the exact output
 	// size of the image.  Used for UI textures to not decode, even if we have
 	// more data.
-	/*virtual*/ void setKnownDrawSize(S32 width, S32 height) override;
+	/*virtual*/ void setKnownDrawSize(S32 width, S32 height) final override;
 
 	void setIsMissingAsset(BOOL is_missing = true);
-	/*virtual*/ BOOL isMissingAsset() const override { return mIsMissingAsset; }
+	/*virtual*/ BOOL isMissingAsset() const final override { return mIsMissingAsset; }
 
 	// returns dimensions of original image for local files (before power of two scaling)
 	// and returns 0 for all asset system images
@@ -407,7 +407,7 @@ public:
 	BOOL        isRawImageValid()const { return mIsRawImageValid ; }	
 	void        forceToSaveRawImage(S32 desired_discard = 0, F32 kept_time = 0.f) ;
 	void        forceToRefetchTexture(S32 desired_discard = 0, F32 kept_time = 60.f);
-	/*virtual*/ void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) override;
+	/*virtual*/ void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) final override;
 	void        destroySavedRawImage() ;
 	LLImageRaw* getSavedRawImage() ;
 	BOOL        hasSavedRawImage() const ;
@@ -422,14 +422,14 @@ public:
 	void        setInFastCacheList(bool in_list) { mInFastCacheList = in_list; }
 	bool        isInFastCacheList() { return mInFastCacheList; }
 
-	/*virtual*/bool  isActiveFetching() override; //is actively in fetching by the fetching pipeline.
+	/*virtual*/bool  isActiveFetching() final override; //is actively in fetching by the fetching pipeline.
 	
 	LLUUID		getUploader();
 	LLDate		getUploadTime();
 	std::string getComment();
 
 protected:
-	/*virtual*/ void switchToCachedImage() override;
+	/*virtual*/ void switchToCachedImage() final override;
 	S32 getCurrentDiscardLevelForFetching() ;
 
 private:
@@ -537,7 +537,7 @@ public:
 //the image data is fetched from remote or from local cache
 //the resolution of the texture is adjustable: depends on the view-dependent parameters.
 //
-class LLViewerLODTexture : public LLViewerFetchedTexture
+class LLViewerLODTexture final : public LLViewerFetchedTexture
 {
 protected:
 	/*virtual*/ ~LLViewerLODTexture(){}
@@ -564,7 +564,7 @@ private:
 //the image data is fetched from the media pipeline periodically
 //the resolution of the texture is also adjusted by the media pipeline
 //
-class LLViewerMediaTexture : public LLViewerTexture
+class LLViewerMediaTexture final : public LLViewerTexture
 {
 protected:
 	/*virtual*/ ~LLViewerMediaTexture() ;
@@ -629,7 +629,7 @@ class LLViewerTextureManager
 {
 private:
 	//make the constructor private to preclude creating instances from this class.
-	LLViewerTextureManager(){}
+	LLViewerTextureManager() = delete;
 
 public:
     //texture pipeline tester
diff --git a/indra/newview/llviewertextureanim.h b/indra/newview/llviewertextureanim.h
index 73d74097c6..3e86fa2074 100644
--- a/indra/newview/llviewertextureanim.h
+++ b/indra/newview/llviewertextureanim.h
@@ -32,7 +32,7 @@
 
 class LLVOVolume;
 
-class LLViewerTextureAnim : public LLTextureAnim
+class LLViewerTextureAnim final : public LLTextureAnim
 {
 private:
 	static std::vector<LLViewerTextureAnim*> sInstanceList;
diff --git a/indra/newview/llvoicevisualizer.h b/indra/newview/llvoicevisualizer.h
index 7432bedacb..2420f09b15 100644
--- a/indra/newview/llvoicevisualizer.h
+++ b/indra/newview/llvoicevisualizer.h
@@ -65,7 +65,7 @@ const static int NUM_VOICE_SYMBOL_WAVES = 7;
 //----------------------------------------------------
 // LLVoiceVisualizer class 
 //----------------------------------------------------
-class LLVoiceVisualizer : public LLHUDEffect
+class LLVoiceVisualizer final : public LLHUDEffect
 {
 	//---------------------------------------------------
 	// public methods 
-- 
GitLab