Use g_list_free_full to free draw_queue and draw_queue_2pass
authorArkadiy Illarionov <qarkai@gmail.com>
Sat, 23 Mar 2024 20:46:40 +0000 (23:46 +0300)
committerColin Clark <colin.clark@cclark.uk>
Sun, 24 Mar 2024 09:53:12 +0000 (09:53 +0000)
src/renderer-tiles.cc

index 4101f26..8c1a1c2 100644 (file)
@@ -1780,32 +1780,21 @@ static gboolean rt_queue_draw_idle_cb(gpointer data)
                return rt_queue_schedule_next_draw(rt, FALSE);
 }
 
-static void rt_queue_list_free(GList *list)
+static void rt_queue_data_free(gpointer data)
 {
-       GList *work;
-
-       work = list;
-       while (work)
-               {
-               QueueData *qd;
-
-               qd = static_cast<QueueData *>(work->data);
-               work = work->next;
+       auto *qd = static_cast<QueueData *>(data);
 
-               qd->it->qd = nullptr;
-               qd->it->qd2 = nullptr;
-               g_free(qd);
-               }
-
-       g_list_free(list);
+       qd->it->qd = nullptr;
+       qd->it->qd2 = nullptr;
+       g_free(qd);
 }
 
 static void rt_queue_clear(RendererTiles *rt)
 {
-       rt_queue_list_free(rt->draw_queue);
+       g_list_free_full(rt->draw_queue, rt_queue_data_free);
        rt->draw_queue = nullptr;
 
-       rt_queue_list_free(rt->draw_queue_2pass);
+       g_list_free_full(rt->draw_queue_2pass, rt_queue_data_free);
        rt->draw_queue_2pass = nullptr;
 
        if (rt->draw_idle_id)