diff -r bab96b7ed1a4 -r f39ed5e045e0 phoneuis/bubblemanager2/bubblecore/src/bubblemanager2.cpp --- a/phoneuis/bubblemanager2/bubblecore/src/bubblemanager2.cpp Tue Jun 15 14:14:38 2010 +0100 +++ b/phoneuis/bubblemanager2/bubblecore/src/bubblemanager2.cpp Thu Jul 22 16:33:21 2010 +0100 @@ -24,6 +24,7 @@ #include #include #include +#include #include "bubblemanager2.h" #include "bubbleheader.h" @@ -145,7 +146,9 @@ } if (!mActiveHeaders.count()) { + // all calls ended mBubbleImageManager->releasePixmaps(); + releaseNonCachedViews(); } // restore mute state @@ -549,6 +552,7 @@ } else if (!muted && mMuted) { mEffectHandler->startEffect(BubbleMutedDisappear); } else { + mEffectHandler->cancelAllEffects(mMutedIcon); mMutedIcon->setVisible(muted); } } @@ -925,3 +929,26 @@ } } +void BubbleManager::releaseNonCachedViews() +{ + static const int viewCount = 3; + static const int views[viewCount] = { + BubbleWidgetManager::TwoCallsView, + BubbleWidgetManager::ThreeCallsView, + BubbleWidgetManager::ConferenceView + }; + + for (int i=0; i < viewCount; i++ ) { + BubbleWidgetManager::View viewid = + (BubbleWidgetManager::View)views[i]; + + if (mWidgetManager->isLoaded(viewid)) { + QGraphicsWidget* view = mWidgetManager->view(viewid); + + if (view) { + removeFromLayout(view); + mWidgetManager->releaseView(viewid); + } + } + } +}