diff -r 1f0034e370aa -r 71ad690e91f5 javaextensions/wma/mms/pushplugin/src.s60/s60mmsserverconnection.cpp --- 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; }