# HG changeset patch # User Jon Medhurst # Date 1287750826 -3600 # Node ID 13f031032ff12edbc156559e18e5b233f3b0ef55 # Parent 032a79db4ef1c48c17174183b057ee113d59787d Update CGuestEGL::eglCreateWindowSurface to save iSurfaceId and get offesets to buffers that lower layers require diff -r 032a79db4ef1 -r 13f031032ff1 guestrendering/guestegl/src/guestegl.cpp --- a/guestrendering/guestegl/src/guestegl.cpp Fri Oct 22 11:29:23 2010 +0100 +++ b/guestrendering/guestegl/src/guestegl.cpp Fri Oct 22 13:33:46 2010 +0100 @@ -249,7 +249,6 @@ TSize size = window->Size(); TSurfaceInfo* surfaceInfo = NULL; - TSurfaceId surfaceId; RSurfaceManager::TSurfaceCreationAttributesBuf buf; RSurfaceManager::TSurfaceCreationAttributes& attributes = buf(); @@ -281,8 +280,8 @@ surfaceInfo->iNativeWindow = (RWindow*)aNativeWindow; surfaceInfo->iConfigId = aConfig; surfaceInfo->iSurfaceManager.Open(); - surfaceInfo->iSurfaceManager.CreateSurface(buf, surfaceId); - TInt err = surfaceInfo->iSurfaceManager.MapSurface(surfaceId, surfaceInfo->iChunk); + surfaceInfo->iSurfaceManager.CreateSurface(buf, surfaceInfo->iSurfaceId); + TInt err = surfaceInfo->iSurfaceManager.MapSurface(surfaceInfo->iSurfaceId, surfaceInfo->iChunk); EGL_TRACE("CGuestEGL::eglCreateWindowSurface surface manager returned chunk %x and ret val %d", surfaceInfo->iChunk, err); RemoteFunctionCallData rfcdata; EglRFC eglApiData( rfcdata ); @@ -300,7 +299,7 @@ EglInternalFunction_CreateSurface(aThreadState, aDisplay, surfaceInfo->iHostSurfaceId, aConfig, window, *surfaceInfo); surfaceInfo->iSurfaceUpdateSession.Connect(); TSurfaceConfiguration surfaceConfig; - surfaceConfig.SetSurfaceId(surfaceId); + surfaceConfig.SetSurfaceId(surfaceInfo->iSurfaceId); window->SetBackgroundSurface(surfaceConfig, ETrue); } CVghwUtils::SwitchFromVghwHeap(threadHeap); @@ -1234,6 +1233,7 @@ { RSurfaceManager::TSurfaceCreationAttributesBuf attributes; RSurfaceManager::TInfoBuf info; + TInt r; aSurfaceInfo.iNativeWindow = aNativeWindow; aSurfaceInfo.iSurfaceType = ESurfaceTypeWindow; @@ -1262,9 +1262,18 @@ // FAISALMEMON HOLE 1 // FAISALMEMON STUB CODE - TUint8 offsetToFirstBuffer = 0; // This is wrong; just stub code - TUint8 offsetToSecondBuffer = 0; // This is wrong; just stub code - // FAISALMEMON END OF STUB CODE + + TInt offsetToFirstBuffer = -1; + TInt offsetToSecondBuffer = -1; + r = aSurfaceInfo.iSurfaceManager.GetBufferOffset(aSurfaceInfo.iSurfaceId,0,offsetToFirstBuffer); + if(r!=KErrNone) + return EGL_FALSE; + r = aSurfaceInfo.iSurfaceManager.GetBufferOffset(aSurfaceInfo.iSurfaceId,1,offsetToSecondBuffer); + if(r!=KErrNone) + return EGL_FALSE; + EGL_TRACE("CGuestEGL::EglInternalFunction_CreateSurface offsetToFirstBuffer=0x%x offsetToSecondBuffer=0x%x",offsetToFirstBuffer,offsetToSecondBuffer); + + // FAISALMEMON END OF STUB CODE TUint32 chunkHWBase = 0; TInt err = CVghwUtils::MapToHWAddress(aSurfaceInfo.iChunk.Handle(), chunkHWBase);