toobars
Последняя охота на жуков
Если ничего экстраординарного не произойдёт, то завтра в планах родить очередной релиз.
Эх, найди я способ избавится от того сегфолта раньше… А теперь получили громоздкий код, что связано с необходимостью хранить и обрабатывать море информации по каждому аккаунту, но с другой стороны — отличная производительность без тормозов (которые были бы неминуемы при создании виджета каждый раз, когда он был бы нужен).
Увы, практически в последний момент в меру ряда факторов решил отказаться от одновременного использования настроек некоего основного аккаунта и каждого из активных аккаунтов в отдельности, теперь будет либо основной, либо остальные.
Научился убивать виджет без сегфолта!
Уж не знаю, когда мне надоест есть этот кактус, а также где граница моей упёртости…
В общем, как-то неспешно, ватно и невыразительно, но удалось найти причину сегфолта при уничтожении виджета pidgin_status_box_new_with_account, который используется для смены статуса и т.п. для каждого из аккаунтов.
Многие вещи остаются для меня абсолютно, ну т.е. совершенно непонятными, как я ни пыжусь их понять. Так, когда-то для меня осталось за бортом объектно ориентированное программирование, я ниасилил Turbo Vision и написал частично на Паскале, частично на ассемблере для своих нужд собственную библиотеку со всеми необходимыми функциями — менюшки, окна, вывод и редактирование строк и прочее, с поддержкой мыши, всё, как положено. Впрочем, я написал её несколько раньше, чем появился TV… Ну, да я отвлёкся. «А вот я в советское время УУУУУУ» :)))
В общем, так или иначе, а в следующем релизе, похоже, снова не будет ни одного ИЗВЕСТНОГО бага. Только неизвестные 🙂
Какая несправедливость!
Ну почему, почему при попытке убить виджет pidgin_status_box_new_with_account в момент смены статуса возникает сегфолт?
В принципе, я уже наметил путь обхода этого дела, но этот путь, как уж водится, ведёт через жопу 🙁
Придётся после смены статуса виджет не убивать, а скрывать. Надеялся, что бонусом такого подхода будет большая скорость создания (уж больно тормозной он), думал, это тормоза связаны именно с созданием виджета, а не отрисовки, а хрен там — отрисовки 🙁
Ну ладно, впереди выходные. Надо только бубен с работы домой взять, чую — пригодиться! 🙂
Зато ещё косяков с аргументами функций нашёл и исправил 🙂
Нашёл причину сегфолта?
Увы, даже на рабочем стенде сегфолт снова перестал возникать, но я успел (примерно) вычислить, в какой момент он возникает.
В связи с чем появилось сразу две идеи о причинах его возникновения — кривая реализация передачи объекта функции, ну, и уже мои кривые руки (точнее — отсутствие соответв знаний на момент написания функции) — попытка принять функцией 3 аргумента, тогда как отправляется в неё всего 1 (ещё одно подтверждение… странности разработчиков компилятора, который позволяет делать такие вещи. тот же Паскаль за это молча бил канделябром в лицо :)))).
В своей, уже изрядно переписанной версии, исправил, но жду реакции общественности, у кого ошибка проявляется устойчиво — прав ли я в своей догадке.
А ещё по ходу удалось оптимизировать функцию загрузки плагина, но это уже мелочи.
Сделал смену иконок кнопок
Пока дома не было инета и я не мог получить через Dropbox последнюю версию исходника, который я начал ковырять на работе, то пришлось заняться рюшечками. Зато теперь при смене состояния кнопок-переключателей меняется и картинка на них. Так, например, при отключении звука на кнопке рисуется соответствующий значок с зачёркнутым динамиком.
Надо будет нарисовать что-нить, правда, на кнопку «Показывать только контакты в сети», а с рисованием у меня всё плохо 🙂
Ну да ладно, кто нарисует и пришлёт лучше — спасибо скажу.
Дома сегфолтится при включении аккаунта так и не хочет — работает, зараззза. Подозреваю, что сегфолт возникает при попытке пересоздать статусную строку, но плагин её любит вообще пересоздавать. Там при таком количестве событий она пересоздаётся — огого! Например, при смене статуса… А жалуются только на добавление аккаунта. Странно это. Буду на работе ковырять, раз дома не проявляется.
Сегфолт при включении аккаунта получен!
Удалось получить на рабочей машине, дома без проблем всё включается/выключается без проблем.
Надо сильно думать, что бы это значило?…
Версия 1.1 плагина TooBars
Доступна для скачивания версия 1.1 плагина TooBars.
Изменения:
- Небольшое изменение в функции CreateStatusBox (оптимизация);
- Иконки кнопок теперь живут не в ~/.purple/plugins, а, как им и положено, в /usr/share/pixmaps/pidgin/buttons;
- Написаны скрипты для самостоятельной компиляции из исходников.
Кажется осилил make
Блин, 3*тьфу< Кто бы мог подумать, что это выльется в двухдневный гиморрой? Перерыл гору исходников, но либо пакет не собирается, либо собирается, но файлы перевода кладёт совершенно не в ту папку, вследствие чего они не видны плагином. Только что в 158 раз сделал, казалось бы, то, что уже делал, но (вроде бы) на этот раз всё наконец-таки заработало! (НЕ ДЫШИТЕ!) Как оно работает я так и не понял. По мне, так какое-то оно... кустарное чтоли. При поверхностном взгляде всё можно было сделать куда как проще. Теперь осталось в самом плагине поменять путь к иконкам и всё!
Вот и релиз!
«Ремонт нельзя закончить, его можно только прекратить».
Поговорка для тех, кто не умеет вовремя остановится и не разбивать лоб в кровь о кирпичную стену. Я себя к таковым не отношу. Посему, поняв, что на реализацию некоторых вещей уйдёт слишком много времени (например — возможность смены отдельно взятого статуса произвольного аккаунта), я их просто убрал из текущей версии. Пусть в голове зреют, а процессу не мешают 🙂
Итак, предлагаю Вашему вниманию результат весьма активной мозговой мастурбации в течение последнего месяца — плагин toobars для программы обмена сообщениями Pidgin.
За это время было изрыто огромное количество чужого кода, прочитано найденных в инете обрывков манов и я даже начал понимать, как оно работает 🙂 Все знают притчу про обезьяну, которая при определённом стечение обстоятельств может написать «Войну и Мир»? Хотя, конечно, мой плагин с этим шедевром и рядом не валялся, но в остальном аналогия прослеживается чётко.
Пока Дарт возится с Васькой я попытаюсь воплотить некоторые идеи в Pidgin, по мере возможности, наличию времени и, конечно, знаний.
Где же у тебя кнопка?
Т.е. не кнопка, конечно, но путь, по которому живут файлы пользователя, в частости — сам плагин? Что-то типа «~/.purple/plugins», а не «/home/vayurik/.purple/plugins».
А нужно мне это, чтобы иконки класть вместе с файлом .so, а не по какому-то хитротрахнатому пути, типа «/usr/share/pixmaps/pidgin/toolbar», например…
Поддержите меня!
Свежие записи
Свежие комментарии
- Новая версия патча-русификатора Yume Miru Kusuri. Теперь и с графикой. к записи
- Новая версия патча-русификатора Yume Miru Kusuri. Теперь и с графикой. к записи
- Новая версия патча-русификатора Yume Miru Kusuri. Теперь и с графикой. к записи
- Новая версия патча-русификатора Yume Miru Kusuri. Теперь и с графикой. к записи
- Новая версия патча-русификатора Yume Miru Kusuri. Теперь и с графикой. к записи
Архивы
- Май 2020
- Декабрь 2019
- Июнь 2019
- Июль 2018
- Февраль 2018
- Сентябрь 2017
- Август 2017
- Июнь 2017
- Март 2017
- Январь 2017
- Декабрь 2016
- Январь 2016
- Декабрь 2015
- Ноябрь 2015
- Октябрь 2015
- Сентябрь 2015
- Август 2015
- Июль 2015
- Апрель 2015
- Февраль 2015
- Январь 2015
- Декабрь 2014
- Ноябрь 2014
- Октябрь 2014
- Сентябрь 2014
- Июль 2014
- Июнь 2014
- Февраль 2014
- Январь 2014
- Декабрь 2013
- Февраль 2013
- Январь 2013
- Июнь 2012
- Апрель 2012
- Март 2012
- Август 2011
- Июнь 2011
- Апрель 2011
- Февраль 2011
- Декабрь 2010
- Ноябрь 2010
- Сентябрь 2010
- Август 2010
- Июль 2010
- Июнь 2010
- Май 2010
- Апрель 2010
- Март 2010
- Февраль 2010
- Январь 2010
- Декабрь 2009