From 082f10c9eb12972efb7f194e49eb2b11928e1337 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 14 May 2019 20:42:01 +0200 Subject: QOpenGLWindow example: use std::unique_ptr instead of QScopedPointer QScopedPointer is scheduled for deprecation, and can't decide whether it wants to be a scoped, or a unique pointer. The use of a unique_ptr members requires that the destructor be out-of-line, since the payload classes are only forward-declared in the header file. Change-Id: Id0dcdde52cb3adc30d3051d2eed1d24c76154921 Reviewed-by: Edward Welbourne --- examples/opengl/qopenglwindow/background_renderer.cpp | 11 +++++++---- examples/opengl/qopenglwindow/background_renderer.h | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) (limited to 'examples') diff --git a/examples/opengl/qopenglwindow/background_renderer.cpp b/examples/opengl/qopenglwindow/background_renderer.cpp index 9da1b9bf99..acbbe74841 100644 --- a/examples/opengl/qopenglwindow/background_renderer.cpp +++ b/examples/opengl/qopenglwindow/background_renderer.cpp @@ -91,6 +91,9 @@ FragmentToy::FragmentToy(const QString &fragmentSource, QObject *parent) } } +FragmentToy::~FragmentToy() + = default; + void FragmentToy::draw(const QSize &windowSize) { if (!m_program) @@ -120,7 +123,7 @@ void FragmentToy::draw(const QSize &windowSize) if (!m_vertex_shader->compileSourceCode(vertex_shader)) { qWarning() << "Failed to compile the vertex shader:" << m_vertex_shader->log(); } - if (!m_program->addShader(m_vertex_shader.data())) { + if (!m_program->addShader(m_vertex_shader.get())) { qWarning() << "Failed to add vertex shader to program:" << m_program->log(); } } @@ -153,7 +156,7 @@ void FragmentToy::draw(const QSize &windowSize) } if (m_fragment_shader) { - if (!m_program->addShader(m_fragment_shader.data())) { + if (!m_program->addShader(m_fragment_shader.get())) { qWarning() << "Failed to add fragment shader to program:" << m_program->log(); } } @@ -197,14 +200,14 @@ void FragmentToy::fileChanged(const QString &path) m_fragment_file_last_modified = fragment_source.lastModified(); m_recompile_shaders = true; if (m_program) { - m_program->removeShader(m_fragment_shader.data()); + m_program->removeShader(m_fragment_shader.get()); m_fragment_shader.reset(nullptr); } } } else { m_recompile_shaders = true; if (m_program) { - m_program->removeShader(m_fragment_shader.data()); + m_program->removeShader(m_fragment_shader.get()); m_fragment_shader.reset(nullptr); } } diff --git a/examples/opengl/qopenglwindow/background_renderer.h b/examples/opengl/qopenglwindow/background_renderer.h index d99b7ddbeb..0e3caf5981 100644 --- a/examples/opengl/qopenglwindow/background_renderer.h +++ b/examples/opengl/qopenglwindow/background_renderer.h @@ -62,11 +62,14 @@ #include #include +#include + class FragmentToy : public QObject, protected QOpenGLFunctions { Q_OBJECT public: - FragmentToy(const QString &fragmentSource, QObject *parent = 0); + explicit FragmentToy(const QString &fragmentSource, QObject *parent = nullptr); + ~FragmentToy(); void draw(const QSize &windowSize); @@ -79,9 +82,9 @@ private: QString m_fragment_file; QDateTime m_fragment_file_last_modified; - QScopedPointer m_program; - QScopedPointer m_vertex_shader; - QScopedPointer m_fragment_shader; + std::unique_ptr m_program; + std::unique_ptr m_vertex_shader; + std::unique_ptr m_fragment_shader; QOpenGLVertexArrayObject m_vao; QOpenGLBuffer m_vertex_buffer; GLuint m_vertex_coord_pos; -- cgit v1.2.3