--- a/javaextensions/wma/mms/pushplugin/src.s60/s60mmsserverconnection.cpp Fri Sep 17 16:44:34 2010 +0300
+++ b/javaextensions/wma/mms/pushplugin/src.s60/s60mmsserverconnection.cpp Mon Oct 04 11:29:25 2010 +0300
@@ -38,7 +38,8 @@
OS_EXPORT S60MmsServerConnection::S60MmsServerConnection(const wstring& aUri,
const wstring& aFilter)
:CActive(EPriorityStandard), mUri(aUri), mFilter(aFilter),
- mActiveConnection(false), mIsAppLaunched(false),mListener(0)
+ mActiveConnection(false), mIsAppLaunched(false),mListener(0),
+ mUnregister(0)
{
JELOG2(EWMA);
@@ -69,6 +70,18 @@
mUri, false);
}
+void S60MmsServerConnection::setUnregister()
+{
+ LOG(EWMA, EInfo,"S60MmsServerConnection::setUnregister");
+ mUnregister = true;
+}
+
+void S60MmsServerConnection::clearUnregister()
+{
+ LOG(EWMA, EInfo, "S60MmsServerConnection::clearUnregister");
+ mUnregister = false;
+}
+
OS_EXPORT void S60MmsServerConnection::open(ConnectionListener* aListener)
{
JELOG2(EWMA);
@@ -112,7 +125,11 @@
mSession = CMsvSession::OpenSyncL(*this);
mApplicationId = S60CommonUtils::wstringToDes(mAppId.c_str());
TMsvId folderId;
- mMmsApplicationAdapter->RegisterL(*mApplicationId, folderId);
+ TBool isRegistered = mMmsApplicationAdapter->RegisteredL(*mApplicationId);
+ if (!isRegistered)
+ {
+ mMmsApplicationAdapter->RegisterL(*mApplicationId, folderId);
+ }
TMsvId tmsvId = mMmsApplicationAdapter->FolderIdL(*mApplicationId);
if (tmsvId != KErrNone)
{
@@ -320,15 +337,20 @@
}
case ENotifyingClose:
{
- mClientEntry->RemoveObserver(*this);
- if (mMmsApplicationAdapter)
- {
- mMmsApplicationAdapter->UnregisterL(*mApplicationId);
- delete mMmsApplicationAdapter;
- mMmsApplicationAdapter = NULL;
- }
if (mClientEntry)
{
+ mClientEntry->RemoveObserver(*this);
+ if (mMmsApplicationAdapter)
+ {
+ if (mUnregister)
+ {
+ LOG(EWMA, EInfo, "Unregistering");
+ mMmsApplicationAdapter->UnregisterL(*mApplicationId);
+ }
+ delete mMmsApplicationAdapter;
+ mMmsApplicationAdapter = NULL;
+ }
+
delete mClientEntry;
mClientEntry = NULL;
}