@@ -31,6 +31,11 @@ CachedUnityMenuModel::CachedUnityMenuModel(QObject* parent)
3131
3232CachedUnityMenuModel::~CachedUnityMenuModel()
3333{
34+ // deref old model.
35+ if (m_model) {
36+ UnityMenuModelCache::cache()->deref(m_menuObjectPath);
37+ m_model = NULL;
38+ }
3439}
3540
3641UnityMenuModel* CachedUnityMenuModel::model() const
@@ -80,7 +85,11 @@ QString CachedUnityMenuModel::menuObjectPath() const
8085void CachedUnityMenuModel::setMenuObjectPath(const QString &path)
8186{
8287 if (m_menuObjectPath != path) {
83− m_model = NULL;
88+ // deref old model.
89+ if (m_model) {
90+ UnityMenuModelCache::cache()->deref(m_menuObjectPath);
91+ m_model = NULL;
92+ }
8493
8594 m_menuObjectPath = path;
8695 Q_EMIT menuObjectPathChanged(m_menuObjectPath);
@@ -96,6 +105,7 @@ void CachedUnityMenuModel::setMenuObjectPath(const QString &path)
96105
97106 UnityMenuModelCache::cache()->registerModel(m_menuObjectPath, m_model);
98107 }
108+ UnityMenuModelCache::cache()->ref(m_menuObjectPath);
99109 }
100110
101111 Q_EMIT modelChanged(m_model);