diff -r b52e29b42806 -r 9be6eed35a80 svgtopt/VGRenderer/PseudoVG/src/PseodoVGRendererImpl.cpp --- a/svgtopt/VGRenderer/PseudoVG/src/PseodoVGRendererImpl.cpp Tue Apr 27 17:34:09 2010 +0300 +++ b/svgtopt/VGRenderer/PseudoVG/src/PseodoVGRendererImpl.cpp Tue May 11 17:02:26 2010 +0300 @@ -39,6 +39,7 @@ iHandle = 1; iCommonHeaderLength = 0; iCommonHeader = 0; + iVgErrorCode = VG_NO_ERROR; } CPseodoVGRendererImpl::~CPseodoVGRendererImpl() @@ -232,6 +233,9 @@ TUint CPseodoVGRendererImpl::vgCreatePaint() { + if(iVgErrorCode != VG_NO_ERROR) + return VG_INVALID_HANDLE; + iHandle++; EncodeInt8(EvgCreatePaint); EncodeInt32(iHandle); @@ -244,6 +248,10 @@ TUint CPseodoVGRendererImpl::vgCreatePath(TInt pathFormat, TInt datatype, TReal32 scale, TReal32 bias, TInt segmentCapacityHint, TInt coordCapacityHint, TInt capabilities) { + if(iVgErrorCode != VG_NO_ERROR) + return VG_INVALID_HANDLE; + + iHandle++; EncodeInt8(EvgCreatePath); EncodeInt32(pathFormat); @@ -383,7 +391,7 @@ EncodeInt16(capabilities); #ifdef VGRENDERER_LOG - LogvgDrawPath(paintModes,0); + LogvgDrawPath(path,0); #endif } @@ -460,6 +468,9 @@ TUint CPseodoVGRendererImpl::vgCreateImage(TInt format, TInt width, TInt height, TInt allowedQuality) { + if(iVgErrorCode != VG_NO_ERROR) + return VG_INVALID_HANDLE; + iHandle++; EncodeInt8(EvgCreateImage); EncodeInt32(format); @@ -467,6 +478,9 @@ EncodeInt32(height); EncodeInt8(allowedQuality); EncodeInt32(iHandle); +#ifdef VGRENDERER_LOG + iLog.WriteFormat(_L("vgcreateimage")); +#endif return iHandle; } @@ -479,6 +493,9 @@ { EncodeInt8(EvgDrawImage); EncodeInt32(image); +#ifdef VGRENDERER_LOG + iLog.WriteFormat(_L("vgdrawimage")); +#endif } void CPseodoVGRendererImpl::vgClearImage(TUint image, TInt x, TInt y, TInt width, TInt height) @@ -489,6 +506,9 @@ EncodeInt32(y); EncodeInt32(width); EncodeInt32(height); +#ifdef VGRENDERER_LOG + iLog.WriteFormat(_L("vgclearimage")); +#endif } void CPseodoVGRendererImpl::vgImageSubData(TUint image, const void * data, TInt dataStride, @@ -623,6 +643,9 @@ EncodeData(dstData, dataLength); delete [] dstData; +#ifdef VGRENDERER_LOG + iLog.WriteFormat(_L("vgimagesubdata")); +#endif } else { @@ -648,6 +671,9 @@ { EncodeInt8(EvgDestroyImage); EncodeInt32(aHandle); +#ifdef VGRENDERER_LOG + iLog.WriteFormat(_L("vgdestroyimage")); +#endif } void CPseodoVGRendererImpl::vgDestroyPaint(TUint /*aHandle*/) @@ -667,8 +693,7 @@ TInt CPseodoVGRendererImpl::vgGetError() { - //TODO - return 0; + return iVgErrorCode; } MVGSurfaceImpl* CPseodoVGRendererImpl::CreateVGSurfaceL(TInt /*aOption*/) @@ -708,10 +733,13 @@ TInt CPseodoVGRendererImpl::EncodeData(const TAny *aData, TUint aLength) { - TInt result = KErrNone; - TPtr8 lPtr( iEncodedData->Des() ); - TInt encodedDataLength = lPtr.Length() + aLength; - TInt encodedDataMaxLength = lPtr.MaxLength(); + + if(iVgErrorCode==VG_NO_ERROR) + { + TInt result = KErrNone; + TPtr8 lPtr( iEncodedData->Des() ); + TInt encodedDataLength = lPtr.Length() + aLength; + TInt encodedDataMaxLength = lPtr.MaxLength(); if (encodedDataLength >= encodedDataMaxLength) { @@ -726,7 +754,12 @@ lPtr.Append((TUint8*)(aData), aLength); } - return result; + return result; + } + else + { + return iVgErrorCode; + } } TInt CPseodoVGRendererImpl::ExpandEncodedData(TUint aNewLength) @@ -740,6 +773,7 @@ if (tmpBuf == 0) { result = KErrNoMemory; + iVgErrorCode = VG_OUT_OF_MEMORY_ERROR; } else @@ -757,6 +791,17 @@ void CPseodoVGRendererImpl::EmptyEncodedData() { + iVgErrorCode = VG_NO_ERROR; + if(iEncodedData->Length() > CPseodoVGRendererImpl::ENCODEDDATALENGTH) + { + delete iEncodedData; + iEncodedData = HBufC8::New(CPseodoVGRendererImpl::ENCODEDDATALENGTH); + if(!iEncodedData) + { + iVgErrorCode = VG_OUT_OF_MEMORY_ERROR; + return; + } + } TPtr8 lPtr( iEncodedData->Des() ); lPtr.Zero(); WriteHeader();