diff --git a/src/abstractobject3d.cpp b/src/abstractobject3d.cpp index 147db70fdbad7d496f67f6e6498eec127b38bb38..75871bdcb5ac91c38f8d4f3c09388ebc26654147 100644 --- a/src/abstractobject3d.cpp +++ b/src/abstractobject3d.cpp @@ -42,7 +42,8 @@ QT_CANVAS3D_BEGIN_NAMESPACE * \internal */ CanvasAbstractObject::CanvasAbstractObject(QObject *parent) : - QObject(parent) + QObject(parent), + m_hasName(false) { m_name = QString("0x%1").arg((long long) this, 0, 16); } @@ -63,6 +64,7 @@ void CanvasAbstractObject::setName(const QString &name) return; m_name = name; + m_hasName = true; emit nameChanged(m_name); } @@ -75,4 +77,13 @@ const QString &CanvasAbstractObject::name() const return m_name; } +/*! + * \internal + */ +bool CanvasAbstractObject::hasSpecificName() const +{ + return m_hasName; +} + + QT_CANVAS3D_END_NAMESPACE diff --git a/src/abstractobject3d_p.h b/src/abstractobject3d_p.h index ff398360863813882b621226f292339416549735..27cda48c1c94436aee39c3c8ff674778eb9b0fd5 100644 --- a/src/abstractobject3d_p.h +++ b/src/abstractobject3d_p.h @@ -64,12 +64,14 @@ public: void setName(const QString &name); const QString &name() const; + bool hasSpecificName() const; signals: void nameChanged(const QString &name); private: QString m_name; + bool m_hasName; }; QT_CANVAS3D_END_NAMESPACE diff --git a/src/context3d.cpp b/src/context3d.cpp index 5fc0ffcdf55c4f970173408b8bb872566c8e90e7..8be26a3887f3649cc2189d6e906d70ec4fa12e86 100644 --- a/src/context3d.cpp +++ b/src/context3d.cpp @@ -1127,6 +1127,11 @@ void CanvasContext::texImage2D(glEnums target, int level, glEnums internalformat << ":INVALID_OPERATION Currently bound texture is deleted"; m_error = INVALID_OPERATION; return; + } else if (image == 0) { + if (m_logAllErrors) qDebug() << "Context3D::" << __FUNCTION__ + << ":INVALID_OPERATION Given image was null"; + m_error = INVALID_OPERATION; + return; } uchar *pixels = 0; @@ -1152,6 +1157,10 @@ void CanvasContext::texImage2D(glEnums target, int level, glEnums internalformat return; } + if (!m_currentTexture->hasSpecificName()) { + m_currentTexture->setName("ImageTexture_"+image->name()); + } + glTexImage2D(target, level, internalformat, image->width(), image->height(), 0, format, type, pixels); }