javauis/mmapi_qt/baseline/src/cmmadisplay.cpp
changeset 56 abc41079b313
parent 26 dc7c549001d5
equal deleted inserted replaced
50:023eef975703 56:abc41079b313
    48 CMMADisplay::CMMADisplay():
    48 CMMADisplay::CMMADisplay():
    49         iVisible(ETrue),
    49         iVisible(ETrue),
    50         iFullScreen(EFalse),
    50         iFullScreen(EFalse),
    51         iContainerVisible(ETrue),
    51         iContainerVisible(ETrue),
    52         iIsForeground(ETrue),
    52         iIsForeground(ETrue),
    53         iResetDrawRect(EFalse)
    53         iResetDrawRect(EFalse),
    54 {
    54         iIseSWT(EFalse)
    55 }
    55 {
    56 
    56 }
    57 void CMMADisplay::Construct(MMAFunctionServer* eventSource , jobject javadisplayref)
    57 
       
    58 void CMMADisplay::Construct(MMAFunctionServer* eventSource ,JNIEnv* aJni, jobject javadisplayref)
    58 {
    59 {
    59     iEventSource = eventSource;
    60     iEventSource = eventSource;
    60     iJni = iEventSource->getValidJniEnv();
    61     iJavadisplayref = javadisplayref;
       
    62     LOG1(EJavaMMAPI,EInfo,"CMMADisplay::Construct=%d",iIseSWT);
       
    63     if (iIseSWT)
       
    64     {
       
    65         iJni = aJni;
       
    66     }
       
    67     else
       
    68     {
       
    69         iJni = iEventSource->getValidJniEnv();
       
    70     }
    61     iJavaDisplayObject = iJni->NewGlobalRef(javadisplayref);
    71     iJavaDisplayObject = iJni->NewGlobalRef(javadisplayref);
    62     iJavaDisplayClass = iJni->GetObjectClass(iJavaDisplayObject);
    72     iJavaDisplayClass = iJni->GetObjectClass(iJavaDisplayObject);
       
    73 
       
    74     setRectID = iJni->GetMethodID(iJavaDisplayClass,
       
    75                                   "setRect",
       
    76                                   "()V");
       
    77     iRectDimensionField = iJni->GetFieldID(iJavaDisplayClass, "rectDimension", "[I");
       
    78 
       
    79     redrawControlID = iJni->GetMethodID(
       
    80                           iJavaDisplayClass,
       
    81                           "redrawControl",
       
    82                           "()V");
       
    83 
       
    84     removeContentBoundID = iJni->GetMethodID(
       
    85                                iJavaDisplayClass,
       
    86                                "removeContentBound",
       
    87                                "()V");
       
    88 
       
    89     setContentBoundID = iJni->GetMethodID(
       
    90                             iJavaDisplayClass,
       
    91                             "setContentBound",
       
    92                             "()V");
       
    93 
       
    94     getCallBackMethodID = iJni->GetMethodID(
       
    95                               iJavaDisplayClass,
       
    96                               "GetCallbackInUiThread",
       
    97                               "(I)V");
       
    98 
       
    99     getBoundRectID = iJni->GetMethodID(
       
   100                          iJavaDisplayClass,
       
   101                          "getBoundRect",
       
   102                          "()V");
       
   103 
       
   104     iDisplayboundarrField = iJni->GetFieldID(iJavaDisplayClass, "displayboundarr", "[I");
       
   105 
    63     // Components must have direct content.
   106     // Components must have direct content.
    64     /* __ASSERT_LOG(EJavaMMAPI,EInfo,"aDirectContainer, User::Invariant());
   107     /* __ASSERT_LOG(EJavaMMAPI,EInfo,"aDirectContainer, User::Invariant());
    65 
   108 
    66      // Not owned
   109      // Not owned
    67      iDirectContainer = aDirectContainer;
   110      iDirectContainer = aDirectContainer;
    68 
   111 
    69      // Get component visibility. Later visibility changes will
   112      // Get component visibility. Later visibility changes will
    70      // be informed through MDirectContent observer.
   113      // be informed through MDirectContent observer.
    71      iContainerVisible = iDirectContainer->MdcContainerVisibility();
   114      iContainerVisible = iDirectContainer->MdcContainerVisibility();
    72      LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::Construct iContainerVisible = %d", iContainerVisible);
   115      LOG1(EJavaMMAPI,EInfo,"CMMADisplay::Construct iContainerVisible = %d", iContainerVisible);
    73      LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::Construct iVisible = %d", iVisible);
   116      LOG1(EJavaMMAPI,EInfo,"CMMADisplay::Construct iVisible = %d", iVisible);
    74 
   117 
    75      // Add this MDirectContent to the MDirectContainer. Cannot fail.
   118      // Add this MDirectContent to the MDirectContainer. Cannot fail.
    76      iDirectContainer->MdcAddContent(this);
   119      iDirectContainer->MdcAddContent(this);
    77      */
   120      */
    78 }
   121 }
   121         // move rect middle of the screen
   164         // move rect middle of the screen
   122         position.iX = (aFullScreenSize.iWidth - drawRect.iBr.iX) / 2;
   165         position.iX = (aFullScreenSize.iWidth - drawRect.iBr.iX) / 2;
   123     }
   166     }
   124 
   167 
   125     drawRect.Move(position);
   168     drawRect.Move(position);
       
   169     LOG2(EJavaMMAPI, EInfo, "CMMADisplay::ScaleToFullScreen::drawRect.Width=%d, drawRect.Height=%d",drawRect.Width(), drawRect.Height());
   126     LOG(EJavaMMAPI,EInfo,"CMMADisplay::ScaleToFullScreen() -");
   170     LOG(EJavaMMAPI,EInfo,"CMMADisplay::ScaleToFullScreen() -");
   127     return drawRect;
   171     return drawRect;
   128 }
   172 }
   129 
   173 
   130 // from MMMADisplay
   174 // from MMMADisplay
   156     LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: iClipRect = %d X %d",iClipRect.Width(),iClipRect.Height());
   200     LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: iClipRect = %d X %d",iClipRect.Width(),iClipRect.Height());
   157     if (!iClipRect.IsEmpty())
   201     if (!iClipRect.IsEmpty())
   158     {
   202     {
   159         LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: Removing old rect");
   203         LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetClippingRegion: Removing old rect");
   160         //iDirectContainer->MdcRemoveContentBounds(iClipRect);
   204         //iDirectContainer->MdcRemoveContentBounds(iClipRect);
       
   205         RemoveContentBoundFromJavaControl(iClipRect);
   161         iClipRect.SetRect(0, 0, 0, 0);
   206         iClipRect.SetRect(0, 0, 0, 0);
   162         refreshScreen = ETrue;
   207         refreshScreen = ETrue;
   163     }
   208     }
   164     // If visible then set a new clip rect
   209     // If visible then set a new clip rect
   165     if (iVisible && iContainerVisible)
   210     if (iVisible && iContainerVisible)
   241 }
   286 }
   242 
   287 
   243 // from MMMADisplay
   288 // from MMMADisplay
   244 TSize CMMADisplay::DisplaySize()
   289 TSize CMMADisplay::DisplaySize()
   245 {
   290 {
       
   291     LOG(EJavaMMAPI,EInfo,"CMMADisplay::DisplaySize +");
   246     if (iWindow && iFullScreen)
   292     if (iWindow && iFullScreen)
   247     {
   293     {
       
   294         LOG(EJavaMMAPI,EInfo,"CMMADisplay::DisplaySize if loop ");
   248         return iWindow->DrawRect().Size();
   295         return iWindow->DrawRect().Size();
   249     }
   296     }
   250     else
   297     else
   251     {
   298     {
       
   299         LOG1(EJavaMMAPI,EInfo,"CMMADisplay::DisplaySize else loop %d",iUserRect.Size().iHeight);
   252         return iUserRect.Size();
   300         return iUserRect.Size();
   253     }
   301     }
   254 }
   302 }
   255 
   303 
   256 // from MMMADisplay
   304 // from MMMADisplay
   257 void CMMADisplay::SetDisplaySizeL(const TSize& aSize)
   305 void CMMADisplay::SetDisplaySizeL(const TSize& aSize)
   258 {
   306 {
   259     // user rect contains size set from java.
   307     // user rect contains size set from java.
   260     iUserRect.SetSize(aSize);
   308     iUserRect.SetSize(aSize);
   261     LOG2(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetDisplaySizeL iUserRect = %d X %d", iUserRect.Width() ,iUserRect.Height());
   309     LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SetDisplaySizeL iUserRect = %d X %d", iUserRect.Width() ,iUserRect.Height());
   262     // Size change has no effect if fullscreen mode is on.
   310     // Size change has no effect if fullscreen mode is on.
   263     // New size could be used when fullscreen is turned off.
   311     // New size could be used when fullscreen is turned off.
   264     if (iContainerVisible && !iFullScreen && iWindow)
   312     if (iContainerVisible && !iFullScreen && iWindow)
   265     {
   313     {
   266         LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible);
   314         LOG1(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible);
   267         RemoveClippingRegion();
   315         RemoveClippingRegion();
   268         LOG2(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetDisplaySizeL iUserRect after removingClipRegion = %d X %d", iUserRect.Width() ,iUserRect.Height());
   316         LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SetDisplaySizeL iUserRect after removingClipRegion = %d X %d", iUserRect.Width() ,iUserRect.Height());
   269         iWindow->SetDrawRect(iUserRect);
   317         iWindow->SetDrawRect(iUserRect);
   270         AddClippingRegion();
   318         AddClippingRegion();
   271         LOG2(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetDisplaySizeL iUserRect after AddingClipRegion = %d X %d", iUserRect.Width() ,iUserRect.Height());
   319         LOG2(EJavaMMAPI,EInfo,"CMMADisplay::SetDisplaySizeL iUserRect after AddingClipRegion = %d X %d", iUserRect.Width() ,iUserRect.Height());
   272     }
   320     }
   273     else
   321     else
   274     {
   322     {
   275         LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible);
   323         LOG1(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible);
   276         iResetDrawRect = ETrue;
   324         iResetDrawRect = ETrue;
   277     }
   325     }
   278 }
   326 }
   279 
   327 
   280 // from MMMADisplay
   328 // from MMMADisplay
   281 void CMMADisplay::SetVisible(TBool aValue)
   329 void CMMADisplay::SetVisible(TBool aValue)
   282 {
   330 {
   283     iVisible = aValue;
   331     iVisible = aValue;
   284     // Window may be set visible only if container is on screen,
   332     // Window may be set visible only if container is on screen,
   285 
   333 
   286     LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible);
   334     LOG1(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible + iContainerVisible = %d", iContainerVisible);
   287     LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible iVisible = %d", iVisible);
   335     LOG1(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible iVisible = %d", iVisible);
   288     if (!iIsForeground)
   336     if (!iIsForeground)
   289     {
   337     {
   290         LOG(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible - iIsForeground = 0");
   338         LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible - iIsForeground = 0");
   291         return;
   339         return;
   292     }
   340     }
   293     // if not it can not be set visible.
   341     // if not it can not be set visible.
   294     if (iWindow && iContainerVisible)
   342     if (iWindow && iContainerVisible)
   295     {
   343     {
   296         // iWindow->SetVisible(aValue, EFalse);
   344         // iWindow->SetVisible(aValue, EFalse);
   297         //MMAPI UI 3.x req. (had to comment above line and add below line which excutes in FS thread)
   345         //MMAPI UI 3.x req. (had to comment above line and add below line which excutes in FS thread)
   298         iWindow->SetVisible(aValue, ETrue);
   346         if (iIseSWT == true)
       
   347         {
       
   348             iWindow->SetVisible(aValue, ETrue);
       
   349         }
       
   350         else
       
   351         {
       
   352             iWindow->SetVisible(aValue, EFalse);
       
   353         }
       
   354         LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible after iWindow->SetVisible()");
   299         SetClippingRegion();
   355         SetClippingRegion();
   300         LOG(EJavaMMAPI,EInfo,"MID::CMMADisplay::SetVisible -");
   356         LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetVisible -");
   301     }
   357     }
   302 }
   358 }
   303 
   359 
   304 
   360 
   305 void CMMADisplay::SetContainerVisibility(TBool aValue)
   361 void CMMADisplay::SetContainerVisibility(TBool aValue)
   326     return iWindow;
   382     return iWindow;
   327 }
   383 }
   328 
   384 
   329 TBool CMMADisplay::IsVisible()
   385 TBool CMMADisplay::IsVisible()
   330 {
   386 {
   331     LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::IsVisible iContainerVisible = %d", iContainerVisible);
   387     LOG1(EJavaMMAPI,EInfo,"CMMADisplay::IsVisible iContainerVisible = %d", iContainerVisible);
   332     LOG1(EJavaMMAPI,EInfo,"MID::CMMADisplay::IsVisible iVisible = %d", iVisible);
   388     LOG1(EJavaMMAPI,EInfo,"CMMADisplay::IsVisible iVisible = %d", iVisible);
   333     // display is visible if container is on screen and
   389     // display is visible if container is on screen and
   334     // java side has set it visible
   390     // java side has set it visible
   335     return iVisible && iContainerVisible;
   391     return iVisible && iContainerVisible;
   336 }
   392 }
   337 
   393 
   364         // midlet comes to foreground (0 to 1 transition),
   420         // midlet comes to foreground (0 to 1 transition),
   365         // Allow turn on or turn off based on aVisible
   421         // Allow turn on or turn off based on aVisible
   366         if (aVisible != iWindow->IsVisible())
   422         if (aVisible != iWindow->IsVisible())
   367         {
   423         {
   368             // Allow
   424             // Allow
   369             LOG(EJavaMMAPI,EInfo,"MID::CMMADisplay::MdcContainerVisibilityChanged Allow ");
   425             LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged Allow ");
   370         }
   426         }
   371         else if (iContainerVisible == aVisible)
   427         else if (iContainerVisible == aVisible)
   372         {
   428         {
   373             LOG(EJavaMMAPI,EInfo,"MID::CMMADisplay::MdcContainerVisibilityChanged iContainerVisible == aVisible ");
   429             LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged iContainerVisible == aVisible ");
   374             // if state is not changed, we do not need to do it again
   430             // if state is not changed, we do not need to do it again
   375             return;
   431             return;
   376         }
   432         }
   377     }
   433     }
   378 
   434 
   379     LOG(EJavaMMAPI,EInfo,"MID::CMMADisplay::MdcContainerVisibilityChanged After condition2");
   435     LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged After condition2");
   380 
   436 
   381     if (iWindow)
   437     if (iWindow)
   382     {
   438     {
   383         LOG(EJavaMMAPI,EInfo,"MID::CMMADisplay::MdcContainerVisibilityChanged iWindow is valid ");
   439         LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged iWindow is valid ");
   384         // change is only needed if java side has set display visible or
   440         // change is only needed if java side has set display visible or
   385         // if container loses focus
   441         // if container loses focus
   386         if (!iContainerVisible || iVisible)
   442         if (!iContainerVisible || iVisible)
   387         {
   443         {
       
   444             LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged container is invisible and window is visible");
   388             if (iResetDrawRect && aVisible && !iFullScreen)
   445             if (iResetDrawRect && aVisible && !iFullScreen)
   389             {
   446             {
       
   447                 LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged resetdrawrect is true");
   390                 iWindow->SetDrawRectThread(iUserRect);
   448                 iWindow->SetDrawRectThread(iUserRect);
   391                 iResetDrawRect = EFalse;
   449                 iResetDrawRect = EFalse;
   392             }
   450             }
   393             if (iIsForeground)
   451             if (iIsForeground)
   394             {
   452             {
   395                 iWindow->SetVisible(aVisible);
   453                 LOG(EJavaMMAPI,EInfo,"CMMADisplay::MdcContainerVisibilityChanged container foreground is true");
       
   454                 iWindow->SetVisible(aVisible,false);
   396             }
   455             }
   397             SetClippingRegion();
   456             SetClippingRegion();
   398         }
   457         }
   399     }
   458     }
   400 }
   459 }
   466 */
   525 */
   467 
   526 
   468 
   527 
   469 void CMMADisplay::GetCallbackInUiThread(TInt placeholder)
   528 void CMMADisplay::GetCallbackInUiThread(TInt placeholder)
   470 {
   529 {
       
   530     JNIEnv* validJni = iEventSource->getValidJniEnv();
       
   531     jobject javaDisplayObject;
       
   532     jclass javaDisplayClass;
   471     LOG(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread +");
   533     LOG(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread +");
   472 
   534     /**
   473 
   535      * In case of eSWT iJavaDisplayClass and iJavaDisplayObject were initialized with JNI
   474 
   536      * in UI Thread. Since this function is called from FunctionServer Thread so we need to get
   475 
   537      * valid JNI for FunctionServer Thread and need to initialize iJavaDisplayClass and iJavaDisplayObject
   476 
   538      * again for FunctionServer Thread rather than using the one that was created in Constructor(UI Thread).
   477 
   539      */
   478 
   540     if (iIseSWT)
   479 
   541     {
   480     jmethodID getCallBackMethodID = iJni->GetMethodID(
   542         javaDisplayObject = validJni->NewGlobalRef(iJavadisplayref);
   481                                         iJavaDisplayClass,
   543         javaDisplayClass =  validJni->GetObjectClass(iJavaDisplayObject);
   482                                         "GetCallbackInUiThread",
   544     }
   483                                         "(I)V");
   545     else
   484     // LOG1(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread getCallBackMethodID = %d",getCallBackMethodID);
   546     {
   485     iJni->CallVoidMethod(iJavaDisplayObject,getCallBackMethodID,placeholder);
   547         javaDisplayObject = iJavaDisplayObject;
       
   548         javaDisplayClass = iJavaDisplayClass;
       
   549     }
       
   550     getCallBackMethodID = validJni->GetMethodID(javaDisplayClass,
       
   551                           "GetCallbackInUiThread",
       
   552                           "(I)V");
       
   553     LOG1(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread getCallBackMethodID = %d",getCallBackMethodID);
       
   554     validJni->CallVoidMethod(javaDisplayObject,getCallBackMethodID,placeholder);
   486     LOG(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread -");
   555     LOG(EJavaMMAPI,EInfo,"CMMADisplay::GetCallbackInUiThread -");
   487 }
   556 }
   488 
   557 
   489 void CMMADisplay::CalledBackInUiThread(TInt placeholder)
   558 void CMMADisplay::CalledBackInUiThread(TInt placeholder)
   490 {
   559 {
   512     if (!iWindow)
   581     if (!iWindow)
   513     {
   582     {
   514         return;
   583         return;
   515     }
   584     }
   516     iWindow->ProcureWindowResourcesFromQWidget(iWs,iScreenDevice,window);
   585     iWindow->ProcureWindowResourcesFromQWidget(iWs,iScreenDevice,window);
       
   586     iWindow->SetVisible(ETrue,ETrue);
   517     LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetWindowResources -");
   587     LOG(EJavaMMAPI,EInfo,"CMMADisplay::SetWindowResources -");
   518 }
   588 }
   519 
   589 
   520 
   590 
   521 void CMMADisplay::SetForeground(TBool aForeground, TBool aUseEventServer)
   591 void CMMADisplay::SetForeground(TBool aForeground, TBool aUseEventServer)
   627 
   697 
   628 
   698 
   629 void CMMADisplay::ResetJavaRectObject(const TRect& aRect)
   699 void CMMADisplay::ResetJavaRectObject(const TRect& aRect)
   630 {
   700 {
   631     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject +");
   701     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject +");
   632     JNIEnv* validJni = iEventSource->getValidJniEnv();
   702     //TRect rect = aRect;
   633     jmethodID setRectID = validJni->GetMethodID(
   703     JNIEnv* validJni = iJni;//iEventSource->getValidJniEnv();//iJni;
   634                               iJavaDisplayClass,
   704     /*jmethodID setRectID = validJni->GetMethodID(
   635                               "setRect",
   705                                                  iJavaDisplayClass,
   636                               "()V");
   706                                                  "setRect",
   637 
   707                                              "()V");
       
   708     */
   638     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --1");
   709     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --1");
   639     // set the value to java,so that we can access those from array
   710     // set the value to java,so that we can access those from array
   640     jfieldID field = validJni->GetFieldID(iJavaDisplayClass, "rectDimension", "[I");
   711 
   641     if (field == NULL)
   712     //jfieldID iRectDimensionField = validJni->GetFieldID(iJavaDisplayClass, "rectDimension", "[I");
       
   713     if (iRectDimensionField == NULL)
   642     {
   714     {
   643         // handle error
   715         // handle error
   644     }
   716     }
   645     /* Write to the instance fields */
   717     /* Write to the instance fields */
   646     jintArray javaDimensionarr = (jintArray)validJni->GetObjectField(iJavaDisplayObject, field);
   718     jintArray javaDimensionarr = (jintArray)validJni->GetObjectField(iJavaDisplayObject, iRectDimensionField);
   647     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --2");
   719     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --2");
   648     jint* nativeRectDimensionArr = validJni->GetIntArrayElements(javaDimensionarr, NULL);
   720     jint* nativeRectDimensionArr = validJni->GetIntArrayElements(javaDimensionarr, NULL);
   649     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --3");
   721     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject --3");
   650     if (!nativeRectDimensionArr)
   722     if (!nativeRectDimensionArr)
   651     {
   723     {    // inputBuffer was already allocated
   652         // inputBuffer was already allocated
       
   653         validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, JNI_ABORT);
   724         validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, JNI_ABORT);
   654         LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject Error in resetting rect dimension to java");
   725         LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject Error in resetting rect dimension to java");
   655         return;
   726         return;
   656     }
   727     }
   657     nativeRectDimensionArr[0] = aRect.iTl.iX;
   728     nativeRectDimensionArr[0] = aRect.iTl.iX;
   658     nativeRectDimensionArr[1] = aRect.iTl.iY;;
   729     nativeRectDimensionArr[1] = aRect.iTl.iY;;
   659     nativeRectDimensionArr[2] = aRect.Width();
   730     nativeRectDimensionArr[2] = aRect.Width();
   660     nativeRectDimensionArr[3] = aRect.Height();
   731     nativeRectDimensionArr[3] = aRect.Height();
   661     // Now the dimension array in java is updated hence reset the java rect
   732     // Now the dimension array in java is updated hence reset the java rect
       
   733 
       
   734     validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, 0);
   662     validJni->CallVoidMethod(iJavaDisplayObject,setRectID);
   735     validJni->CallVoidMethod(iJavaDisplayObject,setRectID);
   663 
   736 
   664     validJni->ReleaseIntArrayElements(javaDimensionarr, nativeRectDimensionArr, JNI_COMMIT);
       
   665     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject -");
   737     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::ResetJavaRectObject -");
   666 }
   738 }
   667 
   739 
   668 
   740 
   669 void CMMADisplay::SetContentBoundToJavaControl(const TRect& aRect)
   741 void CMMADisplay::SetContentBoundToJavaControl(const TRect& aRect)
   670 {
   742 {
   671     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::SetContentBoundToJavaControl +");
   743     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::SetContentBoundToJavaControl +");
   672     JNIEnv* validJni = iEventSource->getValidJniEnv();
   744     JNIEnv* validJni = iJni;//iEventSource->getValidJniEnv();//iJni;
   673     // Reset the java rect
   745     // Reset the java rect
   674     ResetJavaRectObject(aRect);
   746     ResetJavaRectObject(aRect);
   675     jmethodID setContentBoundID = validJni->GetMethodID(
   747     /*jmethodID setContentBoundID = validJni->GetMethodID(
   676                                       iJavaDisplayClass,
   748                                          iJavaDisplayClass,
   677                                       "setContentBound",
   749                                          "setContentBound",
   678                                       "()V");
   750                                      "()V");
       
   751     */
   679     // call java function
   752     // call java function
   680     validJni->CallVoidMethod(iJavaDisplayObject,setContentBoundID);
   753     validJni->CallVoidMethod(iJavaDisplayObject,setContentBoundID);
   681     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::SetContentBoundToJavaControl -");
   754     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::SetContentBoundToJavaControl -");
   682 }
   755 }
   683 
   756 
   684 void CMMADisplay::RemoveContentBoundFromJavaControl(const TRect& aRect)
   757 void CMMADisplay::RemoveContentBoundFromJavaControl(const TRect& aRect)
   685 {
   758 {
   686     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RemoveContentBoundFromJavaControl +");
   759     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RemoveContentBoundFromJavaControl +");
   687     JNIEnv* validJni = iEventSource->getValidJniEnv();
   760     JNIEnv* validJni = iJni;//iEventSource->getValidJniEnv();
   688     // Reset the java rect
   761     // Reset the java rect
   689     ResetJavaRectObject(aRect);
   762     ResetJavaRectObject(aRect);
   690     jmethodID removeContentBoundID = validJni->GetMethodID(
   763     /*jmethodID removeContentBoundID = validJni->GetMethodID(
   691                                          iJavaDisplayClass,
   764                                          iJavaDisplayClass,
   692                                          "removeContentBound",
   765                                          "removeContentBound",
   693                                          "()V");
   766                                      "()V");
       
   767     */
   694     // call java function
   768     // call java function
   695     validJni->CallVoidMethod(iJavaDisplayObject,removeContentBoundID);
   769     validJni->CallVoidMethod(iJavaDisplayObject,removeContentBoundID);
   696     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RemoveContentBoundFromJavaControl -");
   770     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RemoveContentBoundFromJavaControl -");
   697 }
   771 }
   698 
   772 
   699 void CMMADisplay::RefreshJavaControl()
   773 void CMMADisplay::RefreshJavaControl()
   700 {
   774 {
   701     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RefreshJavaControl +");
   775     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RefreshJavaControl +");
   702     JNIEnv* validJni = iEventSource->getValidJniEnv();
   776     JNIEnv* validJni = iJni;//iEventSource->getValidJniEnv();//iJni;
   703     // Reset the java rect
   777     // Reset the java rect
   704     //ResetJavaRectObject(aRect);
   778     //ResetJavaRectObject(aRect);
   705     jmethodID redrawControlID = validJni->GetMethodID(
   779     /*jmethodID redrawControlID = validJni->GetMethodID(
   706                                     iJavaDisplayClass,
   780                                          iJavaDisplayClass,
   707                                     "redrawControl",
   781                                          "redrawControl",
   708                                     "()V");
   782                                      "()V");
       
   783     */
   709     // call java function
   784     // call java function
   710     validJni->CallVoidMethod(iJavaDisplayObject,redrawControlID);
   785     validJni->CallVoidMethod(iJavaDisplayObject,redrawControlID);
   711     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RefreshJavaControl -");
   786     LOG(EJavaMMAPI,EInfo,"MMA::CMMACanvasDisplay::RefreshJavaControl -");
   712 }
   787 }
   713 
   788 
       
   789 TBool CMMADisplay::iseSWT()
       
   790 {
       
   791     return iIseSWT;
       
   792 }
       
   793 
       
   794 void CMMADisplay::SetFullscreenSize(TSize &aFullscreenSize)
       
   795 {
       
   796     iFullScreenSize = aFullscreenSize;
       
   797 }
   714 //  END OF FILE
   798 //  END OF FILE