Use g_list_free_full to free draw_queue and draw_queue_2pass
[geeqie.git] / 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)