src/hbservers/hbthemeserver/hbsgimageiconprocessor_p.cpp
changeset 34 ed14f46c0e55
parent 5 627c4a0fd0e7
--- a/src/hbservers/hbthemeserver/hbsgimageiconprocessor_p.cpp	Mon Oct 04 17:49:30 2010 +0300
+++ b/src/hbservers/hbthemeserver/hbsgimageiconprocessor_p.cpp	Mon Oct 18 18:23:13 2010 +0300
@@ -139,6 +139,7 @@
 
     TInt err = sgImage->Create(info, 0, 0);
     if (err != KErrNone) {
+        sgImageRenderer->setLastError(err);
         return false;
     }
 
@@ -146,6 +147,7 @@
 
     memcpy(&data.sgImageData.id, &sgImageId.iId, sizeof(data.sgImageData.id));
     data.type = SGIMAGE;
+    data.renderingMode = EHWRendering;
 
     bool success = sgImageRenderer->beginRendering(sgImage);
     if (!success) {
@@ -161,7 +163,7 @@
     if (!success) {
         return false;
     }
-    vgFinish();
+    vgFlush();
     // Once finished, release all handles to the image, and shut down EGL.
     // Make a null EGLSurface current to release the current surface before
     // destroying. The RSgImage contents will persist until the RSgImage is closed.
@@ -244,10 +246,12 @@
 
     TInt err = sgImage->Create(info, 0, 0);
     if (err != KErrNone) {
+        sgImageRenderer->setLastError(err);
         return false;
     }
 
     data.type = SGIMAGE;
+    data.renderingMode = EHWRendering;
     data.sgImageData.width = qRound(multiPieceIconParams.size.width());
     data.sgImageData.height = qRound(multiPieceIconParams.size.height());
     data.sgImageData.defaultWidth = defaultSize.width();
@@ -301,7 +305,7 @@
             return false;
         }
     }
-    vgFinish();
+    vgFlush();
 
     sgImageRenderer->endRendering();
 
@@ -327,6 +331,9 @@
     sgImageRenderer->nvgEngine()->enableMirroring(mirrored);
 
     HbNvgEngine::HbNvgErrorType errorType = sgImageRenderer->nvgEngine()->drawNvg(byteArray, size);
+    if (errorType == HbNvgEngine::NvgErrNoMemory){
+        sgImageRenderer->setLastError(KErrNoGraphicsMemory);
+    }
     return errorType == HbNvgEngine::NvgErrNone;
 }