Контекст:
Я использую glfw под xmonad.Glfw, очевидно, устанавливает заголовок окна после создания окна, таким образом не позволяя xmonad правильно его обрабатывать.Я хочу изменить исходный код glfw, чтобы я мог установить заголовок окна перед его созданием.
Проблема:
Поэтому я загружаю glfw-2.6 и просматриваю lib / x11 / x11_window.c;строки, вызывающие проблему, следующие:
// Create a window
_glfwWin.Win = XCreateWindow(
_glfwLibrary.Dpy,
RootWindow( _glfwLibrary.Dpy, _glfwWin.VI->screen ),
0, 0, // Upper left corner
_glfwWin.Width, _glfwWin.Height, // Width, height
0, // Borderwidth
_glfwWin.VI->depth, // Depth
InputOutput,
_glfwWin.VI->visual,
CWBorderPixel | CWColormap | CWEventMask,
&wa
);
За которыми последуют:
_glfwPlatformSetWindowTitle( "GLFW Window" );
, где
void _glfwPlatformSetWindowTitle( const char *title )
{
// Set window & icon title
XStoreName( _glfwLibrary.Dpy, _glfwWin.Win, title );
XSetIconName( _glfwLibrary.Dpy, _glfwWin.Win, title );
}
Теперь, если я попытаюсь переместить вызов glfwPlatformSetWindowTitleперед вызовом CreateWindow я получаю segfault - как я должен, так как _glfwWin.win не будет определен.
Я не знаю, как решить эту проблему, так как для установки заголовка окна мне нужен _glfwWin. Для инициализации, но для ее инициализации мне нужно создать окно.
Таким образом, я спрашиваю: в X11, как правильно установить заголовок окна перед созданием окна?
Спасибо!