Добавить поддержку Legacy-ветки GTK для Enterprise Linux

Модератор: Модераторы разделов

zenitur
Сообщения: 594
Статус: Одмин
ОС: openSuSE 10.2

Добавить поддержку Legacy-ветки GTK для Enterprise Linux

Сообщение zenitur »

Всем привет!

Собираю PCSX2 1.4.0 на билд-ферме на базе CentOS 5 + репозиторий devtoolset. Почему бы не воспользоваться Ubuntu PPA? Потому что у меня - некоторый старый Linux с долговременной поддержкой.

Вот смотрите, это - моя сборка 1.3.1. Что в новом Linux, что в старом - просто стартует в 1 клик. Я не нашёл ни одного варианта системы Linux, в котором этот бинарник не стартовал! Однако 8 января 2016 года вышла версия 1.4.0, и теперь надо собирать её.

Итак, к сути проблемы. Это - мой набор патчей для PCSX2 1.3.1. Они делятся на:

1). Даунгрейд минимально необходимой версии GTK+ с 2.24 до 2.10.
а). Замена "(gtk_dialog_get_content_area(GTK_DIALOG(dialog))" на "(GTK_DIALOG(dialog)->vbox)" (хотя по идее нужно делать условие).
б). Откат назад кода GTK_COMBO_BOX путём отката коммита, потому что таких строк действительно много. Тот самый коммит добавляет поддержку GTK 3 (и дропает всё, что старее 2.24).
в). Откат переменных GDK_KEY_Escape до вида и GDK_Escape (опять же, откатом коммита).
2). Добавление "#include <GL/glxew.h>" и "#include <unistd.h>"
3). Отвязывание от EGL (уже в апстриме).
4). Правка конфига CMake, чтобы он не ругался на отсуствие GIO.

И вот добавилась новая беда - подсказки! GTK Tooltips поменялись в GTK 2.12 (однако есть обратная совместимость). Я нашёл примеры кода, где есть условие "Если GTK больше 2.12, то такой код, а если меньше, то такой". Например здесь и здесь. И я не понял, как старый стиль работы с tooltips вкорячить сюда в строку 29! Поэтому я прошу у вас помощь.

Пока что успешно собрал, полностью удалив все подсказки из кода. Но это костыль :-( Помогите же исправить одну несчастную строчку! И я вас обрадую бинарём PCSX2 1.4.0 под все дистры. Исходник здесь.
А йа Ктулху! А йа - Медве-ед! А где Путин? Путина не-ет! Если встретишь - зохавай моск! А вернёшься - скажи ПРЕВЕД! Превед, Ктулху! Превед, Медвед!
Спасибо сказали:
zenitur
Сообщения: 594
Статус: Одмин
ОС: openSuSE 10.2

Re: Добавить поддержку Legacy-ветки GTK для Enterprise Linux

Сообщение zenitur »

Собственно, сама ошибка:

Код: Выделить всё

[ 82%] Building CXX object plugins/GSdx/CMakeFiles/GSdx-1.0.0.dir/GSLinuxDialog.cpp.o
/home/zenitur/pcsx2/pcsx2-1.4.0/plugins/GSdx/GSLinuxDialog.cpp: In function ‘void AddTooltip(GtkWidget*, int)’:
/home/zenitur/pcsx2/pcsx2-1.4.0/plugins/GSdx/GSLinuxDialog.cpp:31:52: error: ‘gtk_widget_set_tooltip_text’ was not declared in this scope
  gtk_widget_set_tooltip_text(w, dialog_message(idc));
                                                    ^
/home/zenitur/pcsx2/pcsx2-1.4.0/plugins/GSdx/GSLinuxDialog.cpp: In function ‘GtkWidget* CreateComboBoxFromVector(const std::vector<GSSetting>&, const char*, int)’:
/home/zenitur/pcsx2/pcsx2-1.4.0/plugins/GSdx/GSLinuxDialog.cpp:64:48: error: ‘gtk_combo_box_text_new’ was not declared in this scope
  GtkWidget* combo_box = gtk_combo_box_text_new();
                                                ^
/home/zenitur/pcsx2/pcsx2-1.4.0/plugins/GSdx/GSLinuxDialog.cpp:74:62: error: ‘GTK_COMBO_BOX_TEXT’ was not declared in this scope
   gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), label.c_str());
                                                              ^
/home/zenitur/pcsx2/pcsx2-1.4.0/plugins/GSdx/GSLinuxDialog.cpp:74:78: error: ‘gtk_combo_box_text_append_text’ was not declared in this scope
   gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), label.c_str());
                                                                              ^
/home/zenitur/pcsx2/pcsx2-1.4.0/plugins/GSdx/GSLinuxDialog.cpp: In function ‘void populate_hack_table(GtkWidget*)’:
/home/zenitur/pcsx2/pcsx2-1.4.0/plugins/GSdx/GSLinuxDialog.cpp:364:82: error: ‘gtk_widget_set_tooltip_text’ was not declared in this scope
  gtk_widget_set_tooltip_text(hack_enble_check, "Allows the use of the hack below");
                                                                                  ^
make[2]: *** [plugins/GSdx/CMakeFiles/GSdx-1.0.0.dir/GSLinuxDialog.cpp.o] Error 1
make[1]: *** [plugins/GSdx/CMakeFiles/GSdx-1.0.0.dir/all] Error 2
make: *** [all] Error 2
[zenitur@localhost build]$
А йа Ктулху! А йа - Медве-ед! А где Путин? Путина не-ет! Если встретишь - зохавай моск! А вернёшься - скажи ПРЕВЕД! Превед, Ктулху! Превед, Медвед!
Спасибо сказали: