diff options
Diffstat (limited to 'src/widgets/status_info.cpp')
-rw-r--r-- | src/widgets/status_info.cpp | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/widgets/status_info.cpp b/src/widgets/status_info.cpp index 8ff90df..e3fe968 100644 --- a/src/widgets/status_info.cpp +++ b/src/widgets/status_info.cpp @@ -24,7 +24,6 @@ StatusInfoWidget::~StatusInfoWidget() { worker_thread.quit(); worker_thread.wait(); - delete displayed_activity; delete ui; } @@ -46,9 +45,9 @@ void StatusInfoWidget::resizeEvent(QResizeEvent* event) { } void StatusInfoWidget::show_list_item(StatusListItem* new_item) { - qDebug() << "got item" << new_item << "old is" << displayed_item << displayed_activity; + qDebug() << "got item" << new_item << "old is" << displayed_item << displayed_activity.get(); if (new_item != displayed_item) { - delete displayed_activity; displayed_activity = nullptr; + displayed_activity.reset(); displayed_item = new_item; emit do_process_item(new_item); } @@ -56,14 +55,9 @@ void StatusInfoWidget::show_list_item(StatusListItem* new_item) { // Update the GUI with the displayed Activity. // Has to be done on the GUI thread, no other way in Qt -void StatusInfoWidget::postProcess(const QString &html, APActivity* activity) { - // Make sure to not delete the displayed_activity if we are reprocessing it after a resize event, else you get a crash that requires nasty debugging (don't ask how i found out ;) - if (activity != displayed_activity) { - // We are doing "double" deletion of old displayed_activity but sometimes that's important when really scrubbing the search results bar very quickly (we sometimes do reach that code and it hopefully helps against memory leaks) - if (displayed_activity) - delete displayed_activity; - displayed_activity = activity; - } +void StatusInfoWidget::postProcess(const QString &html, APActivityPtr activity) { + // This shoudln't memory leak as we are now using smart pointers + displayed_activity = activity; ui->statusInfoText->setHtml(html); } @@ -74,11 +68,11 @@ void StatusInfoWidget::postProcess(const QString &html, APActivity* activity) { */ void StatusInfoWidgetWorker::process_item(StatusListItem* item) { - APActivity* activity = item->get_activity(); + APActivityPtr activity = item->get_activity(); process_activity(activity); } -void StatusInfoWidgetWorker::process_activity(APActivity* activity) { +void StatusInfoWidgetWorker::process_activity(APActivityPtr activity) { QString html = activity->get_html_render(render_info); emit itemProcessed(html, activity); } |