guestrendering/guestopenvg/src/vgstate.cpp
author Faisal Memon <faisal.memon@nokia.com>
Wed, 08 Sep 2010 17:02:34 +0100
branchbug235_bringup_0
changeset 14 acbd4400e82b
child 24 a3f46bb01be2
permissions -rwxr-xr-x
Add Guest OpenVG
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     1
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     2
// All rights reserved.
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     7
//
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     8
// Initial Contributors:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    10
//
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    11
// Contributors:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    12
//
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    13
// Description:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    14
// Client-side state information for Symbian DLL
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    15
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    16
#include "vgstate.h"
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    17
#include "remotefunctioncall.h"
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    18
#include "openvgrfc.h"
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    19
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    20
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    21
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    22
// VG Client-side state is Writeable Static Data in the DLL, (holds state information for the process)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    23
// Constructor/Destructor called on process load/unload to perform initialiser/release of static resources
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    24
XOpenVgState OpenVgState;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    25
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    26
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    27
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    28
_LIT(KVgPanicCategory, "Guest VG");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    29
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    30
void VgPanic(TVgPanic aPanicCode, char* aPanicName, char* aCondition, char* aFile, TInt aLine)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    31
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    32
	if (aPanicName && aCondition && aFile)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    33
		{ // normal for Debug builds
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    34
		RDebug::Printf("Guest Open VG DLL Panic %s for failed Assert (%s),\n\tat %s:%d", aPanicName, aCondition, aFile, aLine);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    35
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    36
	else if (aPanicName && aFile)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    37
		{ // Debug builds Assert Always
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    38
		RDebug::Printf("Guest Open VG DLL Panic %s at %s:%d", aPanicName, aFile, aLine);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    39
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    40
	else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    41
		{ // normal for Release builds
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    42
		RDebug::Printf("Guest Open VG DLL Panic %d (line %d)", aPanicCode, aLine);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    43
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    44
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    45
	User::Panic(KVgPanicCategory, aPanicCode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    46
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    47
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    48
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    49
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    50
/////////////////////////////////////////////////////////////////////////////////////////////
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    51
// TCheck - parameter checking utility functions
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    52
/////////////////////////////////////////////////////////////////////////////////////////////
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    53
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    54
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    55
/*
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    56
 aWidth & aHeight parameters must be >0, also ax, ay, aX + aWidth and aY + aHeight must all
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    57
 be within image size, otherwise a VG_ILLEGAL_ARGUMENT_ERROR is flagged.
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    58
 */
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    59
TBool TCheck::ChkAreaIsWithinImage(MVgContext& aVgContext, CVgImageBase* aImageInfo, VGint aX, VGint aY, VGint aWidth, VGint aHeight)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    60
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    61
	VGPANIC_ASSERT_DEBUG(aImageInfo, EVgPanicTemp);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    62
	if ( (aX >= 0) && (aY >= 0) && (aWidth > 0) && (aHeight > 0) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    63
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    64
		VGint maxX = aWidth + aX;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    65
		VGint maxY = aHeight + aY;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    66
		if ( (maxX > 0) && (maxY > 0) && (aImageInfo->Width() >= maxX) && (aImageInfo->Height() >= maxY) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    67
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    68
			return ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    69
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    70
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    71
	OPENVG_TRACE("TCheck::ChkAreaIsWithinImage setting VG_ILLEGAL_ARGUMENT_ERROR");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    72
	aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    73
	return EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    74
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    75
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    76
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    77
VGint TCheck::ImageFormatByteDepth(VGImageFormat aImageFormat)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    78
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    79
	switch (aImageFormat)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    80
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    81
		case VG_sRGBX_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    82
		case VG_sRGBA_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    83
		case VG_sRGBA_8888_PRE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    84
		case VG_lRGBX_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    85
		case VG_lRGBA_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    86
		case VG_lRGBA_8888_PRE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    87
		case VG_sXRGB_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    88
		case VG_sARGB_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    89
		case VG_sARGB_8888_PRE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    90
		case VG_lXRGB_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    91
		case VG_lARGB_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    92
		case VG_lARGB_8888_PRE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    93
		case VG_sBGRX_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    94
		case VG_sBGRA_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    95
		case VG_sBGRA_8888_PRE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    96
		case VG_lBGRX_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    97
		case VG_lBGRA_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    98
		case VG_lBGRA_8888_PRE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
    99
		case VG_sXBGR_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   100
		case VG_sABGR_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   101
		case VG_sABGR_8888_PRE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   102
		case VG_lXBGR_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   103
		case VG_lABGR_8888:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   104
		case VG_lABGR_8888_PRE:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   105
			return 4;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   106
		case VG_sRGB_565:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   107
		case VG_sRGBA_5551:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   108
		case VG_sRGBA_4444:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   109
		case VG_sARGB_1555:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   110
		case VG_sARGB_4444:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   111
		case VG_sBGR_565:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   112
		case VG_sBGRA_5551:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   113
		case VG_sBGRA_4444:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   114
		case VG_sABGR_1555:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   115
		case VG_sABGR_4444:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   116
			return 2;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   117
		case VG_sL_8:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   118
		case VG_lL_8:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   119
		case VG_A_8:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   120
		case VG_A_4:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   121
		case VG_A_1:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   122
		case VG_BW_1:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   123
			return 1;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   124
		case VG_IMAGE_FORMAT_INVALID:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   125
		default:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   126
			return 0;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   127
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   128
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   129
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   130
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   131
// Checks aCount & aValues for SetParameteriv & SetParameterfv
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   132
TBool TCheck::ChkParamCountAndValuesPtr(MVgContext& aVgContext, VGint aCount, const void* aValues)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   133
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   134
	VGErrorCode error = VG_NO_ERROR;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   135
	if (aValues == NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   136
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   137
		if (aCount != 0)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   138
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   139
			error = VG_ILLEGAL_ARGUMENT_ERROR;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   140
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   141
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   142
	// we should check count for not being too large for serialization, but
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   143
	// there is no limit in spec for VG_SCISSOR_RECTS and VG_STROKE_DASH_PATTERN
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   144
	else if ( (3ul & (unsigned)aValues) || (aCount < 0) || (aCount > 100000) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   145
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   146
		error = VG_ILLEGAL_ARGUMENT_ERROR;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   147
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   148
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   149
	if (error != VG_NO_ERROR)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   150
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   151
		OPENVG_TRACE("TCheck::ChkParamCountAndValuesPtr setting error=0x%x", error);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   152
		aVgContext.SetVgError(error);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   153
		return EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   154
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   155
	return ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   156
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   157
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   158
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   159
/////////////////////////////////////////////////////////////////////////////////////////////
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   160
// XOpenVgState
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   161
/////////////////////////////////////////////////////////////////////////////////////////////
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   162
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   163
// Singleton object is in WSD memory, so this Constructor is called when the DLL is loaded
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   164
XOpenVgState::XOpenVgState() :
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   165
		iEglManagementApi(NULL), iKVgMaxKernelSize(0), iKVgMaxSeparableKernelSize(0)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   166
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   167
	OPENVG_TRACE("XOpenVgState::XOpenVgState 1. start Process=0x%lx, Thread=0x%lx", RProcess().Id().Id(), RThread().Id().Id());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   168
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   169
	TInt createErr1 = iStateLock.CreateLocal(EOwnerProcess);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   170
	OPENVG_TRACE("XOpenVgState::XOpenVgState 2. iStateLock.CreateLocal error=%d, Handle=0x%x", createErr1, iStateLock.Handle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   171
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   172
	TInt createErr2 = iMapLock.CreateLocal(EOwnerProcess);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   173
	OPENVG_TRACE("XOpenVgState::XOpenVgState 2. iMapLock.CreateLocal error=%d, Handle=0x%x", createErr2, iMapLock.Handle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   174
	// cannot continue if there is an error, so Panic
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   175
	VGPANIC_ASSERT( (createErr1 == KErrNone) && (createErr2 == KErrNone), EVgPanicTemp);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   176
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   177
	CVgHandleBase::InitStatics();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   178
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   179
	// publish MVgApiforEgl vtable
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   180
	CVghwUtils::SetVgApiForEgl(this);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   181
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   182
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   183
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   184
// Desstructor is called when the DLL is unloaded
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   185
XOpenVgState::~XOpenVgState()
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   186
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   187
	OPENVG_TRACE("XOpenVgState::~XOpenVgState 1. iStateLock handle=0x%x, iMapLock handle=0x%x, Process=0x%lx, Thread=0x%lx",
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   188
			iStateLock.Handle(), iMapLock.Handle(), RProcess().Id().Id(), RThread().Id().Id());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   189
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   190
	if (iStateLock.Handle())
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   191
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   192
		iStateLock.Close();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   193
		OPENVG_TRACE("XOpenVgState::~XOpenVgState 2. iStateLock Handle=0x%x", iStateLock.Handle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   194
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   195
	if (iMapLock.Handle())
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   196
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   197
		iMapLock.Close();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   198
		OPENVG_TRACE("XOpenVgState::~XOpenVgState 3. iMapLock Handle=0x%x", iMapLock.Handle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   199
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   200
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   201
	// unpublish MVgApiforEgl vtable
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   202
	CVghwUtils::SetVgApiForEgl(NULL);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   203
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   204
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   205
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   206
TBool XOpenVgState::CheckVGHandle(MVgContext& aVgContext, VGHandle aHandle, CVgHandleBase** aHandleInfo, TVgHandleType aMatchType)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   207
	{ // client side VGHandle is an opaque data handle to Host Open VG objects such as VGPath or VGImage
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   208
	// only check for logic errors in VG code in Debug builds
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   209
	VGPANIC_ASSERT_DEBUG(iStateLock.IsHeld(), EVgPanicStateLockMutexNotHeld);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   210
	VGPANIC_ASSERT_DEBUG(aHandleInfo, EVgPanicFunctionParameterIsNull);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   211
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   212
	if (aHandle != VG_INVALID_HANDLE)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   213
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   214
		iMapLock.Wait();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   215
		CVgHandleBase** pHandleInfo = iHandleHashMap.Find(aHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   216
		if (pHandleInfo)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   217
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   218
			CVgHandleBase* handleInfo = *pHandleInfo;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   219
			if (handleInfo && !handleInfo->IsDestroyed() &&
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   220
					( (aMatchType == EVgHandleAny) || (aMatchType == handleInfo->HandleType()) ) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   221
				{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   222
				// ToDo confirm handle belongs to this context or is shared with this context
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   223
				*aHandleInfo = handleInfo;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   224
				OPENVG_TRACE("  XOpenVgState::CheckVGHandle client handle=0x%x, match type=%d; found matching Host VG Handle=0x%x",
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   225
						aHandle, aMatchType, handleInfo->HostHandle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   226
				iMapLock.Signal();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   227
				return ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   228
				}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   229
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   230
		iMapLock.Signal();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   231
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   232
	OPENVG_TRACE("  XOpenVgState::CheckVGHandle client handle=0x%x, match type=%d, setting VG_BAD_HANDLE_ERROR", aHandle, aMatchType);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   233
	aVgContext.SetVgError(VG_BAD_HANDLE_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   234
	return EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   235
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   236
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   237
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   238
/*
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   239
 aKernelWidth or aKernelHeight must be >0 and <= [Size Limit], otherwise a VG_ILLEGAL_ARGUMENT_ERROR is flagged
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   240
 */
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   241
TBool XOpenVgState::CheckKernelWidthAndHeight(MVgContext& aVgContext, VGint aKernelWidth, VGint aKernelHeight, VGParamType aLimitType)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   242
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   243
	VGPANIC_ASSERT_DEBUG(iStateLock.IsHeld(), EVgPanicStateLockMutexNotHeld);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   244
	VGint limit = 0;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   245
	// aLimitType must be either VG_MAX_KERNEL_SIZE or VG_MAX_SEPARABLE_KERNEL_SIZE
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   246
	if (aLimitType == VG_MAX_KERNEL_SIZE)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   247
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   248
		if (iKVgMaxKernelSize == 0)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   249
			{ // first access, so fetch value from Host
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   250
			iKVgMaxKernelSize = TGuestOpenVg::HostGeti(aVgContext, VG_MAX_KERNEL_SIZE);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   251
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   252
		limit = iKVgMaxKernelSize;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   253
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   254
	else if (aLimitType == VG_MAX_SEPARABLE_KERNEL_SIZE)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   255
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   256
		if (iKVgMaxSeparableKernelSize == 0)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   257
			{ // first access, so fetch value from Host
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   258
			iKVgMaxSeparableKernelSize = TGuestOpenVg::HostGeti(aVgContext, VG_MAX_SEPARABLE_KERNEL_SIZE);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   259
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   260
		limit = iKVgMaxSeparableKernelSize;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   261
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   262
	VGPANIC_ASSERT(limit > 0, EVgPanicValueFromHostVgIsInvalid);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   263
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   264
	if ( (aKernelHeight > 0) && (aKernelHeight <= limit) && (aKernelWidth > 0) && (aKernelWidth <= limit) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   265
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   266
		return ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   267
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   268
	OPENVG_TRACE("XOpenVgState::CheckKernelWidthAndHeight setting VG_ILLEGAL_ARGUMENT_ERROR");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   269
	aVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   270
	return EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   271
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   272
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   273
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   274
TBool XOpenVgState::AddToHashMap(MVgContext& aVgContext, CVgHandleBase* aHandleInfo, VGHandle aHostHandle)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   275
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   276
	VGPANIC_ASSERT_DEBUG(iStateLock.IsHeld(), EVgPanicStateLockMutexNotHeld);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   277
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   278
	OPENVG_TRACE("  XOpenVgState::AddToHashMap aHandleInfo=0x%x, aHostHandle=0x%x, ClientHandle=0x%x",
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   279
			aHandleInfo, aHostHandle, aHandleInfo->ClientHandle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   280
	aHandleInfo->SetHostHandle(aHostHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   281
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   282
	iMapLock.Wait();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   283
	RHeap* clientHeap = CVghwUtils::SwitchToVghwHeap();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   284
	// ClientHandle is key to finding object, its Host Handle, object type, etc...
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   285
	TInt err = iHandleHashMap.Insert(aHandleInfo->ClientHandle(), aHandleInfo);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   286
	CVghwUtils::SwitchFromVghwHeap(clientHeap);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   287
	iMapLock.Signal();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   288
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   289
	if (err == KErrNone)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   290
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   291
		return ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   292
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   293
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   294
	// Failed, Cleanup ...
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   295
	OPENVG_TRACE("  XOpenVgState::AddToHashMap insert error = %d", err);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   296
	aVgContext.SetVgError(VG_OUT_OF_MEMORY_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   297
	return EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   298
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   299
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   300
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   301
void XOpenVgState::UnMapHandle(TUint32 aClientHandle)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   302
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   303
	OPENVG_TRACE("  XOpenVgState::UnMapHandle aHandleInfo=0x%x -->", aClientHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   304
	VGPANIC_ASSERT_DEBUG(iStateLock.IsHeld(), EVgPanicStateLockMutexNotHeld);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   305
	VGPANIC_ASSERT_DEBUG( CVghwUtils::UsingVghwHeap(), EVgPanicTemp);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   306
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   307
	iMapLock.Wait();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   308
#ifdef _DEBUG
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   309
	TInt dbgErr =
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   310
#endif
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   311
			iHandleHashMap.Remove(aClientHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   312
	iMapLock.Signal();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   313
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   314
	OPENVG_TRACE("  XOpenVgState::UnMapHandle ... dbgErr =%d <--", dbgErr);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   315
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   316
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   317
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   318
TBool XOpenVgState::EglImageOpenForVgImage(EGLImageKHR aImage, TSize& aSize, VGHandle& aVgHandle, TUint64& aSgImageId)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   319
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   320
	if (!iEglManagementApi)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   321
		{ // try to get EGL interface via VghwUtils
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   322
		iEglManagementApi = CVghwUtils::EglManagementApi();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   323
		VGPANIC_ASSERT_DEBUG(iEglManagementApi, EVgPanicMissingEglInterface);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   324
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   325
	if (iEglManagementApi)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   326
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   327
		return iEglManagementApi->EglImageOpenForVgImage(aImage, aSize, aVgHandle, aSgImageId);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   328
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   329
	return EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   330
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   331
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   332
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   333
void XOpenVgState::EglImageClose(EGLImageKHR aImage)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   334
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   335
	if (iEglManagementApi)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   336
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   337
		iEglManagementApi->EglImageClose(aImage);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   338
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   339
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   340
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   341
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   342
// Guest Open VG extension export support for eglGetProcAddress
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   343
typedef struct
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   344
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   345
	const char*          procName;		// procedure name
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   346
	ExtensionProcPointer procAddr;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   347
	} TVgExtnInfo;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   348
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   349
// VG extension functions
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   350
static const TVgExtnInfo vgProcedures[] =
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   351
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   352
		{ "vgCreateEGLImageTargetKHR", (ExtensionProcPointer)vgCreateEGLImageTargetKHR },
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   353
	};
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   354
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   355
const TInt KVgProcCount = sizeof(vgProcedures) / sizeof(TVgExtnInfo);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   356
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   357
ExtensionProcPointer XOpenVgState::guestGetVgProcAddress (const char *aProcName)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   358
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   359
	// exhaustive search
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   360
	for (TInt idx = 0; idx < KVgProcCount; idx++)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   361
	  {
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   362
	  if (!strcmp(aProcName, vgProcedures[idx].procName))
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   363
		  return vgProcedures[idx].procAddr;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   364
	  }
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   365
	return NULL;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   366
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   367
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   368
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   369
/////////////////////////////////////////////////////////////////////////////////////////////
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   370
// TCleanupVgLocks
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   371
/////////////////////////////////////////////////////////////////////////////////////////////
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   372
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   373
TCleanupVgLocks::TCleanupVgLocks(MVgContext& aVgContext) :
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   374
		iVgContext(aVgContext), iMutex(OpenVgState.MutexWait()), iIsHeld(ETrue)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   375
	{}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   376
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   377
TCleanupVgLocks::~TCleanupVgLocks()
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   378
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   379
	if (iIsHeld)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   380
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   381
		SignalMutex();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   382
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   383
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   384
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   385
void TCleanupVgLocks::SignalMutex()
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   386
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   387
	VGPANIC_ASSERT_DEBUG(iIsHeld && iMutex.IsHeld(), EVgPanicTemp);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   388
	iMutex.Signal();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   389
	iIsHeld = EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   390
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   391
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   392
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   393
/*
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   394
 Returns false & sets VG error to VG_ILLEGAL_ARGUMENT_ERROR if VGMaskOperation is not a supported operation
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   395
 */
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   396
TBool TCleanupVgLocks::CheckVGMaskOperationAndHandle(VGMaskOperation aOperation, VGHandle aMask, CVgImageBase** aHandleInfo)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   397
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   398
	VGPANIC_ASSERT_DEBUG(iIsHeld, EVgPanicStateLockMutexNotHeld);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   399
	*aHandleInfo = NULL;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   400
	switch (aOperation)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   401
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   402
		case VG_CLEAR_MASK:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   403
		case VG_FILL_MASK:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   404
			// aMask is not used for these operations
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   405
			return ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   406
		case VG_SET_MASK:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   407
		case VG_UNION_MASK:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   408
		case VG_INTERSECT_MASK:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   409
		case VG_SUBTRACT_MASK:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   410
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   411
			if (aMask == VG_INVALID_HANDLE)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   412
				return ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   413
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   414
			CVgHandleBase* tempInfo;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   415
			if (CheckVGAnyHandle(aMask, &tempInfo))
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   416
				{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   417
				if ( (tempInfo->HandleType() == EVgHandleForMaskLayer) || (tempInfo->HandleType() == EVgHandleForImage) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   418
					{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   419
					*aHandleInfo = (CVgImageBase*)tempInfo;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   420
					// TODO if handle is a VgImage verify that it is not a rendering target
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   421
					return ETrue;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   422
					}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   423
				OPENVG_TRACE("TCleanupVgLocks::CheckVGMaskOperationAndHandle setting VG_BAD_HANDLE_ERROR");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   424
				iVgContext.SetVgError(VG_BAD_HANDLE_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   425
				}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   426
			return EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   427
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   428
		default:
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   429
			OPENVG_TRACE("TCleanupVgLocks::CheckVGMaskOperationAndHandle setting VG_ILLEGAL_ARGUMENT_ERROR");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   430
			iVgContext.SetVgError(VG_ILLEGAL_ARGUMENT_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   431
			return EFalse;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   432
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   433
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   434
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   435
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   436
VGFont TCleanupVgLocks::CreateFont(VGint aGlyphCapacityHint)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   437
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   438
	VGPANIC_ASSERT_DEBUG(iIsHeld && iMutex.IsHeld(), EVgPanicTemp);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   439
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   440
	CVgFontInfo* fontInfo = CVgFontInfo::New();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   441
	if (fontInfo == NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   442
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   443
		OPENVG_TRACE("  TGuestOpenVg::vgCreateFont - CVgFontInfo::New() failed");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   444
		iVgContext.SetVgError(VG_OUT_OF_MEMORY_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   445
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   446
	else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   447
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   448
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   449
		vgApiData.Init(OpenVgRFC::EvgCreateFont);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   450
		vgApiData.AppendParam(aGlyphCapacityHint);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   451
		VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   452
		iVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   453
		VGFont hostFont = static_cast<VGFont>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   454
		OPENVG_TRACE("  TCleanupVgLocks::CreateFont - CVgFontInfo::New() success, hostFont=0x%x", hostFont);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   455
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   456
		if ( (hostFont != VG_INVALID_HANDLE) && OpenVgState.AddToHashMap(iVgContext, fontInfo, hostFont) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   457
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   458
			return fontInfo->ClientHandle();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   459
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   460
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   461
		fontInfo->Destroy(iVgContext);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   462
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   463
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   464
	return VG_INVALID_HANDLE;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   465
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   466
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   467
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   468
VGImage TCleanupVgLocks::ChildImage(CVgImageInfo& aParentInfo, VGint aX, VGint aY, VGint aWidth, VGint aHeight)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   469
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   470
	CVgImageInfo* imageInfo = CVgImageInfo::New(aWidth, aHeight, &aParentInfo);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   471
	if (imageInfo == NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   472
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   473
		iVgContext.SetVgError(VG_OUT_OF_MEMORY_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   474
		OPENVG_TRACE("  TCleanupVgLocks::ChildImage - CVgImageInfo::New() failed");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   475
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   476
	else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   477
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   478
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   479
		vgApiData.Init(OpenVgRFC::EvgChildImage);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   480
		vgApiData.AppendParam(aParentInfo.HostHandle());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   481
		vgApiData.AppendParam(aX);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   482
		vgApiData.AppendParam(aY);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   483
		vgApiData.AppendParam(aWidth);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   484
		vgApiData.AppendParam(aHeight);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   485
		VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   486
		iVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   487
		VGImage hostImageHandle = static_cast<VGImage>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   488
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   489
		OPENVG_TRACE("  TCleanupVgLocks::ChildImage - CVgImageInfo::New() success, hostImageHandle=0x%x", hostImageHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   490
		if ( (hostImageHandle != VG_INVALID_HANDLE) && OpenVgState.AddToHashMap(iVgContext, imageInfo, hostImageHandle) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   491
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   492
			return imageInfo->ClientHandle();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   493
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   494
		imageInfo->Destroy(iVgContext);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   495
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   496
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   497
	return VG_INVALID_HANDLE;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   498
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   499
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   500
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   501
VGImage TCleanupVgLocks::CreateImage(VGImageFormat aFormat, VGint aWidth, VGint aHeight, VGbitfield aAllowedQuality)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   502
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   503
	CVgImageInfo* imageInfo = CVgImageInfo::New(aFormat, aWidth, aHeight, aAllowedQuality);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   504
	if (imageInfo == NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   505
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   506
		iVgContext.SetVgError(VG_OUT_OF_MEMORY_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   507
		OPENVG_TRACE("  TCleanupVgLocks::CreateImage - CVgImageInfo::New() failed");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   508
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   509
	else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   510
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   511
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   512
		vgApiData.Init(OpenVgRFC::EvgCreateImage);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   513
		vgApiData.AppendParam(aFormat);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   514
		vgApiData.AppendParam(aWidth);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   515
		vgApiData.AppendParam(aHeight);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   516
		vgApiData.AppendParam(aAllowedQuality);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   517
		VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   518
		iVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   519
		VGImage hostImageHandle = static_cast<VGImage>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   520
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   521
		OPENVG_TRACE("  TCleanupVgLocks::CreateImage - CVgImageInfo::New() success, hostImageHandle=0x%x", hostImageHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   522
		if ( (hostImageHandle != VG_INVALID_HANDLE) && OpenVgState.AddToHashMap(iVgContext, imageInfo, hostImageHandle) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   523
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   524
			return imageInfo->ClientHandle();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   525
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   526
		imageInfo->Destroy(iVgContext);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   527
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   528
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   529
	return VG_INVALID_HANDLE;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   530
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   531
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   532
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   533
VGMaskLayer TCleanupVgLocks::CreateMaskLayer(VGint aWidth, VGint aHeight)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   534
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   535
	CVgMaskLayerInfo* maskLayerInfo = CVgMaskLayerInfo::New(aWidth, aHeight);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   536
	if (maskLayerInfo == NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   537
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   538
		OPENVG_TRACE("  TCleanupVgLocks::CreateMaskLayer - CVgMaskLayerInfo::New() failed");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   539
		iVgContext.SetVgError(VG_OUT_OF_MEMORY_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   540
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   541
	else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   542
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   543
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   544
		vgApiData.Init(OpenVgRFC::EvgCreateMaskLayer);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   545
		vgApiData.AppendParam(aWidth);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   546
		vgApiData.AppendParam(aHeight);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   547
		VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   548
		iVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   549
		VGMaskLayer hostMaskHandle = static_cast<VGMaskLayer>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   550
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   551
		OPENVG_TRACE("  TCleanupVgLocks::CreateMaskLayer - CVgMaskLayerInfo::New() success, hostMaskHandle=0x%x", hostMaskHandle);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   552
		if ( (hostMaskHandle != VG_INVALID_HANDLE) && OpenVgState.AddToHashMap(iVgContext, maskLayerInfo, hostMaskHandle) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   553
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   554
			return maskLayerInfo->ClientHandle();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   555
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   556
		maskLayerInfo->Destroy(iVgContext);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   557
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   558
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   559
	return VG_INVALID_HANDLE;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   560
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   561
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   562
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   563
VGPaint TCleanupVgLocks::CreatePaint()
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   564
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   565
	CVgPaintInfo* paintInfo = CVgPaintInfo::New();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   566
	if (paintInfo == NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   567
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   568
		OPENVG_TRACE("  TCleanupVgLocks::CreatePaint - CVgPaintInfo::New() failed");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   569
		iVgContext.SetVgError(VG_OUT_OF_MEMORY_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   570
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   571
	else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   572
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   573
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   574
		vgApiData.Init(OpenVgRFC::EvgCreatePaint);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   575
		VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   576
		iVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   577
		VGPaint hostPaint = static_cast<VGPaint>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   578
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   579
		OPENVG_TRACE("  TCleanupVgLocks::CreatePaint - CVgPaintInfo::New() success, clientHandle=0x%x, hostHandle=0x%x",
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   580
				paintInfo->ClientHandle(), hostPaint);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   581
		if ( (hostPaint != VG_INVALID_HANDLE) && OpenVgState.AddToHashMap(iVgContext, paintInfo, hostPaint) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   582
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   583
			return paintInfo->ClientHandle();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   584
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   585
		paintInfo->Destroy(iVgContext);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   586
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   587
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   588
	return VG_INVALID_HANDLE;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   589
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   590
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   591
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   592
VGPaint TCleanupVgLocks::GetPaint(VGPaintMode aPaintMode)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   593
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   594
	CVgPaintInfo* paintInfo = CVgPaintInfo::New();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   595
	if (paintInfo == NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   596
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   597
		iVgContext.SetVgError(VG_OUT_OF_MEMORY_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   598
		OPENVG_TRACE("  TCleanupVgLocks::GetPaint - CVgPaintInfo::New() failed");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   599
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   600
	else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   601
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   602
		RemoteFunctionCallData rfcdata; OpenVgRFC vgApiData(rfcdata);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   603
		vgApiData.Init(OpenVgRFC::EvgGetPaint);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   604
		vgApiData.AppendParam(aPaintMode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   605
		VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   606
		iVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   607
		VGPaint hostPaint = static_cast<VGPaint>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   608
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   609
		OPENVG_TRACE("  TCleanupVgLocks::GetPaint - CVgPaintInfo::New() success, clientHandle=0x%x, hostHandle=0x%x",
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   610
				paintInfo->ClientHandle(), hostPaint);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   611
		if ( (hostPaint != VG_INVALID_HANDLE) && OpenVgState.AddToHashMap(iVgContext, paintInfo, hostPaint) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   612
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   613
			return paintInfo->ClientHandle();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   614
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   615
		paintInfo->Destroy(iVgContext);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   616
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   617
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   618
	return VG_INVALID_HANDLE;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   619
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   620
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   621
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   622
VGPath TCleanupVgLocks::CreatePath(VGint aPathFormat, VGPathDatatype aDatatype, VGfloat aScale, VGfloat aBias,
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   623
		VGint aSegmentCapacityHint, VGint aCoordCapacityHint, VGbitfield aCapabilities)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   624
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   625
	VGPANIC_ASSERT_DEBUG(iIsHeld && iMutex.IsHeld(), EVgPanicTemp);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   626
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   627
	aCapabilities &= VG_PATH_CAPABILITY_ALL;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   628
	CVgPathInfo* pathInfo = CVgPathInfo::New(aDatatype, aScale, aBias, aCapabilities);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   629
	if (pathInfo == NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   630
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   631
		OPENVG_TRACE("  TCleanupVgLocks::CreatePath - CVgPathInfo::New() failed");
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   632
		iVgContext.SetVgError(VG_OUT_OF_MEMORY_ERROR);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   633
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   634
	else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   635
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   636
		RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   637
		vgApiData.Init(OpenVgRFC::EvgCreatePath);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   638
		vgApiData.AppendParam(aPathFormat);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   639
		vgApiData.AppendParam(aDatatype);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   640
		vgApiData.AppendParam(aScale);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   641
		vgApiData.AppendParam(aBias);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   642
		vgApiData.AppendParam(aSegmentCapacityHint);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   643
		vgApiData.AppendParam(aCoordCapacityHint);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   644
		vgApiData.AppendParam(aCapabilities);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   645
		VGPANIC_ASSERT_DEBUG(vgApiData.Data().Header().iOpType == RemoteFunctionCallData::EOpRequestWithReply, EVgPanicNotReplyOpcode);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   646
		iVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   647
		VGPath hostPath = static_cast<VGPath>(vgApiData.ReturnValue());
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   648
		OPENVG_TRACE("  TCleanupVgLocks::CreatePath - CVgPathInfo::New() success, hostHandle=0x%x", hostPath);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   649
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   650
		if ( (hostPath != VG_INVALID_HANDLE) && OpenVgState.AddToHashMap(iVgContext, pathInfo, hostPath) )
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   651
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   652
			return pathInfo->ClientHandle();
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   653
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   654
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   655
		pathInfo->Destroy(iVgContext);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   656
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   657
	
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   658
	return VG_INVALID_HANDLE;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   659
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   660
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   661
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   662
VGImage TCleanupVgLocks::CreateEGLImageTargetKHR(VGeglImageKHR aImage)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   663
	{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   664
	VGErrorCode error = VG_NO_ERROR;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   665
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   666
	if (aImage == NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   667
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   668
		error = VG_ILLEGAL_ARGUMENT_ERROR;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   669
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   670
	else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   671
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   672
		// Try to open EGL Image from handle, and get info such as image size
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   673
		TSize imageSize;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   674
		TUint64 sgImageId;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   675
		VGHandle vgHandle;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   676
		if (!OpenVgState.EglImageOpenForVgImage((EGLImageKHR) aImage, imageSize, vgHandle, sgImageId))
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   677
			{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   678
			error = VG_UNSUPPORTED_IMAGE_FORMAT_ERROR;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   679
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   680
		else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   681
			{ // Open success, create a CVgImageInfo with all the details ...
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   682
			// ToDo get & store VGImageFormat of underlying VGImage
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   683
			CVgImageInfo* newImageInfo = CVgImageInfo::New(VG_IMAGE_FORMAT_INVALID, imageSize.iWidth, imageSize.iHeight,
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   684
					(EGLImageKHR) aImage, sgImageId);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   685
			OPENVG_TRACE("TGuestOpenVg::vgCreateEGLImageTargetKHR imageSize=%d,%d, vgHandle=0x%x, sgImageId=0x%lx  newImageInfo=0x%x",
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   686
					imageSize.iWidth, imageSize.iHeight, vgHandle, sgImageId, newImageInfo);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   687
			if (newImageInfo == NULL)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   688
				{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   689
				error = VG_OUT_OF_MEMORY_ERROR;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   690
				OpenVgState.EglImageClose((EGLImageKHR) aImage);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   691
				}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   692
			else
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   693
				{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   694
				if (OpenVgState.AddToHashMap(iVgContext, newImageInfo, vgHandle))
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   695
					{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   696
					// Notify Command Scheduler & KhronosWrappers
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   697
					RemoteFunctionCallData data; OpenVgRFC vgApiData(data);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   698
					vgApiData.Init(OpenVgRFC::EvgCreateEGLImageTargetKHR, RemoteFunctionCallData::EOpRequestWithReply);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   699
					vgApiData.AppendParam(aImage);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   700
					// ToDo any other parameters needed? Is this really a Request with Reply?
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   701
					iVgContext.ExecuteVgCommand(vgApiData);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   702
					return newImageInfo->ClientHandle();  
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   703
					}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   704
				newImageInfo->Destroy(iVgContext);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   705
				}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   706
			}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   707
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   708
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   709
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   710
	if (error != VG_NO_ERROR)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   711
		{
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   712
		iVgContext.SetVgError(error);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   713
		OPENVG_TRACE("TGuestOpenVg::vgCreateEGLImageTargetKHR fail - error=0x%x", error);
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   714
		}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   715
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   716
	return VG_INVALID_HANDLE;
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   717
	}
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   718
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   719
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   720
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   721
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   722
// **** Desirable: could check VGParamType for vgGet & vgSet scalar & vector operations.
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   723
/*
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   724
  // Mode settings
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   725
  VG_MATRIX_MODE  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   726
  VG_FILL_RULE  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   727
  VG_IMAGE_QUALITY  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   728
  VG_RENDERING_QUALITY  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   729
  VG_BLEND_MODE  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   730
  VG_IMAGE_MODE  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   731
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   732
  // Scissoring rectangles
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   733
  VG_SCISSOR_RECTS  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   734
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   735
  // Color Transformation
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   736
  VG_COLOR_TRANSFORM  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   737
  VG_COLOR_TRANSFORM_VALUES  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   738
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   739
  // Stroke parameters
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   740
  VG_STROKE_LINE_WIDTH  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   741
  VG_STROKE_CAP_STYLE  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   742
  VG_STROKE_JOIN_STYLE  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   743
  VG_STROKE_MITER_LIMIT  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   744
  VG_STROKE_DASH_PATTERN  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   745
  VG_STROKE_DASH_PHASE  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   746
  VG_STROKE_DASH_PHASE_RESET  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   747
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   748
  // Edge fill color for VG_TILE_FILL tiling mode
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   749
  VG_TILE_FILL_COLOR  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   750
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   751
  // Color for vgClear
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   752
  VG_CLEAR_COLOR  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   753
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   754
  // Glyph origin
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   755
  VG_GLYPH_ORIGIN  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   756
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   757
  // Enable/disable alpha masking and scissoring
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   758
  VG_MASKING  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   759
  VG_SCISSORING  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   760
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   761
  // Pixel layout information
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   762
  VG_PIXEL_LAYOUT  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   763
  VG_SCREEN_LAYOUT  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   764
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   765
  // Source format selection for image filters
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   766
  VG_FILTER_FORMAT_LINEAR  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   767
  VG_FILTER_FORMAT_PREMULTIPLIED  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   768
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   769
  // Destination write enable mask for image filters
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   770
  VG_FILTER_CHANNEL_MASK  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   771
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   772
  // Implementation limits (read-only)
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   773
  VG_MAX_SCISSOR_RECTS, ReadOnly, Scalar
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   774
  VG_MAX_DASH_COUNT  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   775
  VG_MAX_KERNEL_SIZE  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   776
  VG_MAX_SEPARABLE_KERNEL_SIZE  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   777
  VG_MAX_COLOR_RAMP_STOPS  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   778
  VG_MAX_IMAGE_WIDTH  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   779
  VG_MAX_IMAGE_HEIGHT  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   780
  VG_MAX_IMAGE_PIXELS  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   781
  VG_MAX_IMAGE_BYTES  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   782
  VG_MAX_FLOAT  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   783
  VG_MAX_GAUSSIAN_STD_DEVIATION  ???
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   784
  */
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   785
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   786
//////////////////////////////////////////////////////////////////////////
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   787
acbd4400e82b Add Guest OpenVG
Faisal Memon <faisal.memon@nokia.com>
parents:
diff changeset
   788
// end of file vgstate.cpp