Я бы хотел определить максимально возможный размер окна на текущем дисплее во время инициализации, чтобы определить, действительны ли настройки.Единственный способ сделать это - создать временное развернутое окно и вызвать SDL_GetWindowSize()
.Это работает, как и ожидалось, в macOS, но не работает в Linux.
Вот мой код:
int max_width, max_height;
SDL_Window* test_window = SDL_CreateWindow( "test_window",
SDL_WINDOWPOS_CENTERED_DISPLAY( current_display_id ),
SDL_WINDOWPOS_CENTERED_DISPLAY( current_display_id ),
20, 10, // No display is this small
SDL_WINDOW_RESIZABLE | SDL_WINDOW_MAXIMIZED
);
SDL_GetWindowSize( test_window, &max_width, &max_height );
В macOS max_width и max_height правильно установлены на максимальный размер окна.Однако в Linux они установлены на 20 и 10.
Может кто-нибудь сказать мне, почему это не работает в Linux?Есть ли лучший способ сделать то же самое?
Редактировать: Может быть, я не совсем понял, что я имею в виду под максимальным размером окна.Большинство операционных систем имеют своего рода панель задач / док-станцию, которая ограничивает используемую область дисплея, поэтому «максимальный размер окна» не равен размеру дисплея, полученному с помощью SDL_GetDesktopDisplayMode()