Пример кода Cairo/GTK аварийно завершает работу, когда окно слишком велико или развернуто

Я скопировал и скомпилировал исходный код, доступный в разделе "Полный исходный код".

http://cairographics.org/threaded_animation_with_cairo/

Я адаптировал этот код к проекту, над которым я работаю, только для того, чтобы обнаружить, что приложение будет аварийно завершать работу, если я сделаю окно слишком большим. Возвращаясь к исходному коду примера, он тоже вылетает, когда окно слишком большое (> 1000x1000 или около того).

Я сузил в примере, что эта строка, по-видимому, отвечает:

pixmap = gdk_pixmap_new (окно-> окно, 500 500, -1);

Где растровое изображение имеет тип GdkPixmap*. При изменении размера окна растровое изображение перезаписывается новым растровым изображением, соответствующим размеру окна.

Я делаю это в Eclipse Juno в Windows Vista, 32-разрядная версия. Мой компилятор MinGW версии 0.5-beta-20120426-1. Моя версия GTK+ — 2.24.10, а Cairo — 1.10.2. Я добавил все включения и библиотеки для GTK, а также добавил переключатель компилятора -mms-bitfields.

Есть ли ограничение на размер растрового изображения или что-то в этом роде? Я только начинаю работать с GTK с примерами, поэтому не знаю, куда идти, если этот пример не работает.


person user1890673    schedule 17.12.2012    source источник


Ответы (1)


Пробовал с GTK 2.24.10 и cairo 1.12.2 на Debian, работает (без сбоев), с развернутым окном на дисплее 1280х1024. Однако мне известно, что существует утечка памяти в GTK для Windows, который был исправлен начиная с GTK 2.24. 14. Ваша авария произойдет в ближайшее время или через некоторое время? Если он скоро выйдет из строя, это еще одна проблема, в противном случае просто посмотрите на потребление памяти.

Компиляция GTK с отладочными символами также поможет сузить круг ошибок...

Кстати, действительно ли window->window на момент сбоя?

person liberforce    schedule 17.12.2012