Fix messing with std shared pointer and Qt memory managment.

This commit is contained in:
Julien Wadel 2022-10-19 20:46:20 +02:00
parent 697f9eb1d3
commit 6bd8cc4673
6 changed files with 8 additions and 7 deletions

View file

@ -103,7 +103,7 @@ CallModel::CallModel (shared_ptr<linphone::Call> call){
// Update fields and make a search to know to who the call belong
mMagicSearch = CoreManager::getInstance()->getCore()->createMagicSearch();
mSearch = std::make_shared<SearchListener>(this);
mSearch = std::make_shared<SearchListener>();
QObject::connect(mSearch.get(), SIGNAL(searchReceived(std::list<std::shared_ptr<linphone::SearchResult>> )), this, SLOT(searchReceived(std::list<std::shared_ptr<linphone::SearchResult>>)));
mMagicSearch->addListener(mSearch);

View file

@ -91,7 +91,7 @@ ChatMessageModel::ChatMessageModel ( std::shared_ptr<linphone::ChatMessage> chat
App::getInstance()->getEngine()->setObjectOwnership(this, QQmlEngine::CppOwnership);// Avoid QML to destroy it
if(chatMessage){
mParticipantImdnStateListModel = QSharedPointer<ParticipantImdnStateListModel>::create(chatMessage);
mChatMessageListener = std::make_shared<ChatMessageListener>(parent);
mChatMessageListener = std::make_shared<ChatMessageListener>();
connectTo(mChatMessageListener.get());
mChatMessage = chatMessage;
mChatMessage->addListener(mChatMessageListener);

View file

@ -123,7 +123,7 @@ ChatRoomModel::ChatRoomModel (std::shared_ptr<linphone::ChatRoom> chatRoom, cons
mCoreHandlers = coreManager->getHandlers();
mChatRoom = chatRoom;
mChatRoomListener = std::make_shared<ChatRoomListener>(parent);
mChatRoomListener = std::make_shared<ChatRoomListener>();
connectTo(mChatRoomListener.get());
mChatRoom->addListener(mChatRoomListener);

View file

@ -41,7 +41,7 @@ ParticipantDeviceModel::ParticipantDeviceModel (CallModel * callModel, std::shar
mIsMe = isMe;
mParticipantDevice = device;
if( device) {
mParticipantDeviceListener = std::make_shared<ParticipantDeviceListener>(nullptr);
mParticipantDeviceListener = std::make_shared<ParticipantDeviceListener>();
connectTo(mParticipantDeviceListener.get());
device->addListener(mParticipantDeviceListener);
mState = device->getState();

View file

@ -49,7 +49,7 @@ using namespace std;
SearchSipAddressesModel::SearchSipAddressesModel (QObject *parent) : ProxyListModel(parent) {
mMagicSearch = CoreManager::getInstance()->getCore()->createMagicSearch();
mSearch = std::make_shared<SearchListener>(this);
mSearch = std::make_shared<SearchListener>();
QObject::connect(mSearch.get(), &SearchListener::searchReceived, this, &SearchSipAddressesModel::searchReceived, Qt::QueuedConnection);
mMagicSearch->addListener(mSearch);

View file

@ -89,7 +89,7 @@ TimelineModel::TimelineModel (std::shared_ptr<linphone::ChatRoom> chatRoom, cons
QObject::connect(mChatRoomModel.get(), &ChatRoomModel::chatRoomDeleted, this, &TimelineModel::onChatRoomDeleted);
}
if(chatRoom){
mChatRoomListener = std::make_shared<ChatRoomListener>(this);
mChatRoomListener = std::make_shared<ChatRoomListener>();
connectTo(mChatRoomListener.get());
chatRoom->addListener(mChatRoomListener);
}
@ -117,7 +117,7 @@ QSharedPointer<TimelineModel> TimelineModel::clone()const{
}
TimelineModel::~TimelineModel(){
if(mChatRoomModel && mChatRoomModel->getChatRoom())
if(mChatRoomModel && mChatRoomListener && mChatRoomModel->getChatRoom())
mChatRoomModel->getChatRoom()->removeListener(mChatRoomListener);
}
@ -178,6 +178,7 @@ void TimelineModel::onDefaultAccountChanged(){
void TimelineModel::disconnectChatRoomListener(){
if( mChatRoomModel && mChatRoomListener && mChatRoomModel->getChatRoom()){
mChatRoomModel->getChatRoom()->removeListener(mChatRoomListener);
mChatRoomListener = nullptr;
}
}