Sep. 7th, 2009

В продолжение предыдущего поста.

Переписал управление памятью в cl-gtk2. Решил несколько проблем:

  1. Денатурация объектов. Когда мы передаем ссылку на объект типа custom-window (о котором GObject/Gtk+ ничего не знает), то ожидаем, что обратно вернется объект типа custom-window со всеми его полями, а не объект типа gtk-window. Преобразование объекта к базовому типу и есть денатурация.
  2. Не всегда верный подсчет ссылок. В некоторых случаях, к объектам добавлялись лишние ссылки, что приводило к тому, что не все объекты были собраны сборщиком.
  3. Создание объектов классов, реализованных в Gtk+ и объектов классов-наследников GObject, определенных в лиспе, происходило немного по-разному.
  4. Некоторые функции Gtk+ возвращают объекты с уже добавленной ссылкой (увеличенным на единицу счетчиком ссылок). Например, gdk_gc_new и gtk_widget_create_pango_layout. Это не учитывалось, что создавало утечки.


Остался один непонятный момент, связанный с использованием GtkBuilder'а. По неясным пока причинам, на объекты, созданные GtkBuilder'ом остаются лишние ссылки. Но это уже предмет дальнейшего разбирательства.

Profile

dmitry_vk

April 2023

S M T W T F S
      1
234567 8
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 5th, 2026 07:15 pm
Powered by Dreamwidth Studios