diff -r 98ccebc37403 -r dc7c549001d5 javauis/mmapi_qt/baseline/src.nga/cmmasurfacewindow.cpp --- a/javauis/mmapi_qt/baseline/src.nga/cmmasurfacewindow.cpp Fri May 14 15:47:24 2010 +0300 +++ b/javauis/mmapi_qt/baseline/src.nga/cmmasurfacewindow.cpp Thu May 27 12:49:31 2010 +0300 @@ -18,6 +18,7 @@ // Include Files #include +#include #include "cmmasurfacewindow.h" #include "cmmaplayer.h" @@ -67,29 +68,34 @@ // Ignored, this window will not be used for actual drawing } -void CMMASurfaceWindow::SetDrawRectThread( const TRect& aRect ) - { - LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetDrawRectThread TL %d %d", - aRect.iTl.iX, aRect.iTl.iY ); - LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetDrawRectThread BR %d %d", - aRect.iBr.iX, aRect.iBr.iY ); +void CMMASurfaceWindow::SetDrawRectThread(const TRect& aRect) +{ + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetDrawRectThread TL %d %d", + aRect.iTl.iX, aRect.iTl.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetDrawRectThread BR %d %d", + aRect.iBr.iX, aRect.iBr.iY); iContentRect = aRect; - + TInt error = StaticRedrawVideo(*this); - if ( KErrNone != error ) - { - ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::SetDrawRectThread, StaticRedrawVideo error = %d", error); - } + if (KErrNone != error) + { + ELOG1(EJavaMMAPI, "MID::CMMASurfaceWindow::SetDrawRectThread, StaticRedrawVideo error = %d", error); } +} void CMMASurfaceWindow::SetRWindowRect(const TRect& aRect, MMMADisplay::TThreadType aThreadType) { - LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetRWindowRect TL %d %d", - aRect.iTl.iX, aRect.iTl.iY); - LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetRWindowRect BR %d %d", - aRect.iBr.iX, aRect.iBr.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetRWindowRect TL %d %d", + aRect.iTl.iX, aRect.iTl.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetRWindowRect BR %d %d", + aRect.iBr.iX, aRect.iBr.iY); + + if (iRWindowRect == aRect) + { + return; + } iRWindowRect = aRect; @@ -97,68 +103,36 @@ { if (iDisplay) { - /* iDisplay->UIGetCallback( *this, - CMMASurfaceWindow::ESetDrawRect); - */ - // MMAPI UI 3.x req. - iDisplay->GetCallbackInUiThread( (TInt)CMMASurfaceWindow::ESetDrawRect ); - LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetRWindowRect after GetCallbackInUiThread " ); - + //iDisplay->UIGetCallback(*this, +// CMMASurfaceWindow::ESetClipRect); + // MMAPI UI 3.x req. + iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetClipRect); } } else if (MMMADisplay::EUiThread == aThreadType) { - /*TInt error = StaticRedrawVideo(*this); + TInt error = SetClipRect(); if (KErrNone != error) { - LOG1(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetRWindowRect, StaticRedrawVideo error = %d", error); + LOG1(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetRWindowRect, error = %d", error); } - */ - LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetRWindowRect else GetCallbackInUiThread + " ); - iDisplay->GetCallbackInUiThread( (TInt)CMMASurfaceWindow::ESetDrawRect ); - LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetRWindowRect else GetCallbackInUiThread -" ); } } -void CMMASurfaceWindow::SetDrawRect( const TRect& aRect ) - { - LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetDrawRect TL %d %d", - aRect.iTl.iX, aRect.iTl.iY ); - LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetDrawRect BR %d %d", - aRect.iBr.iX, aRect.iBr.iY ); +TInt CMMASurfaceWindow::SetClipRect() +{ + LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetClipRect"); - iContentRect = aRect; - if ( iDisplay ) - { - // iDisplay->UIGetCallback( *this, - // CMMASurfaceWindow::ESetDrawRect ); - // MMAPI UI 3.x req. - iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetDrawRect); - LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetDrawRect, after GetCallbackInUiThread"); - } - } + // CMediaClientVideoDisplay expects client to RemoveDisplayWindow + // and AddDisplayWindow again everytime when RWindow rect changes + if (iMediaClientVideoDisplay && iWindow) + { + iMediaClientVideoDisplay->RemoveDisplayWindow(*iWindow); -TInt CMMASurfaceWindow::StaticRedrawVideo(CMMASurfaceWindow& aSurfaceWindow) -{ - TRAPD(error, aSurfaceWindow.RedrawVideoL()); - return error; -} - -void CMMASurfaceWindow::RedrawVideoL() -{ - if (!iMediaClientVideoDisplay) - { - LOG( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: no MediaClientVideoDisplay set, aborting -" ); - return; - } - - if (iWindow) - { TRect contentRect; if (iVisible) { contentRect = iContentRect; - ScaleVideoL(contentRect); } else { @@ -175,52 +149,133 @@ TRect drawRect = contentRect; drawRect.Move(relativeParentRect.iTl); - // Area where should be drawn is the intersection of drawRect and relativeParentRect. - TRect areaRect = relativeParentRect; - areaRect.Intersection(drawRect); - - iMediaClientVideoDisplay->SetWindowClipRectL(*iWindow, - areaRect, - iVideoCropRegion); + TRect clipRect(0,0,iRWindowRect.Width(),iRWindowRect.Height()); + TRAPD(error, iMediaClientVideoDisplay->AddDisplayWindowL(iWindow, + clipRect, // new clip rect + iVideoCropRegion, + drawRect, // video extent + 0.0f, // ignore + 0.0f, // ignore + EVideoRotationNone, + EAutoScaleBestFit, + EHorizontalAlignLeft, + EVerticalAlignTop, + (RWindow*)iWindow)); - iMediaClientVideoDisplay->SetVideoExtentL(*iWindow, - areaRect, - iVideoCropRegion); + LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetClipRect -"); + return error; + } + return KErrNone; +} - LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() areaRect is %d X %d",areaRect.Width(),areaRect.Height() ); +void CMMASurfaceWindow::SetDrawRect(const TRect& aRect) +{ + LOG2(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetDrawRect TL %d %d", + aRect.iTl.iX, aRect.iTl.iY); + LOG2(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetDrawRect BR %d %d", + aRect.iBr.iX, aRect.iBr.iY); - iMediaClientVideoDisplay->RedrawWindows(iVideoCropRegion); + iContentRect = aRect; + if (iDisplay) + { + // iDisplay->UIGetCallback( *this, + // CMMASurfaceWindow::ESetDrawRect ); + // MMAPI UI 3.x req. + iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetDrawRect); + LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetDrawRect, after GetCallbackInUiThread"); } } -void CMMASurfaceWindow::ScaleVideoL(const TRect& aRect) +TInt CMMASurfaceWindow::StaticRedrawVideo(CMMASurfaceWindow& aSurfaceWindow) { - // return without scaling incase cropregion dimensions are zero - if (!(iVideoCropRegion.Width() && iVideoCropRegion.Height())) + LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::RedrawVideoL +"); + TRAPD(error, aSurfaceWindow.RedrawVideoL()); + LOG1(EJavaMMAPI,EInfo,"CMMASurfaceWindow::RedrawVideoL - error = %d",error); + return error; +} + +void CMMASurfaceWindow::RedrawVideoL() +{ + LOG(EJavaMMAPI, EInfo, "CMMASurfaceWindow::RedrawVideoL +"); + if (!iMediaClientVideoDisplay) { + LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: no MediaClientVideoDisplay set, aborting -"); return; } + iVisible = true; + if (iWindow) + { + TRect contentRect; + if (iVisible) + { + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: if visible true iContentRect = %d X %d",iContentRect.Width(),iContentRect.Height()); + contentRect = iContentRect; + // ScaleVideoL(contentRect); + } + else + { + LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL - if visible false"); + TRect emptyRect(0,0,0,0); + contentRect = emptyRect; + } + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - before intersection contentRect = %d X %d",contentRect.Width(),contentRect.Height()); - TReal32 numerator = 1.0f * (aRect.Width() - iVideoCropRegion.Width()); - TReal32 denominator = 1.0f * iVideoCropRegion.Width(); - // new video width percent(relative to the original width) to - // which video has to be scaled. - TReal32 scaleWidthPercent = 100.0f + (100.0f * (numerator/denominator)); + // align parent rect with respect to RWindow + TRect relativeParentRect; + relativeParentRect = iParentRect; + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - before moving parentRect = %d X %d",relativeParentRect.Width(),relativeParentRect.Height()); + + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - before moving parentRect.iTL = %d X %d",relativeParentRect.iTl.iX,relativeParentRect.iTl.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - before moving parentRect.iBr = %d X %d\n\n",relativeParentRect.iBr.iX,relativeParentRect.iBr.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - iRWindowRect.iTL = %d X %d",iRWindowRect.iTl.iX,iRWindowRect.iTl.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - iRWindowRect.iBr = %d X %d\n\n",iRWindowRect.iBr.iX,iRWindowRect.iBr.iY); + + + + relativeParentRect.Move(-iRWindowRect.iTl); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() -after moving parentRect = %d X %d",relativeParentRect.Width(),relativeParentRect.Height()); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - after moving parentRect.iTL = %d X %d",relativeParentRect.iTl.iX,relativeParentRect.iTl.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - after moving parentRect.iBr = %d X %d\n\n",relativeParentRect.iBr.iX,relativeParentRect.iBr.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - before moving draw rect.iTL = %d X %d",contentRect.iTl.iX,contentRect.iTl.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - before moving draw rect.iBr = %d X %d",contentRect.iBr.iX,contentRect.iBr.iY); - numerator = 1.0f * (aRect.Height() - iVideoCropRegion.Height()); - denominator = 1.0f * iVideoCropRegion.Height(); - // new video height percent(relative to the original height) to - // which video has to be scaled. - TReal32 scaleHeightPercent = 100.0f + (100.0f * (numerator/denominator)); + // setting video draw rect and adjusting it to window + TRect drawRect = contentRect; + drawRect.Move(relativeParentRect.iTl); + + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - after moving draw rect = %d X %d",drawRect.Width(),drawRect.Height()); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - after moving draw rect.iTL = %d X %d",drawRect.iTl.iX,drawRect.iTl.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - after moving draw rect.iBr = %d X %d",drawRect.iBr.iX,drawRect.iBr.iY); + + + + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - iVideoCropRegion.iTL = %d X %d",iVideoCropRegion.iTl.iX,iVideoCropRegion.iTl.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - iVideoCropRegion.iBr = %d X %d\n\n",iVideoCropRegion.iBr.iX,iVideoCropRegion.iBr.iY); - LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow:: scaleWidthPercent, scaleHeightPercent %d %d", - scaleWidthPercent, scaleHeightPercent ); + /*TRect temp1(TPoint(127,8),TPoint(255,104)); + TRect temp2(TPoint(0,0),TPoint(128,96)); + iMediaClientVideoDisplay->SetVideoExtentL(*iWindow, + temp1, + temp2);*/ + iMediaClientVideoDisplay->SetVideoExtentL(*iWindow, + drawRect, + iVideoCropRegion); + + + LOG(EJavaMMAPI, EInfo, "CMMASurfaceWindow::RedrawvideoL() - after setVideoExtentL"); - iMediaClientVideoDisplay->SetScaleFactorL(scaleWidthPercent, - scaleHeightPercent, - iVideoCropRegion); + //LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::RedrawVideoL: RedrawWindows() - areaRect = %d X %d",areaRect.Width(),areaRect.Height() ); + + iMediaClientVideoDisplay->RedrawWindows(iVideoCropRegion); + LOG(EJavaMMAPI, EInfo, "CMMASurfaceWindow::RedrawvideoL() - after redrawWindows"); + //iMediaClientVideoDisplay->RedrawWindows(temp2); + ((RWindow*)iWindow)->Invalidate(); + LOG(EJavaMMAPI, EInfo, "CMMASurfaceWindow::RedrawvideoL() -"); + } } + + const TRect& CMMASurfaceWindow::DrawRect() { return iContentRect; @@ -233,70 +288,64 @@ void CMMASurfaceWindow::SetPosition(const TPoint& aPosition) { + LOG(EJavaMMAPI, EInfo, "+ CMMASurfaceWindow::SetPosition"); iContentRect = TRect(aPosition, iContentRect.Size()); TInt error = StaticRedrawVideo(*this); if (KErrNone != error) { - ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::SetPosition, StaticRedrawVideo error = %d", error); + ELOG1(EJavaMMAPI, "MID::CMMASurfaceWindow::SetPosition, StaticRedrawVideo error = %d", error); } } TBool CMMASurfaceWindow::IsVisible() const - { - LOG1( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::IsVisible %d ", iVisible ); - return iVisible; - } +{ + LOG1(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::IsVisible %d ", iVisible); + return iVisible; +} void CMMASurfaceWindow::SetVisible(TBool aVisible, TBool aUseEventServer) { - LOG1( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetVisible aVisible %d", aVisible ); + LOG1(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetVisible aVisible %d", aVisible); RPointerArray< CMMAPlayer > players = iEventSource->Players(); if (players.Find(iPlayer) != KErrNotFound) { - LOG( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetVisible : Player found"); + LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetVisible : Player found"); if (aVisible != iVisible) { - LOG( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetVisible: Changed visibility" ); + LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetVisible: Changed visibility"); iVisible = aVisible; - if (iDisplay) - { - //MMAPI UI 3.x req. - iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetDrawRect); - LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetVisible,GetCallbackInUiThread"); - } - - /* if (aUseEventServer) - { - TInt error = StaticRedrawVideo(*this); - if (KErrNone != error) - { - ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::SetVisible, StaticRedrawVideo error = %d", error); - } - } - else // in MMA thread, so switch to UI thread - { - if (iDisplay) - { - //iDisplay->UIGetCallback(*this, - // CMMASurfaceWindow::ESetDrawRect ); - //MMAPI UI 3.x req. - iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetDrawRect); - LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetVisible,GetCallbackInUiThread"); - } - } - */ + if (aUseEventServer) + { + //TInt error = StaticRedrawVideo(*this); + iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetDrawRect); + // if (KErrNone != error) + // { + //ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::SetVisible, StaticRedrawVideo error = %d", error); + // } + } + else // in MMA thread, so switch to UI thread + { + if (iDisplay) + { + //iDisplay->UIGetCallback(*this, + // CMMASurfaceWindow::ESetDrawRect ); + //MMAPI UI 3.x req. + iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetDrawRect); + LOG(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::SetVisible,GetCallbackInUiThread"); + } + } } } } void CMMASurfaceWindow::SetWindowRect(const TRect& aRect,MMMADisplay::TThreadType /*aThreadType*/) { - LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetWindowRect aRect TL %d %d", - aRect.iTl.iX, aRect.iTl.iY); - LOG2( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetWindowRect aRect BR %d %d", - aRect.iBr.iX, aRect.iBr.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetWindowRect aRect TL %d %d", + aRect.iTl.iX, aRect.iTl.iY); + LOG2(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetWindowRect aRect BR %d %d", + aRect.iBr.iX, aRect.iBr.iY); iParentRect = aRect; } @@ -320,14 +369,14 @@ void CMMASurfaceWindow::SetDisplay(MMMADisplay *aDisplay) { - LOG( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetDisplay +" ); + LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetDisplay +"); if (iDisplay != aDisplay) { if (iDisplay) { // Clear the resources created within the old Display - iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ECleanVideoDisplay ); + iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ECleanVideoDisplay); } // Set the new Display @@ -343,14 +392,14 @@ } */ - } - - LOG( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetDisplay -" ); } + LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::SetDisplay -"); +} + void CMMASurfaceWindow::ContainerSet() - { - LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ContainerSet" ); +{ + LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ContainerSet"); // We are in UI thread now // Container was probably not set when @@ -360,63 +409,63 @@ { // Get a DSA stuff for the new Display // iDisplay->UIGetDSAResources( *this, MMMADisplay::EUiThread ); + } +} + +void CMMASurfaceWindow::Destroy() +{ + LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::Destroy"); + // Delete itself + delete this; +} + +void CMMASurfaceWindow::ProcureWindowResourcesFromQWidget(RWsSession * aWs, + CWsScreenDevice* aScreenDevice, + RWindowBase* aWindow) +{ + iWs = aWs; + iScreenDevice = aScreenDevice; + iWindow = aWindow; + LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget"); + switch (iVideoDisplayInitState) + { + case EUIResourcesAndSurfaceParametersNotSet: + { + LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -8"); + iVideoDisplayInitState = + EUIResourcesSetAndSurfaceParametersNotSet; + } + break; + case ESurfaceParametersSetAndUIResourcesNotSet: + { + LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -9"); + iVideoDisplayInitState = + EUIResourcesAndSurfaceParametersSet; + } + break; + // can not occur + case EUIResourcesSetAndSurfaceParametersNotSet: + case EUIResourcesAndSurfaceParametersSet: + default: + { + LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -10"); + __ASSERT_DEBUG(EFalse, User::Invariant()); + } + break; + } + + if (iVideoDisplayInitState == EUIResourcesAndSurfaceParametersSet) + { + LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -11"); + TRAPD(error, InitVideoDisplayL()); + LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -12"); + if (KErrNone != error) + { + ELOG1(EJavaMMAPI, "MID::CMMASurfaceWindow::MdcDSAResourcesCallback, error = %d", error); } } -void CMMASurfaceWindow::Destroy() - { - LOG( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::Destroy" ); - // Delete itself - delete this; - } - -void CMMASurfaceWindow::ProcureWindowResourcesFromQWidget(RWsSession * aWs, - CWsScreenDevice* aScreenDevice, - RWindowBase* aWindow) - { - iWs = aWs; - iScreenDevice = aScreenDevice; - iWindow = aWindow; - LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget" ); - switch ( iVideoDisplayInitState ) - { - LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -7" ); - case EUIResourcesAndSurfaceParametersNotSet: - { - LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -8" ); - iVideoDisplayInitState = - EUIResourcesSetAndSurfaceParametersNotSet; - } - break; - case ESurfaceParametersSetAndUIResourcesNotSet: - { - LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -9" ); - iVideoDisplayInitState = - EUIResourcesAndSurfaceParametersSet; - } - break; - // can not occur - case EUIResourcesSetAndSurfaceParametersNotSet: - case EUIResourcesAndSurfaceParametersSet: - default: - {LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -10" ); - __ASSERT_DEBUG( EFalse, User::Invariant() ); - } - break; - } - - if( iVideoDisplayInitState == EUIResourcesAndSurfaceParametersSet ) - { - LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -11" ); - TRAPD(error, InitVideoDisplayL()); - LOG(EJavaMMAPI,EInfo, "MID::CMMASurfaceWindow::ProcureWindowResourcesFromQWidget -12" ); - if ( KErrNone != error ) - { - ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::MdcDSAResourcesCallback, error = %d", error); - } - } - - } +} /* void CMMASurfaceWindow::MdcDSAResourcesCallback( RWsSession &aWs, @@ -430,48 +479,54 @@ iScreenDevice = &aScreenDevice; iWindow = &aWindow; - switch ( iVideoDisplayInitState ) - { - case EUIResourcesAndSurfaceParametersNotSet: - { - iVideoDisplayInitState = - EUIResourcesSetAndSurfaceParametersNotSet; - } - break; - case ESurfaceParametersSetAndUIResourcesNotSet: - { - iVideoDisplayInitState = - EUIResourcesAndSurfaceParametersSet; - } - break; - // can not occur - case EUIResourcesSetAndSurfaceParametersNotSet: - case EUIResourcesAndSurfaceParametersSet: - default: + switch ( iVideoDisplayInitState ) + { + case EUIResourcesAndSurfaceParametersNotSet: + { + iVideoDisplayInitState = + EUIResourcesSetAndSurfaceParametersNotSet; + } + break; + case ESurfaceParametersSetAndUIResourcesNotSet: + { + iVideoDisplayInitState = + EUIResourcesAndSurfaceParametersSet; + } + break; + // can not occur + case EUIResourcesSetAndSurfaceParametersNotSet: + case EUIResourcesAndSurfaceParametersSet: + default: { - __ASSERT_DEBUG( EFalse, User::Invariant() ); + __ASSERT_DEBUG( EFalse, User::Invariant() ); } - break; - } + break; + } - if( iVideoDisplayInitState == EUIResourcesAndSurfaceParametersSet ) - { - TRAPD(error, InitVideoDisplayL()); - if ( KErrNone != error ) - { - LOG1(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::MdcDSAResourcesCallback, error = %d", error); - } - } + if( iVideoDisplayInitState == EUIResourcesAndSurfaceParametersSet ) + { + TRAPD(error, InitVideoDisplayL()); + if ( KErrNone != error ) + { + LOG1(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::MdcDSAResourcesCallback, error = %d", error); + } + } } */ -void CMMASurfaceWindow::UICallback( TInt aCallbackId ) - { +void CMMASurfaceWindow::UICallback(TInt aCallbackId) +{ // We are in UI thread context now. - LOG1( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::MdcUICallback CallbackId = %d", aCallbackId ); + LOG1(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::MdcUICallback CallbackId = %d", aCallbackId); TInt error = KErrNone; switch (aCallbackId) { + case ESetClipRect: + { + error = SetClipRect(); + LOG1(EJavaMMAPI,EInfo,"MID::CMMASurfaceWindow::MdcUICallback,SetClipRect error = %d", error); + } + break; case ERemoveSurface: { DoRemoveSurface(); @@ -480,13 +535,13 @@ case ESetDrawRect: { error = StaticRedrawVideo(*this); - ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::MdcUICallback,StaticRedrawVideo error = %d", error); + ELOG1(EJavaMMAPI, "MID::CMMASurfaceWindow::MdcUICallback,StaticRedrawVideo error = %d", error); } break; case EInitVideoDisplay: { TRAP(error, InitVideoDisplayL()); - ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::MdcUICallback,InitVideoDisplayL error = %d", error); + ELOG1(EJavaMMAPI, "MID::CMMASurfaceWindow::MdcUICallback,InitVideoDisplayL error = %d", error); } break; case ESetChangedSurfaceParameters: @@ -525,53 +580,53 @@ iCropRect = aCropRect; iPixelAspectRatio = aPixelAspectRatio; - switch ( iVideoDisplayInitState ) - { - case EUIResourcesAndSurfaceParametersNotSet: - { - iVideoDisplayInitState = - ESurfaceParametersSetAndUIResourcesNotSet; - } - break; - case EUIResourcesSetAndSurfaceParametersNotSet: - { - iVideoDisplayInitState = - EUIResourcesAndSurfaceParametersSet; - } - break; - // control reaches below two switch cases when - // playback is looped using setLoopCount() in java. - case ESurfaceParametersSetAndUIResourcesNotSet: - { - } - break; - // update surface parameters and return with out calling - // InitVideoDisplayL again. - case EUIResourcesAndSurfaceParametersSet: - { - // iDisplay->UIGetCallback( *this, CMMASurfaceWindow::EResetSurfaceParameters ); - //MMAPI UI 3.x req. - LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetSurfaceParameters : switch case EUIResourcesAndSurfaceParametersSet +"); - iDisplay->GetCallbackInUiThread( (TInt)CMMASurfaceWindow::EResetSurfaceParameters ); - LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetSurfaceParameters : switch case EUIResourcesAndSurfaceParametersSet -"); - return; - } - // break; not reachable - default: // can not occur - { - __ASSERT_DEBUG( EFalse, User::Invariant() ); - } - break; - } + switch (iVideoDisplayInitState) + { + case EUIResourcesAndSurfaceParametersNotSet: + { + iVideoDisplayInitState = + ESurfaceParametersSetAndUIResourcesNotSet; + } + break; + case EUIResourcesSetAndSurfaceParametersNotSet: + { + iVideoDisplayInitState = + EUIResourcesAndSurfaceParametersSet; + } + break; + // control reaches below two switch cases when + // playback is looped using setLoopCount() in java. + case ESurfaceParametersSetAndUIResourcesNotSet: + { + } + break; + // update surface parameters and return with out calling + // InitVideoDisplayL again. + case EUIResourcesAndSurfaceParametersSet: + { + // iDisplay->UIGetCallback( *this, CMMASurfaceWindow::EResetSurfaceParameters ); + //MMAPI UI 3.x req. + LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetSurfaceParameters : switch case EUIResourcesAndSurfaceParametersSet +"); + iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::EResetSurfaceParameters); + LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetSurfaceParameters : switch case EUIResourcesAndSurfaceParametersSet -"); + return; + } + // break; not reachable + default: // can not occur + { + __ASSERT_DEBUG(EFalse, User::Invariant()); + } + break; + } - if ( iVideoDisplayInitState == EUIResourcesAndSurfaceParametersSet ) - { - //iDisplay->UIGetCallback( *this, CMMASurfaceWindow::EInitVideoDisplay ); - //MMAPI UI 3.x req. - iDisplay->GetCallbackInUiThread( (TInt)CMMASurfaceWindow::EInitVideoDisplay ); - LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetSurfaceParameters,EUIResourcesAndSurfaceParametersSet"); - } - } + if (iVideoDisplayInitState == EUIResourcesAndSurfaceParametersSet) + { + //iDisplay->UIGetCallback( *this, CMMASurfaceWindow::EInitVideoDisplay ); + //MMAPI UI 3.x req. + iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::EInitVideoDisplay); + LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetSurfaceParameters,EUIResourcesAndSurfaceParametersSet"); + } +} void CMMASurfaceWindow::SetChangedSurfaceParameters(const TSurfaceId& aSurfaceId, const TRect& aCropRect, @@ -584,18 +639,18 @@ if (iDisplay) { //iDisplay->UIGetCallback(*this, CMMASurfaceWindow::ESetChangedSurfaceParameters); - LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetChangedSurfaceParameters + "); - iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetChangedSurfaceParameters); - LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetChangedSurfaceParameters - "); + LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetChangedSurfaceParameters + "); + iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ESetChangedSurfaceParameters); + LOG(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetChangedSurfaceParameters - "); - } + } } void CMMASurfaceWindow::RemoveSurface() { if (iDisplay) { - iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ERemoveSurface); + iDisplay->GetCallbackInUiThread((TInt)CMMASurfaceWindow::ERemoveSurface); } } @@ -615,13 +670,13 @@ if (iMediaClientVideoDisplay) { - iMediaClientVideoDisplay->RemoveSurface(); + iMediaClientVideoDisplay->RemoveSurface(); TInt error = iMediaClientVideoDisplay->SurfaceCreated(iSurfaceId, iCropRect, iPixelAspectRatio, iVideoCropRegion); - ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::DoResetSurfaceParameters,SurfaceCreated error = %d", error); + ELOG1(EJavaMMAPI, "MID::CMMASurfaceWindow::DoResetSurfaceParameters,SurfaceCreated error = %d", error); iMediaClientVideoDisplay->RedrawWindows(iVideoCropRegion); } @@ -635,7 +690,7 @@ iCropRect, iPixelAspectRatio); - ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::DoSetChangedSurfaceParameters,SurfaceParametersChanged, error = %d", error); + ELOG1(EJavaMMAPI, "MID::CMMASurfaceWindow::DoSetChangedSurfaceParameters,SurfaceParametersChanged, error = %d", error); iMediaClientVideoDisplay->RedrawWindows(iVideoCropRegion); } @@ -662,44 +717,68 @@ // video is not scaled untill user requests explicitly // so retain same video width & height. - TReal32 scaleWidthPercent = 100.0f; - TReal32 scaleHeightPercent = 100.0f; + //TReal32 scaleWidthPercent = 100.0f; + //TReal32 scaleHeightPercent = 100.0f; // video rotation feature not supported in MMAPI - TVideoRotation videoRotation(EVideoRotationNone); + //TVideoRotation videoRotation(EVideoRotationNone); // no automatic scaling, can be controlled only via VideoControl - TAutoScaleType autoScaleType = EAutoScaleNone; + //TAutoScaleType autoScaleType = EAutoScaleNone; // always align video to the top left corner of the display area - TInt horizontalPosition(EHorizontalAlignLeft); - TInt verticalPosition(EVerticalAlignTop); + //TInt horizontalPosition(EHorizontalAlignLeft); + //TInt verticalPosition(EVerticalAlignTop); TInt error = iMediaClientVideoDisplay->SurfaceCreated(iSurfaceId, iCropRect, iPixelAspectRatio, iVideoCropRegion); - ELOG1( EJavaMMAPI, "MID::CMMASurfaceWindow::InitVideoDisplayL error = %d", error ); + ELOG1(EJavaMMAPI, "MID::CMMASurfaceWindow::InitVideoDisplayL error = %d", error); User::LeaveIfError(error); + TRect contentRect; + if (iVisible) + { + contentRect = iContentRect; + } + else + { + TRect emptyRect(0,0,0,0); + contentRect = emptyRect; + } + + // align parent rect with respect to RWindow + TRect relativeParentRect; + relativeParentRect = iParentRect; + relativeParentRect.Move(-iRWindowRect.iTl); + + // setting video draw rect and adjusting it to window + TRect drawRect = contentRect; + drawRect.Move(relativeParentRect.iTl); + + TRect clipRect(0,0,iRWindowRect.Width(),iRWindowRect.Height()); + //iWindow->SetExtentErr(TPoint(127,8),TSize(128,96)); iMediaClientVideoDisplay->AddDisplayWindowL(iWindow, - iContentRect, + clipRect, iVideoCropRegion, - iContentRect, - scaleWidthPercent, - scaleHeightPercent, - videoRotation, - autoScaleType, - horizontalPosition, - verticalPosition, + drawRect, // video extent + 0.0f, // ignore + 0.0f, // ignore + EVideoRotationNone, + EAutoScaleBestFit, + EHorizontalAlignLeft, + EVerticalAlignTop, (RWindow*)iWindow); + + RedrawVideoL(); } void CMMASurfaceWindow::CleanVideoDisplay() { - LOG( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::CleanVideoDisplay +" ); + LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::CleanVideoDisplay +"); SetVisible(EFalse, ETrue); if (iMediaClientVideoDisplay) @@ -717,12 +796,8 @@ iWs = NULL; } - LOG( EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::CleanVideoDisplay -" ); + LOG(EJavaMMAPI, EInfo, "MID::CMMASurfaceWindow::CleanVideoDisplay -"); } -CMMAPlayer* CMMASurfaceWindow::UiPlayer() - { - return iPlayer; - } // END OF FILE