--- a/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifnotifier.cpp Thu Jul 15 18:31:06 2010 +0300
+++ b/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifnotifier.cpp Thu Aug 19 09:48:13 2010 +0300
@@ -21,21 +21,11 @@
#include "javasymbianoslayer.h" // for CleanupResetAndDestroyPushL
#include "logger.h"
-#if defined(SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK) && defined(RD_JAVA_USIF_NOTIFY_PROGRESS)
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
#include <usif/sif/sifnotification.h>
#include <usif/usifcommon.h>
-// Helper macro for logging a TDesC.
-#define LOG_TDESC_L(compIdParam, logLevelParam, msgParam, tdescParam) \
- { \
- HBufC8* tdescBuf = HBufC8::NewLC(tdescParam.Length() + 1); \
- TPtr8 tdescPtr(tdescBuf->Des()); \
- tdescPtr.Append(tdescParam); \
- LOG1(compIdParam, logLevelParam, msgParam, tdescPtr.PtrZ());\
- CleanupStack::PopAndDestroy(tdescBuf); \
- }
-
// NAMESPACE DECLARATION
using namespace java;
using namespace Usif;
@@ -101,6 +91,7 @@
HBufC *appIcon = CreateHBufCFromJavaStringLC(aEnv, tmpAppIcon);
applicationIcons.AppendL(appIcon);
CleanupStack::Pop(appIcon);
+ aEnv->DeleteLocalRef(tmpAppIcon);
}
else
{
@@ -161,7 +152,7 @@
jstring aGlobalComponentId, jint aErrCategory, jint aErrCode,
jstring aErrMsg, jstring aErrMsgDetails)
{
- __UHEAP_MARK;
+ //__UHEAP_MARK;
HBufC *globalComponentId = CreateHBufCFromJavaStringLC(aEnv, aGlobalComponentId);
HBufC *errMsg = NULL;
if (NULL != aErrMsg)
@@ -174,24 +165,29 @@
errMsgDetails = CreateHBufCFromJavaStringLC(aEnv, aErrMsgDetails);
}
- CSifOperationEndData *endData = CSifOperationEndData::NewLC(
- *globalComponentId, (TErrorCategory)aErrCategory, aErrCode,
- *errMsg, *errMsgDetails);
+ CSifOperationEndData *endData =
+ CSifOperationEndData::NewLC(
+ *globalComponentId, (TErrorCategory)aErrCategory, aErrCode,
+ (NULL != errMsg? *errMsg: KNullDesC()),
+ (NULL != errMsgDetails? *errMsgDetails: KNullDesC()));
+ // Do not use UHEAP macros around PublishCompletionL() because it
+ // creates a timer object which gets deleted only when the notifier
+ // object is deleted.
aNotifier->PublishCompletionL(*endData);
CleanupStack::PopAndDestroy(endData);
- if (NULL != aErrMsg)
+ if (NULL != errMsgDetails)
+ {
+ CleanupStack::PopAndDestroy(errMsgDetails);
+ }
+ if (NULL != errMsg)
{
CleanupStack::PopAndDestroy(errMsg);
}
- if (NULL != aErrMsgDetails)
- {
- CleanupStack::PopAndDestroy(errMsgDetails);
- }
CleanupStack::PopAndDestroy(globalComponentId);
- __UHEAP_MARKEND;
+ //__UHEAP_MARKEND;
}
/*
@@ -203,10 +199,25 @@
(JNIEnv *aEnv, jclass, jint aHandle, jstring aGlobalComponentId,
jint aErrCategory, jint aErrCode, jstring aErrMsg, jstring aErrMsgDetails)
{
+ CActiveScheduler* newScheduler = 0;
+ if (0 == CActiveScheduler::Current())
+ {
+ // Create ActiveScheduler as it does not yet exist.
+ newScheduler = new CActiveScheduler;
+ CActiveScheduler::Install(newScheduler);
+ }
+
CPublishSifOperationInfo *pNotifier =
reinterpret_cast<CPublishSifOperationInfo*>(aHandle<<2);
TRAPD(err, NotifyEndL(aEnv, pNotifier, aGlobalComponentId,
aErrCategory, aErrCode, aErrMsg, aErrMsgDetails));
+
+ if (newScheduler)
+ {
+ delete newScheduler;
+ newScheduler = 0;
+ }
+
return err;
}
@@ -286,7 +297,7 @@
return KErrNone;
}
-#else // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK && RD_JAVA_USIF_NOTIFY_PROGRESS
+#else // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
/*
* Class: com_nokia_mj_impl_installer_applicationregistrator_SifNotifier
@@ -370,4 +381,4 @@
return KErrNone;
}
-#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK && RD_JAVA_USIF_NOTIFY_PROGRESS
+#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK