diff -r 7516d6d86cf5 -r ed14f46c0e55 src/hbservers/hbthemeserver/hbsgimageiconprocessor_p.cpp --- 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; }