LINUX.ORG.RU

GdkEvent - нужно подсказать


0

0

Проблема такая. Задача положить в очередь Client сообщение. Желательно, используя GdkEvent. Я делал так: создавал GdkEvent * функцией GdkEventCreate ( или что-то типа этого ) Заполнял все поля, которые нужны и затем gdk_event_put ( или что-то типа этого ) В описании функции, которая создает GdkEvent написано, что GdkEvent должна быть освобождена при помощи функции gdk_event_free(). НО!!! если я освобождаю ивент сразу после put-а, то вылетаю с ошибкой, если не освобождать, то всё ок, но память явно теряется ( проверял ). Скорее всего возможен другой вариант, подскажите, заранее благодарю.

А почему бы не воспользоваться gtk_signal_emit_by_name()? Я так понимаю что нужно просто вызвать handler повешенный на какой-то gdk_event из программы? А программа может вылетать и потому что тухлый указатель где-нибудь в GdkEvent оказался - без кода сложно что-нибудь сказать.

geekkoo
()
Ответ на: комментарий от geekkoo

gtk я вообще не использую, а использую gdk, мне от туда только окно и преобразование цветовой палитры нужно :) а проблема следующая, нужно реализовать обмен сообщениями между моими элементами управления ( всякие полупрозрачные менюшки, кнопочки с блюром и т.д.) я писал давно, и не помню уже точно в деталях, но проблема так у меня и висела, а именно : > gdk_event_new (GdkEventType type); > Creates a new event of the given type. All fields are set to 0. > type : a GdkEventType > Returns : a newly-allocated GdkEvent. The returned GdkEvent should > be freed with gdk_event_free(). так вот, после того, как я gdk_event_put() вызываю ( смотри выше ) gdk_event_free()и тут GPF. Без ..._free - всё ок, работает, но память течет именно здесь (тоже усердно проверял) , что очень плохо. Помогите, пожалуйста.

arkhivania
() автор топика
Ответ на: комментарий от arkhivania

А какой у тебя GDK_EVENT_TYPE? Дело в том, что gdk_event_free 
в зависимости от типа пытается освобождать некоторые свои поля, причем
разные. 

А вообще бы я посоветовал скомпилять gtk с отладочной информацией и 
просто посмотреть более подробно, где валится прога. 

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.