Spec-Zone.ru › Elisp

Кэш изображений

Emacs кэширует изображения, чтобы эффективнее отображать их повторно. Когда Emacs отображает изображение, он ищет в кэше изображений существующее описание изображения equal соответствующее нужному описанию. Если совпадение найдено, изображение отображается из кэша. В противном случае, Emacs загружает изображение обычным способом.

Функция: image-flush spec &optional frame

Эта функция удаляет изображение со спецификацией spec из кэша изображений фрейма frame. Спецификации изображений сравниваются с помощью equal. Если frame nil, по умолчанию используется выбранный фрейм. Если frame t, изображение удаляется из кэша всех существующих фреймов.

В текущей реализации Emacs каждый графический терминал имеет кэш изображений, который используется всеми фреймами на этом терминале (см. Многотерминальные системы). Таким образом, обновление изображения в одном фрейме также обновляет его во всех других фреймах на том же терминале.

Одно из применений image-flush — сообщить Emacs о изменении файла изображения. Если спецификация изображения содержит свойство :file, изображение кэшируется на основе содержимого файла при первом отображении. Даже если файл впоследствии изменится, Emacs продолжает отображать старую версию изображения. Вызов функции image-flush очищает изображение из кэша, заставляя Emacs повторно читать файл при необходимости отобразить это изображение.

Другое применение для image-flush — экономия памяти. Если ваша программа Lisp создает большое количество временных изображений за период значительно меньший, чем image-cache-eviction-delay (см. ниже), вы можете сами очистить неиспользуемые изображения, вместо того, чтобы ждать, пока Emacs сделает это автоматически.

Функция: clear-image-cache &optional filter

Эта функция очищает кэш изображений, удаляя все сохранённые в нём изображения. Если filter опущено или nil, очищается кэш выбранного фрейма. Если filter — фрейм, очищается кэш этого фрейма. Если filter t, очищаются все кэши изображений. В противном случае, filter рассматривается как имя файла, и все изображения, связанные с этим именем файла, удаляются из всех кэшей изображений.

Если изображение в кэше изображений не отображалось в течение определенного периода времени, Emacs удаляет его из кэша и освобождает связанную память.

Переменная: image-cache-eviction-delay

Эта переменная задаёт количество секунд, в течение которых изображение может оставаться в кэше без отображения. Когда изображение не отображается в течение этого времени, Emacs удаляет его из кэша изображений.

В некоторых случаях, если количество изображений в кэше становится слишком большим, фактическое время удаления может быть короче этого.

Если значение равно nil, Emacs не удаляет изображения из кэша, кроме случаев явного очищения. Этот режим может быть полезен для отладки.

Функция: image-cache-size

Эта функция возвращает общий размер текущего кэша изображений в байтах. Например, изображение размером 200x100 с 24 битами на цвет будет иметь размер кэша 60000 байт.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Image-Cache.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API