У меня следующая проблема:
Я пытаюсь отобразить анимацию в одной строке GtkTreeView с использованием GtkCellRendererPixbuf. В качестве модели использую GtkListStore. Проблема в том, что анимация очень сильно нагружает процессор.
Для одного шага анимации я использую следующий код:
Код: Выделить всё
angle += PIXMAP_ROTATE_STEP;
rotated_pixbuf = pixmap_rotate (original_pixbuf, angle);
gtk_list_store_set (GTK_LIST_STORE (tree_model), &iter,
FILE_LIST_COL_FILE_ICON, rotated_pixbuf,
-1);этот код выполняется в callback функции установленной с помощью g_timeout_add.
Получаю следующие результаты загрузки процессора:
cpu = 100% interval = 50ms PIXMAP_ROTATE_STEP = 0.1f,
cpu = 50% interval = 100ms PIXMAP_ROTATE_STEP = 0.1f,
cpu = 40% interval = 200ms PIXMAP_ROTATE_STEP = 0.3f - выглядит ужасно
Если закомментировать функцию gtk_list_store_set - то загрузка процессора составляет 0%
Как можно решить эту проблему? Возможно существует GtkCellRenderer для воспроизведении анимации или стоит использовать другу модель для GtkTreeView?