diff --git a/AVQt/output/OpenGLRenderer.cpp b/AVQt/output/OpenGLRenderer.cpp
index 7b540e411f387d0cdd684a124e42130c93293659..d385ff31ed4a8d434a8fc675383a712905ac27ab 100644
--- a/AVQt/output/OpenGLRenderer.cpp
+++ b/AVQt/output/OpenGLRenderer.cpp
@@ -111,7 +111,15 @@ namespace AVQt {
     }
 
     int OpenGLRenderer::deinit(IFrameSource *source) {
-        Q_UNUSED(source)
+        Q_D(AVQt::OpenGLRenderer);
+        stop(source);
+
+        if (d->m_pQSVDerivedDeviceContext) {
+            av_buffer_unref(&d->m_pQSVDerivedFramesContext);
+            av_buffer_unref(&d->m_pQSVDerivedDeviceContext);
+        }
+
+        delete d->m_clock;
 
         return 0;
     }
@@ -142,7 +150,13 @@ namespace AVQt {
         if (d->m_running.compare_exchange_strong(shouldBeCurrent, false)) {
             hide();
 
-            d->m_clock->stop();
+            if (d->m_currentFrame) {
+                av_frame_free(&d->m_currentFrame);
+            }
+
+            if (d->m_clock) {
+                d->m_clock->stop();
+            }
 
             {
                 QMutexLocker lock(&d->m_renderQueueMutex);
@@ -162,18 +176,15 @@ namespace AVQt {
             d->m_vbo.destroy();
             d->m_vao.destroy();
 
-//                d->m_yTexture->destroy();
             delete d->m_yTexture;
-
-
-//                d->m_uTexture->destroy();
             delete d->m_uTexture;
-
-
-
-//                d->m_yTexture->destroy();
             delete d->m_vTexture;
 
+            if (d->m_EGLImages[0]) {
+                for (auto &EGLImage : d->m_EGLImages) {
+                    eglDestroyImage(d->m_EGLDisplay, EGLImage);
+                }
+            }
 
             stopped();
             return 0;
@@ -907,8 +918,9 @@ namespace AVQt {
         return d->m_clock;
     }
 
-    GLint OpenGLRendererPrivate::project(GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble model[16], const GLdouble proj[16],
-                                         const GLint viewport[4], GLdouble *winx, GLdouble *winy, GLdouble *winz) {
+    [[maybe_unused]] GLint
+    OpenGLRendererPrivate::project(GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble model[16], const GLdouble proj[16],
+                                   const GLint viewport[4], GLdouble *winx, GLdouble *winy, GLdouble *winz) {
         GLdouble in[4], out[4];
 
         in[0] = objx;
diff --git a/AVQt/output/private/OpenGLRenderer_p.h b/AVQt/output/private/OpenGLRenderer_p.h
index 3b4dec3b571ec45feab477631a3091e65789cdc4..dfb8f8679e8c6b7c55dd0f6324870b7bbd7ae7f0 100644
--- a/AVQt/output/private/OpenGLRenderer_p.h
+++ b/AVQt/output/private/OpenGLRenderer_p.h
@@ -45,7 +45,7 @@ namespace AVQt {
     private:
         explicit OpenGLRendererPrivate(OpenGLRenderer *q) : q_ptr(q) {};
 
-        static GLint
+        [[maybe_unused]] static GLint
         project(GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble model[16], const GLdouble[16], const GLint viewport[4],
                 GLdouble *winx, GLdouble *winy, GLdouble *winz);
 
@@ -87,8 +87,6 @@ namespace AVQt {
         VADisplay m_VADisplay{nullptr};
         AVVAAPIDeviceContext *m_pVAContext{nullptr};
         EGLDisplay m_EGLDisplay{nullptr};
-        EGLSurface m_EGLSurface{nullptr};
-        EGLContext m_EGLContext{nullptr};
         EGLImage m_EGLImages[2]{};
         GLuint m_textures[2]{};