libkwineffects: use std::unique_ptr in GLTexture

The implicit internal sharing stuff wasn't used in KWin, and the way the
d pointer was initialized was horrible
This commit is contained in:
Xaver Hugl 2023-05-15 01:19:24 +02:00
parent 3eb5f18861
commit bfc8bcb24a
5 changed files with 6 additions and 27 deletions

View file

@ -418,7 +418,7 @@ void EglSurfaceTextureX11::update(const QRegion &region)
} }
EglPixmapTexture::EglPixmapTexture(EglBackend *backend) EglPixmapTexture::EglPixmapTexture(EglBackend *backend)
: GLTexture(*new EglPixmapTexturePrivate(this, backend)) : GLTexture(std::make_unique<EglPixmapTexturePrivate>(this, backend))
{ {
} }

View file

@ -871,7 +871,7 @@ void GlxSurfaceTextureX11::update(const QRegion &region)
} }
GlxPixmapTexture::GlxPixmapTexture(GlxBackend *backend) GlxPixmapTexture::GlxPixmapTexture(GlxBackend *backend)
: GLTexture(*new GlxPixmapTexturePrivate(this, backend)) : GLTexture(std::make_unique<GlxPixmapTexturePrivate>(this, backend))
{ {
} }

View file

@ -89,13 +89,8 @@ GLTexture::GLTexture(GLenum target)
d->m_target = target; d->m_target = target;
} }
GLTexture::GLTexture(GLTexturePrivate &dd) GLTexture::GLTexture(std::unique_ptr<GLTexturePrivate> &&dd)
: d_ptr(&dd) : d_ptr(std::move(dd))
{
}
GLTexture::GLTexture(const GLTexture &tex)
: d_ptr(tex.d_ptr)
{ {
} }
@ -271,12 +266,6 @@ bool GLTexture::create()
return d->m_texture != GL_NONE; return d->m_texture != GL_NONE;
} }
GLTexture &GLTexture::operator=(const GLTexture &tex)
{
d_ptr = tex.d_ptr;
return *this;
}
GLTexturePrivate::GLTexturePrivate() GLTexturePrivate::GLTexturePrivate()
: m_texture(0) : m_texture(0)
, m_target(0) , m_target(0)
@ -437,11 +426,6 @@ void GLTexture::update(const QImage &image, const QPoint &offset, const QRect &s
} }
} }
void GLTexture::discard()
{
d_ptr = new GLTexturePrivate();
}
void GLTexture::bind() void GLTexture::bind()
{ {
Q_D(GLTexture); Q_D(GLTexture);

View file

@ -49,7 +49,6 @@ class KWINGLUTILS_EXPORT GLTexture
{ {
public: public:
explicit GLTexture(GLenum target); explicit GLTexture(GLenum target);
GLTexture(const GLTexture &tex);
explicit GLTexture(const QImage &image, GLenum target = GL_TEXTURE_2D); explicit GLTexture(const QImage &image, GLenum target = GL_TEXTURE_2D);
explicit GLTexture(const QPixmap &pixmap, GLenum target = GL_TEXTURE_2D); explicit GLTexture(const QPixmap &pixmap, GLenum target = GL_TEXTURE_2D);
explicit GLTexture(const QString &fileName); explicit GLTexture(const QString &fileName);
@ -71,8 +70,6 @@ public:
explicit GLTexture(GLuint textureId, GLenum internalFormat, const QSize &size, int levels = 1); explicit GLTexture(GLuint textureId, GLenum internalFormat, const QSize &size, int levels = 1);
virtual ~GLTexture(); virtual ~GLTexture();
GLTexture &operator=(const GLTexture &tex);
bool isNull() const; bool isNull() const;
QSize size() const; QSize size() const;
void setSize(const QSize &size); void setSize(const QSize &size);
@ -114,7 +111,6 @@ public:
QMatrix4x4 matrix(TextureCoordinateType type) const; QMatrix4x4 matrix(TextureCoordinateType type) const;
void update(const QImage &image, const QPoint &offset = QPoint(0, 0), const QRect &src = QRect()); void update(const QImage &image, const QPoint &offset = QPoint(0, 0), const QRect &src = QRect());
virtual void discard();
void bind(); void bind();
void unbind(); void unbind();
void render(const QSizeF &size, double scale); void render(const QSizeF &size, double scale);
@ -163,8 +159,8 @@ public:
static bool supportsFormatRG(); static bool supportsFormatRG();
protected: protected:
QExplicitlySharedDataPointer<GLTexturePrivate> d_ptr; const std::unique_ptr<GLTexturePrivate> d_ptr;
GLTexture(GLTexturePrivate &dd); GLTexture(std::unique_ptr<GLTexturePrivate> &&dd);
private: private:
Q_DECLARE_PRIVATE(GLTexture) Q_DECLARE_PRIVATE(GLTexture)

View file

@ -466,7 +466,6 @@ void ContrastEffect::doContrast(const RenderTarget &renderTarget, const RenderVi
vbo->draw(GL_TRIANGLES, 0, actualShape.rectCount() * 6); vbo->draw(GL_TRIANGLES, 0, actualShape.rectCount() * 6);
scratch.unbind(); scratch.unbind();
scratch.discard();
vbo->unbindArrays(); vbo->unbindArrays();