Всем привет!
Столкнулся с такой вот задачей: необходимо дочернее окно показывать на весь экран и обратно в оконный режим. Тут очень важно: мне приходит указатель на GtkWidget, из него я получаю X-окно (parent), а после создаю новое дочернее X11 окно. MainLoop-а нет (точнее у меня нет доступа к нему, да и он мне не очень и пригодится, т.к. я использую X11, а mainloop - gtk).
Не знаю, ничего не могу придумать... Спрашивал где можно и где нельзя, наткнулся на 2 решения: использовать совместно с X11 XCB или XEmbed... Но вот беда - в туториалах, мануалах и примерах ничего хоть отдаленно похожего на мою ситуацию не нашел.
Да и еще: приложение использует OpenGL, поэтому использовать GTK не подойдет. Есть на это 2 причины:
1. GTK не умеет работать с OpenGL, нужно дополнительная библиотека GTKGLEXT.
2. Эта библиотека реально уступает по производительности обычным иксам (сам проверял)
Сейчас нашел только такой выход: в отдельном потоке (да уж, извините, сам знаю как это плохо и насколько X-lib этого не любит) запускаю mainloop, до этого вызываю XSelectInput. Все вроде бы неплохо... Единственное но - долго, через раз, иногда выскакивает fatal error "ресурс временно недоступен" и приложение крашится.
Подскажите, пожалуйста, как можно поступить в такой ситуации...
Спасибо!