From ea4d7711b6624d57676dfbcd68ef9e2dd45b7514 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pasi=20Ker=C3=A4nen?= <pasi.keranen@digia.com>
Date: Fri, 8 May 2015 12:53:31 +0300
Subject: [PATCH] Optimization of isOfType method.

According to profiling the isOfType method used a lot of extra time
converting the classname attribute from const char to QString and back
to const char. This task fixes the attribute to be of type const char
to begin with, reducing the CPU usage of isOfType significantly.

Change-Id: Id4879c376701d2baf4fa28ca39e9fcc1c3c0b5d6
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
---
 src/imports/qtcanvas3d/context3d.cpp | 4 ++--
 src/imports/qtcanvas3d/context3d_p.h | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/imports/qtcanvas3d/context3d.cpp b/src/imports/qtcanvas3d/context3d.cpp
index b3a99b4..0b15a55 100644
--- a/src/imports/qtcanvas3d/context3d.cpp
+++ b/src/imports/qtcanvas3d/context3d.cpp
@@ -6120,7 +6120,7 @@ QVariantList CanvasContext::getSupportedExtensions()
 /*!
  * \internal
  */
-bool CanvasContext::isOfType(const QJSValue &value, const QString &classname) const
+bool CanvasContext::isOfType(const QJSValue &value, const char *classname) const
 {
     if (!value.isQObject()) {
         return false;
@@ -6131,7 +6131,7 @@ bool CanvasContext::isOfType(const QJSValue &value, const QString &classname) co
     if (!obj)
         return false;
 
-    if (!obj->inherits(classname.toLocal8Bit().constData())) {
+    if (!obj->inherits(classname)) {
         return false;
     }
 
diff --git a/src/imports/qtcanvas3d/context3d_p.h b/src/imports/qtcanvas3d/context3d_p.h
index 37b021e..d34ca39 100644
--- a/src/imports/qtcanvas3d/context3d_p.h
+++ b/src/imports/qtcanvas3d/context3d_p.h
@@ -1225,7 +1225,7 @@ private:
     uchar *unpackPixels(uchar *srcData, bool useSrcDataAsDst,
                         int bytesPerPixel, int width, int height);
 
-    bool isOfType(const QJSValue &value, const QString &classname) const;
+    bool isOfType(const QJSValue &value, const char *classname) const;
 
     bool isValidTextureBound(glEnums target, const QString &funcName);
     bool checkParent(QObject *jsObj, const char *function);
-- 
GitLab