35 #include "alfstreamerbridge.h" |
35 #include "alfstreamerbridge.h" |
36 #include "alfpolicyhandler.h" |
36 #include "alfpolicyhandler.h" |
37 #include <alflogger.h> |
37 #include <alflogger.h> |
38 #include <uiacceltk/HuiUtil.h> |
38 #include <uiacceltk/HuiUtil.h> |
39 |
39 |
|
40 #define AMT_CONTROL() static_cast<CAlfModuleTestDataControl*>(Dll::Tls()) |
|
41 #include "alfmoduletest.h" |
|
42 |
40 // This sets the maximum time for an effect. Even if the fxml file has specified a longer duration, |
43 // This sets the maximum time for an effect. Even if the fxml file has specified a longer duration, |
41 // this will stop the effect. |
44 // this will stop the effect. |
42 const TInt KAlfShortEffectTimeout = 4000000; |
45 const TInt KAlfShortEffectTimeout = 4000000; |
43 const TInt KAlfLongEffectTimeout = 5000000; |
46 const TInt KAlfAppStartEffectTimeout = 300000; |
|
47 const TInt KAlfLongEffectTimeout = 5000000; |
44 const TInt KAlfActiveControlFxGranularity = 4; |
48 const TInt KAlfActiveControlFxGranularity = 4; |
|
49 const TInt KAlfLongApplicationStartContext = 20; |
45 |
50 |
46 //const TInt KAlfLongEffectTimeout = 500000; |
51 //const TInt KAlfLongEffectTimeout = 500000; |
47 // Timer to send finish full screen effect |
52 // Timer to send finish full screen effect |
48 // --------------------------------------------------------- |
53 // --------------------------------------------------------- |
49 // CAlfFinishTimer |
54 // CAlfFinishTimer |
106 } |
116 } |
107 |
117 |
108 void CAlfFinishTimer::Start( TTimeIntervalMicroSeconds32 aPeriod, TCallBack aTimeoutCallback ) |
118 void CAlfFinishTimer::Start( TTimeIntervalMicroSeconds32 aPeriod, TCallBack aTimeoutCallback ) |
109 { |
119 { |
110 iCallback = aTimeoutCallback; |
120 iCallback = aTimeoutCallback; |
|
121 iTimeoutTriggered = EFalse; |
111 After( aPeriod ); |
122 After( aPeriod ); |
112 } |
123 } |
113 |
124 |
114 void CAlfFinishTimer::RunL() |
125 void CAlfFinishTimer::RunL() |
115 { |
126 { |
116 // |
127 // |
117 // timer completes and control is returned to caller |
128 // timer completes and control is returned to caller |
118 // |
129 // |
119 if ( iStatus.Int() != KErrCancel ) |
130 if ( iStatus.Int() != KErrCancel ) |
120 { |
131 { |
|
132 iTimeoutTriggered = ETrue; |
121 iCallback.CallBack(); |
133 iCallback.CallBack(); |
122 } |
134 } |
123 } |
135 } |
124 |
136 |
125 void CAlfFinishTimer::DoCancel() |
137 void CAlfFinishTimer::DoCancel() |
264 delete iControlController; |
276 delete iControlController; |
265 delete iFullScreenController; |
277 delete iFullScreenController; |
266 delete iFinishFullScreen; |
278 delete iFinishFullScreen; |
267 delete iFullScreenTimeout; |
279 delete iFullScreenTimeout; |
268 iActiveControlFx.Close(); |
280 iActiveControlFx.Close(); |
|
281 #ifdef USE_MODULE_TEST_HOOKS_FOR_ALF |
|
282 delete AMT_CONTROL(); |
|
283 Dll::FreeTls(); |
|
284 #endif |
269 } |
285 } |
270 |
286 |
271 // --------------------------------------------------------------------------- |
287 // --------------------------------------------------------------------------- |
272 // --------------------------------------------------------------------------- |
288 // --------------------------------------------------------------------------- |
273 // |
289 // |
499 } |
515 } |
500 |
516 |
501 // --------------------------------------------------------------------------- |
517 // --------------------------------------------------------------------------- |
502 // --------------------------------------------------------------------------- |
518 // --------------------------------------------------------------------------- |
503 // |
519 // |
504 void CAlfServerDrawer::EndFullscreen() |
520 void CAlfServerDrawer::EndFullscreen(TBool aTimeout) |
505 { |
521 { |
506 __ALFFXLOGSTRING("CAlfServerDrawer::EndFullscreen >>"); |
522 __ALFFXLOGSTRING("CAlfServerDrawer::EndFullscreen >>"); |
507 CancelEndChecker(); |
523 CancelEndChecker(); |
508 iFullScreenController->EndFullscreen(EFalse); |
524 iFullScreenController->EndFullscreen(aTimeout); |
509 iFullScreenController->AppInfoCache().ClearActions(); |
525 iFullScreenController->AppInfoCache().ClearActions(); |
510 __ALFFXLOGSTRING("CAlfServerDrawer::EndFullscreen <<"); |
526 __ALFFXLOGSTRING("CAlfServerDrawer::EndFullscreen <<"); |
511 } |
527 } |
512 |
528 |
513 // --------------------------------------------------------------------------- |
529 // --------------------------------------------------------------------------- |
548 // --------------------------------------------------------------------------- |
564 // --------------------------------------------------------------------------- |
549 // --------------------------------------------------------------------------- |
565 // --------------------------------------------------------------------------- |
550 // |
566 // |
551 void CAlfServerDrawer::DoSendBeginFullscreenL() |
567 void CAlfServerDrawer::DoSendBeginFullscreenL() |
552 { |
568 { |
|
569 #ifdef USE_MODULE_TEST_HOOKS_FOR_ALF |
|
570 TTime time; |
|
571 time.UniversalTime(); |
|
572 AMT_ADD_TIME(iToSid.iId, time.Int64(), ETrue); |
|
573 #endif |
553 __ALFFXLOGSTRING(" <- CAlfServerDrawer::SendBeginFullscreen"); |
574 __ALFFXLOGSTRING(" <- CAlfServerDrawer::SendBeginFullscreen"); |
554 __ALFFXLOGSTRING(" <- Original window server ids"); |
575 __ALFFXLOGSTRING(" <- Original window server ids"); |
555 __ALFFXLOGSTRING2("From UID: 0x%X, To UID: 0x%X", iFromUid.iUid, iToUid.iUid); |
576 __ALFFXLOGSTRING2("From UID: 0x%X, To UID: 0x%X", iFromUid.iUid, iToUid.iUid); |
556 __ALFFXLOGSTRING2("Parent UID: 0x%X, Focus window group UID: 0x%X", iParentUid.iUid, iFocusWg); |
577 __ALFFXLOGSTRING2("Parent UID: 0x%X, Focus window group UID: 0x%X", iParentUid.iUid, iFocusWg); |
557 TInt err = KErrNone; |
578 TInt err = KErrNone; |
664 RMemWriteStream stream( bridgeBuffer, bufferSize ); |
685 RMemWriteStream stream( bridgeBuffer, bufferSize ); |
665 // The writes should not leave if we have calculated our buffer length correctly. |
686 // The writes should not leave if we have calculated our buffer length correctly. |
666 stream.WriteInt32L( MAlfGfxEffectPlugin::EBeginFullscreen ); |
687 stream.WriteInt32L( MAlfGfxEffectPlugin::EBeginFullscreen ); |
667 stream.WriteInt32L( iToSid.iId ); //iCurrentFullScreenHandle ); |
688 stream.WriteInt32L( iToSid.iId ); //iCurrentFullScreenHandle ); |
668 stream.WriteInt32L( iType ); |
689 stream.WriteInt32L( iType ); |
|
690 stream.WriteInt32L( 0 ); // timeout triggered |
669 if ( iType == AknTransEffect::EParameterType && isExit ) |
691 if ( iType == AknTransEffect::EParameterType && isExit ) |
670 { |
692 { |
671 stream.WriteInt32L( iToWg ); |
693 stream.WriteInt32L( iToWg ); |
672 stream.WriteInt32L( 0 ); |
694 stream.WriteInt32L( 0 ); |
673 |
695 |
677 |
699 |
678 // SecureId |
700 // SecureId |
679 stream.WriteInt32L( iToSid.iId ); |
701 stream.WriteInt32L( iToSid.iId ); |
680 stream.WriteInt32L( iFromSid.iId ); |
702 stream.WriteInt32L( iFromSid.iId ); |
681 |
703 |
682 stream.WriteInt32L( KErrNotFound ); // was iToScreen, obsolete |
|
683 stream.WriteInt32L( KErrNotFound ); // was iToScreen, obsolete |
|
684 } |
704 } |
685 else if ( iType == AknTransEffect::EParameterType ) |
705 else if ( iType == AknTransEffect::EParameterType ) |
686 { |
706 { |
687 stream.WriteInt32L( iToWg ); |
707 stream.WriteInt32L( iToWg ); |
688 stream.WriteInt32L( iFromWg ); |
708 stream.WriteInt32L( iFromWg ); |
693 |
713 |
694 // SecureId |
714 // SecureId |
695 stream.WriteInt32L( iToSid.iId ); |
715 stream.WriteInt32L( iToSid.iId ); |
696 stream.WriteInt32L( iFromSid.iId ); |
716 stream.WriteInt32L( iFromSid.iId ); |
697 |
717 |
698 stream.WriteInt32L( KErrNotFound ); // was iToScreen, obsolete |
|
699 stream.WriteInt32L( KErrNotFound ); // was iToScreen, obsolete |
|
700 } |
718 } |
701 else |
719 else |
702 { |
720 { |
703 stream.WriteInt32L( KErrNotFound); // was iFocusWg |
721 stream.WriteInt32L( KErrNotFound); // dummy BEGIN |
704 stream.WriteInt32L( KErrNotFound); // was iFocusWg |
722 stream.WriteInt32L( KErrNotFound); |
|
723 stream.WriteInt32L( KErrNotFound); |
|
724 stream.WriteInt32L( KErrNotFound); |
|
725 stream.WriteInt32L( KErrNotFound); |
|
726 stream.WriteInt32L( KErrNotFound); // dummy END |
705 } |
727 } |
706 stream.WriteInt32L( iFlags ); |
728 stream.WriteInt32L( iFlags ); |
707 stream.WriteInt32L( iEffectRect.iTl.iX ); |
729 stream.WriteInt32L( iEffectRect.iTl.iX ); |
708 stream.WriteInt32L( iEffectRect.iTl.iY ); |
730 stream.WriteInt32L( iEffectRect.iTl.iY ); |
709 stream.WriteInt32L( iEffectRect.iBr.iX ); |
731 stream.WriteInt32L( iEffectRect.iBr.iX ); |
710 stream.WriteInt32L( iEffectRect.iBr.iY ); |
732 stream.WriteInt32L( iEffectRect.iBr.iY ); |
|
733 |
711 stream << resourceDir; |
734 stream << resourceDir; |
712 stream << fileName; |
735 stream << fileName; |
713 stream.CommitL(); |
736 stream.CommitL(); |
714 bridgerData.Set( EAlfEffectFx, iAction, bufferSize, (TAny*) index ); |
737 bridgerData.Set( EAlfEffectFx, iAction, bufferSize, (TAny*) index ); |
715 __ALFFXLOGSTRING(" <- CAlfServerDrawer::sending bridgedata"); |
738 __ALFFXLOGSTRING(" <- CAlfServerDrawer::sending bridgedata"); |
723 } |
746 } |
724 |
747 |
725 // iFlags and iAction will contain some extra information that can be used to control the effect: |
748 // iFlags and iAction will contain some extra information that can be used to control the effect: |
726 |
749 |
727 // All of these actions may not produce effects, they are here for now for debugging. |
750 // All of these actions may not produce effects, they are here for now for debugging. |
728 |
751 TBool isAppStartEffect(EFalse); |
729 switch ( iAction ) |
752 switch ( iAction ) |
730 { |
753 { |
731 case AknTransEffect::EApplicationActivate: |
754 case AknTransEffect::EApplicationActivate: |
732 __ALFFXLOGSTRING("EApplicationActivate - 1"); |
755 __ALFFXLOGSTRING("EApplicationActivate - 1"); |
733 break; |
756 break; |
734 case AknTransEffect::EApplicationStart: |
757 case AknTransEffect::EApplicationStart: |
|
758 isAppStartEffect = ETrue; |
735 __ALFFXLOGSTRING("EApplicationStart - 3"); |
759 __ALFFXLOGSTRING("EApplicationStart - 3"); |
736 break; |
760 break; |
737 case AknTransEffect::EEmbeddedApplicationStart: |
761 case AknTransEffect::EEmbeddedApplicationStart: |
738 __ALFFXLOGSTRING("EEmbeddedApplicationStart - 4"); |
762 __ALFFXLOGSTRING("EEmbeddedApplicationStart - 4"); |
739 break; |
763 break; |
740 case AknTransEffect::EApplicationExit: |
764 case AknTransEffect::EApplicationExit: |
741 __ALFFXLOGSTRING("EApplicationExit - 5"); |
765 __ALFFXLOGSTRING("EApplicationExit - 5"); |
742 break; |
766 break; |
743 case AknTransEffect::EApplicationStartRect: |
767 case AknTransEffect::EApplicationStartRect: |
|
768 isAppStartEffect = ETrue; |
744 __ALFFXLOGSTRING("EApplicationStartRect - 6"); |
769 __ALFFXLOGSTRING("EApplicationStartRect - 6"); |
745 break; |
770 break; |
746 case AknTransEffect::EApplicationStartSwitch: |
771 case AknTransEffect::EApplicationStartSwitch: |
|
772 isAppStartEffect = ETrue; |
747 __ALFFXLOGSTRING("EApplicationStartSwitch - 7"); |
773 __ALFFXLOGSTRING("EApplicationStartSwitch - 7"); |
748 break; |
774 break; |
749 case AknTransEffect::EApplicationStartSwitchRect: |
775 case AknTransEffect::EApplicationStartSwitchRect: |
|
776 isAppStartEffect = ETrue; |
750 __ALFFXLOGSTRING("EApplicationStartSwitchRect - 8"); |
777 __ALFFXLOGSTRING("EApplicationStartSwitchRect - 8"); |
751 break; |
778 break; |
752 case AknTransEffect::EEmbeddedApplicationExit: |
779 case AknTransEffect::EEmbeddedApplicationExit: |
753 __ALFFXLOGSTRING("EEmbeddedApplicationExit - 10"); |
780 __ALFFXLOGSTRING("EEmbeddedApplicationExit - 10"); |
754 break; |
781 break; |
781 // endfullscreen signals. |
808 // endfullscreen signals. |
782 |
809 |
783 // It appears that folder open and close never send endfullscreen, so for them the effect |
810 // It appears that folder open and close never send endfullscreen, so for them the effect |
784 // must be started as soon as we get beginfullscreen |
811 // must be started as soon as we get beginfullscreen |
785 |
812 |
786 iFullScreenTimeout->Start( KAlfLongEffectTimeout, TCallBack( FullScreenTimeout, this ) ); |
813 isAppStartEffect = EFalse; // disable different timeout effect for appstart effects |
|
814 |
|
815 if (isAppStartEffect) |
|
816 { |
|
817 // The shorter timeout can be disabled here! |
|
818 iFullScreenTimeout->Start( KAlfAppStartEffectTimeout, TCallBack( FullScreenTimeout, this ) ); |
|
819 iFullScreenTimeout->iIsStartEffect = ETrue; |
|
820 } |
|
821 else |
|
822 { |
|
823 iFullScreenTimeout->Start( KAlfLongEffectTimeout, TCallBack( FullScreenTimeout, this ) ); |
|
824 iFullScreenTimeout->iIsStartEffect = EFalse; |
|
825 } |
787 } |
826 } |
788 |
827 |
789 // --------------------------------------------------------------------------- |
828 // --------------------------------------------------------------------------- |
790 // --------------------------------------------------------------------------- |
829 // --------------------------------------------------------------------------- |
791 // |
830 // |
792 TInt CAlfServerDrawer::SendEndFullscreen() |
831 TInt CAlfServerDrawer::SendEndFullscreen(TBool aTimeout) |
793 { |
832 { |
794 __ALFFXLOGSTRING("CAlfServerDrawer::SendEndFullscreen"); |
833 __ALFFXLOGSTRING3("CAlfServerDrawer::SendEndFullscreen - Timeout: %d, iFullScreenEndSent: %d, IsStartEffect: %d", aTimeout, iFullScreenEndSent, iFullScreenTimeout->iIsStartEffect); |
795 |
834 |
796 if ( iFullScreenEndSent ) |
835 if ( iFullScreenEndSent ) |
797 { |
836 { |
798 __ALFFXLOGSTRING("CAlfServerDrawer::SendEndFullscreen END no need"); |
837 __ALFFXLOGSTRING("CAlfServerDrawer::SendEndFullscreen END no need"); |
799 return KErrNone; |
838 return KErrNone; |
802 |
841 |
803 __ALFFXLOGSTRING("CAlfServerDrawer::SendEndFullscreen"); |
842 __ALFFXLOGSTRING("CAlfServerDrawer::SendEndFullscreen"); |
804 iFullScreenTransitionEndObserver->Cancel(); |
843 iFullScreenTransitionEndObserver->Cancel(); |
805 iFullScreenTimeout->Cancel(); |
844 iFullScreenTimeout->Cancel(); |
806 iFinishFullScreen->Cancel(); |
845 iFinishFullScreen->Cancel(); |
807 /* |
846 TBool triggerStartEffectTimeout= iFullScreenTimeout->iTimeoutTriggered && iFullScreenTimeout->iIsStartEffect; |
808 TUint action = iAction; |
847 iFullScreenTimeout->iTimeoutTriggered = EFalse; |
809 if ( iType == AknTransEffect::EParameterAvkonInternal ) |
848 iFullScreenTimeout->iIsStartEffect = EFalse; |
810 { |
849 |
811 action = iOldAction; |
850 // This is where the second part of the effect should start |
812 } |
851 // The new window should already have something on the screen. |
813 */ |
852 // It might not be the case, if aTimeout is ETrue |
814 // TEMPORARY HACK |
|
815 // REMOVE AFTER APPSHELL HAS BEEN FIXED |
|
816 //iDoNotClearEffectRect = EFalse; |
|
817 |
|
818 // This is where the second part of the effect should start |
|
819 // The new window should already have something on the screen |
|
820 |
853 |
821 // Send the data to CAlfAppUI via bridge |
854 // Send the data to CAlfAppUI via bridge |
822 |
855 |
823 TAlfBridgerData bridgerData; |
856 TAlfBridgerData bridgerData; |
824 |
857 |
825 // Get the wanted full screen effect from the policy handler |
858 // Get the wanted full screen effect from the policy handler |
826 |
859 |
827 TPtrC resourceDir; |
860 TPtrC resourceDir; |
828 TPtrC fileName; |
861 TPtrC fileName; |
829 |
862 TInt cachePriority = 0; |
|
863 TInt wantedTime = 0; |
|
864 TInt minTime = 0; |
|
865 |
|
866 if (triggerStartEffectTimeout) |
|
867 { |
|
868 // if the following fails, then the effect from beginfullscreen will be used. |
|
869 TInt err = iPolicyHandler.GetFullscreenKml( KAlfLongApplicationStartContext, iToUid, iFromUid, resourceDir, fileName, |
|
870 cachePriority, wantedTime, minTime ); |
|
871 if (err != KErrNone) |
|
872 { |
|
873 triggerStartEffectTimeout = EFalse; |
|
874 } |
|
875 } |
|
876 |
830 // We must make a stream of the data as the length may vary. |
877 // We must make a stream of the data as the length may vary. |
831 // At the moment we only send some numbers, but we should probably include |
878 // At the moment we only send some numbers, but we should probably include |
832 // also the effect file name or something else to identify the effect |
879 // also the effect file name or something else to identify the effect |
833 // that is going to be used |
880 // that is going to be used |
834 |
881 |
835 TInt bufferSize = 11 * sizeof(TInt); // operation, type, 2 wg ids, 2 app uids, flags and rect |
882 TInt bufferSize = 12 * sizeof(TInt); // operation, type, 2 wg ids, 2 app uids, flags and rect, timeoutTriggered |
836 bufferSize += sizeof(TPtrC); |
883 bufferSize += sizeof(TPtrC); |
837 bufferSize += resourceDir.Length() * 2; |
884 bufferSize += resourceDir.Length() * 2; |
838 bufferSize += sizeof(TPtrC); |
885 bufferSize += sizeof(TPtrC); |
839 bufferSize += fileName.Length() * 2; |
886 bufferSize += fileName.Length() * 2; |
840 |
887 |
854 TRAP_IGNORE( |
901 TRAP_IGNORE( |
855 { |
902 { |
856 stream.WriteInt32L( MAlfGfxEffectPlugin::EEndFullscreen ); |
903 stream.WriteInt32L( MAlfGfxEffectPlugin::EEndFullscreen ); |
857 stream.WriteInt32L( iCurrentFullScreenHandle ); |
904 stream.WriteInt32L( iCurrentFullScreenHandle ); |
858 stream.WriteInt32L( iType ); |
905 stream.WriteInt32L( iType ); |
859 |
906 stream.WriteInt32L( triggerStartEffectTimeout ); |
860 stream.WriteInt32L( iToWg ); |
907 stream.WriteInt32L( iToWg ); |
861 stream.WriteInt32L( iFromWg ); |
908 stream.WriteInt32L( iFromWg ); |
862 |
909 |
863 // AppUid for the future. alfbridge can figure out the windog groups based on that |
910 // AppUid for the future. alfbridge can figure out the windog groups based on that |
864 stream.WriteInt32L( iToUid.iUid ); |
911 stream.WriteInt32L( iToUid.iUid ); |
865 stream.WriteInt32L( iFromUid.iUid ); |
912 stream.WriteInt32L( iFromUid.iUid ); |
866 |
913 |
867 if ( iType == AknTransEffect::EParameterType ) |
914 stream.WriteInt32L( iToSid.iId ); |
868 { |
915 stream.WriteInt32L( iFromSid.iId ); |
869 stream.WriteInt32L( iToScreen ); |
916 |
870 stream.WriteInt32L( iFromScreen ); |
|
871 } |
|
872 /*else |
|
873 { |
|
874 //stream.WriteInt32L( iFocusWg ); |
|
875 //stream.WriteInt32L( iFocusWg ); |
|
876 // }*/ |
|
877 stream.WriteInt32L( iFlags ); |
917 stream.WriteInt32L( iFlags ); |
878 stream.WriteInt32L( iEffectRect.iTl.iX ); |
918 stream.WriteInt32L( iEffectRect.iTl.iX ); |
879 stream.WriteInt32L( iEffectRect.iTl.iY ); |
919 stream.WriteInt32L( iEffectRect.iTl.iY ); |
880 stream.WriteInt32L( iEffectRect.iBr.iX ); |
920 stream.WriteInt32L( iEffectRect.iBr.iX ); |
881 stream.WriteInt32L( iEffectRect.iBr.iY ); |
921 stream.WriteInt32L( iEffectRect.iBr.iY ); |
|
922 |
882 stream << resourceDir; |
923 stream << resourceDir; |
883 stream << fileName; |
924 stream << fileName; |
884 stream.CommitL(); |
925 stream.CommitL(); |
885 }); |
926 }); |
886 |
927 |
890 stream.Close(); |
931 stream.Close(); |
891 iFullScreenTransitionEndObserver->StartObserving( TCallBack( FullScreenTransitionFinished, this ), iCurrentFullScreenHandle ); |
932 iFullScreenTransitionEndObserver->StartObserving( TCallBack( FullScreenTransitionFinished, this ), iCurrentFullScreenHandle ); |
892 } |
933 } |
893 |
934 |
894 iFullScreenFinished = EFalse; |
935 iFullScreenFinished = EFalse; |
|
936 iFullScreenTimeout->iIsStartEffect = EFalse; |
895 if ( iAction == AknTransEffect::EApplicationExit /*|| |
937 if ( iAction == AknTransEffect::EApplicationExit /*|| |
896 iAction == 1001*/ ) |
938 iAction == 1001*/ ) |
897 { |
939 { |
898 // no more events expected |
940 // no more events expected |
899 iFinishFullScreen->Start( KAlfShortEffectTimeout, TCallBack( FinishFullScreenTimeout, this ) ); |
941 iFinishFullScreen->Start( KAlfShortEffectTimeout, TCallBack( FinishFullScreenTimeout, this ) ); |
985 TPtrC resourceDir; |
1027 TPtrC resourceDir; |
986 TPtrC fileName; |
1028 TPtrC fileName; |
987 TPtrC actionString; |
1029 TPtrC actionString; |
988 |
1030 |
989 TInt err = KErrNone; |
1031 TInt err = KErrNone; |
|
1032 #ifdef USE_MODULE_TEST_HOOKS_FOR_ALF |
|
1033 TTime time; |
|
1034 time.UniversalTime(); |
|
1035 AMT_ADD_TIME(iControlHandle, time.Int64(), ETrue); |
|
1036 #endif |
990 err = iPolicyHandler.GetControlKml( iControlUid, iControlAction, resourceDir, |
1037 err = iPolicyHandler.GetControlKml( iControlUid, iControlAction, resourceDir, |
991 fileName, actionString, cachePriority, wantedTime, minTime ); |
1038 fileName, actionString, cachePriority, wantedTime, minTime ); |
992 |
1039 |
993 if ( err != KErrNone ) |
1040 if ( err != KErrNone ) |
994 { |
1041 { |