Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resizing window results in huge texture and crash #3200

Closed
Alexander-Wilms opened this issue Nov 19, 2023 · 1 comment · Fixed by #3201
Closed

Resizing window results in huge texture and crash #3200

Alexander-Wilms opened this issue Nov 19, 2023 · 1 comment · Fixed by #3201
Labels
Milestone

Comments

@Alexander-Wilms
Copy link
Contributor

Alexander-Wilms commented Nov 19, 2023

Describe the bug
When one reduces the height of the VCMI window (it doesn't matter whether this is during the intro or e.g. while viewing the adeventure map), maximizes it and then un-maximizes it, VCMI crashes since it tries to create a huge texture.

Game logs
VCMI_Client_log.txt

To Reproduce
Steps to reproduce the behavior:

  1. Start vcmiclient in windowed mode
  2. Reduce height of window while keeping the same width
  3. Drag window to the top of the screen to maximize it
  4. Drag it back down to un-maximize it

Expected behavior
The UI has the aspect ratio of the resolution selected in the launcher and possibly black bars.

Actual behavior
VCMI crashes:

[...]
Initializing VCMI_Lib: 219 ms
Unable to create screen texture
Texture dimensions are limited to 16384x16384
terminate called after throwing an instance of 'std::runtime_error'
  what():  Unable to create screen texture
Aborted (core dumped)
GDB backtrace:
Initializing VCMI_Lib: 232 ms
[Thread 0x7fffb30146c0 (LWP 12602) exited]
Unable to create screen texture
Texture dimensions are limited to 16384x16384
terminate called after throwing an instance of 'std::runtime_error'
  what():  Unable to create screen texture

Thread 1 "vcmiclient" received signal SIGABRT, Aborted.
0x00007ffff5291dec in __pthread_kill_implementation () from /lib64/libc.so.6
Missing separate debuginfos, use: zypper install glibc-locale-base-debuginfo-2.38-6.1.x86_64 krb5-debuginfo-1.21.1-2.1.x86_64 libFLAC12-x86-64-v3-debuginfo-1.4.3-1.3.x86_64 libX11-6-debuginfo-1.8.7-1.1.x86_64 libXau6-debuginfo-1.0.11-1.3.x86_64 libXext6-debuginfo-1.3.5-1.3.x86_64 libXxf86vm1-debuginfo-1.1.5-1.2.x86_64 libasound2-debuginfo-1.2.10-5.1.x86_64 libbluray2-debuginfo-1.3.4-2.1.x86_64 libboost_date_time1_83_0-x86-64-v3-debuginfo-1.83.0-1.1.x86_64 libboost_filesystem1_83_0-x86-64-v3-debuginfo-1.83.0-1.1.x86_64 libboost_locale1_83_0-x86-64-v3-debuginfo-1.83.0-1.1.x86_64 libboost_program_options1_83_0-x86-64-v3-debuginfo-1.83.0-1.1.x86_64 libboost_thread1_83_0-x86-64-v3-debuginfo-1.83.0-1.1.x86_64 libbrotlicommon1-x86-64-v3-debuginfo-1.1.0-1.1.x86_64 libbrotlidec1-x86-64-v3-debuginfo-1.1.0-1.1.x86_64 libbrotlienc1-x86-64-v3-debuginfo-1.1.0-1.1.x86_64 libcelt0-2-debuginfo-0.11.3-1.32.x86_64 libcodec2-1_2-debuginfo-1.2.0-1.2.x86_64 libcom_err2-debuginfo-1.47.0-2.1.x86_64 libdbus-1-3-debuginfo-1.14.10-2.1.x86_64 libdrm2-debuginfo-2.4.117-2.1.x86_64 libexpat1-debuginfo-2.5.0-2.6.x86_64 libffi8-debuginfo-3.4.4-1.6.x86_64 libfluidsynth3-debuginfo-2.3.3-1.2.x86_64 libfontconfig1-debuginfo-2.14.2-1.4.x86_64 libgcc_s1-debuginfo-13.2.1+git7813-3.1.x86_64 libglib-2_0-0-debuginfo-2.78.1-1.1.x86_64 libgnutls30-debuginfo-3.8.1-1.2.x86_64 libgomp1-debuginfo-13.2.1+git7813-3.1.x86_64 libgsm1-debuginfo-1.0.22-1.4.x86_64 libhogweed6-x86-64-v3-debuginfo-3.9.1-2.3.x86_64 libicu73-debuginfo-73.2-3.1.x86_64 libjpeg8-x86-64-v3-debuginfo-8.2.2-76.2.x86_64 libjxl0_8-x86-64-v3-debuginfo-0.8.2-2.2.x86_64 liblzma5-x86-64-v3-debuginfo-5.4.5-1.1.x86_64 libmfx1-debuginfo-23.2.2-1.4.x86_64 libmp3lame0-x86-64-v3-debuginfo-3.100-5.7.x86_64 libmpg123-0-debuginfo-1.32.3-1.1.x86_64 libncurses6-debuginfo-6.4.20231111-23.1.x86_64 libnuma1-debuginfo-2.0.16.21.g693fee1-1.3.x86_64 libogg0-debuginfo-1.3.5-1.7.x86_64 libopenjp2-7-x86-64-v3-debuginfo-2.5.0-3.7.x86_64 libopenssl3-x86-64-v3-debuginfo-3.1.4-2.1.x86_64 libopus0-debuginfo-1.4-1.3.x86_64 libpng16-16-x86-64-v3-debuginfo-1.6.40-1.2.x86_64 libpulse0-debuginfo-16.1-5.1.x86_64 librav1e0_6-debuginfo-0.6.6-1.1.x86_64 libsharpyuv0-debuginfo-1.3.2-2.1.x86_64 libspeex1-debuginfo-1.2.1-1.5.x86_64 libssh4-debuginfo-0.10.5-3.1.x86_64 libsystemd0-debuginfo-254.5-5.1.x86_64 libtasn1-6-debuginfo-4.19.0-1.5.x86_64 libtheoradec1-debuginfo-1.1.1-30.10.x86_64 libtheoraenc1-debuginfo-1.1.1-30.10.x86_64 libtwolame0-debuginfo-0.4.0-1.17.x86_64 libunistring5-debuginfo-1.1-3.1.x86_64 libva-drm2-debuginfo-2.20.0-1.1.x86_64 libva2-debuginfo-2.20.0-1.1.x86_64 libvdpau1-debuginfo-1.5-1.7.x86_64 libvo-amrwbenc0-debuginfo-0.1.3+5-1.2.x86_64 libvorbisfile3-x86-64-v3-debuginfo-1.3.7-4.2.x86_64 libvpx8-debuginfo-1.13.1-1.1.x86_64 libvulkan1-debuginfo-1.3.268.0-1.1.x86_64 libwebp7-debuginfo-1.3.2-2.1.x86_64 libxcb-dri2-0-debuginfo-1.16-1.1.x86_64 libxcb-randr0-debuginfo-1.16-1.1.x86_64 libxcb1-debuginfo-1.16-1.1.x86_64 libxml2-2-debuginfo-2.11.5-2.1.x86_64 libxmp4-debuginfo-4.6.0-1.1.x86_64 libxshmfence1-debuginfo-1.3.2-1.2.x86_64 libz1-x86-64-v3-debuginfo-1.3-1.1.x86_64
(gdb) bt
#0  0x00007ffff5291dec in __pthread_kill_implementation () at /lib64/libc.so.6
#1  0x00007ffff523f0c6 in raise () at /lib64/libc.so.6
#2  0x00007ffff52268d7 in abort () at /lib64/libc.so.6
#3  0x00007ffff56acc17 in  () at /lib64/libstdc++.so.6
#4  0x00007ffff56bc1fc in  () at /lib64/libstdc++.so.6
#5  0x00007ffff56bc267 in  () at /lib64/libstdc++.so.6
#6  0x00007ffff56bc4c8 in  () at /lib64/libstdc++.so.6
#7  0x000055555579f055 in ScreenHandler::initializeScreenBuffers() (this=<optimized out>)
    at /home/alexander/Technik/Development/vcmi/client/renderSDL/ScreenHandler.cpp:334
#8  0x000055555579e7d3 in ScreenHandler::recreateWindowAndScreenBuffers() (this=0x555555f15b50)
    at /home/alexander/Technik/Development/vcmi/client/renderSDL/ScreenHandler.cpp:210
#9  0x00005555556cd16e in CGuiHandler::onScreenResize() (this=0x555555abf4f8 <GH>)
    at /home/alexander/Technik/Development/vcmi/client/gui/CGuiHandler.cpp:252
#10 0x00005555556c8b9e in InputHandler::preprocessEvent(SDL_Event const&) (this=this@entry=0x555555eef3c0, ev=...)
    at /home/alexander/Technik/Development/vcmi/client/eventsSDL/InputHandler.cpp:166
#11 0x00005555556c98db in InputHandler::fetchEvents() (this=0x555555eef3c0)
    at /home/alexander/Technik/Development/vcmi/client/eventsSDL/InputHandler.cpp:247
#12 0x000055555595a2c9 in CVideoPlayer::playVideo(int, int, bool) (this=this@entry=0x55555691a060, x=x@entry=0, y=<optimized out>, 
    y@entry=1, stopOnKey=true) at /home/alexander/Technik/Development/vcmi/client/CVideoHandler.cpp:627
#13 0x000055555595a340 in CVideoPlayer::openAndPlayVideo(ResourcePathTempl<(EResType)9> const&, int, int, bool, bool)
    (this=0x55555691a060, name=<optimized out>, x=0, y=1, stopOnKey=true, scale=<optimized out>)
    at /home/alexander/Technik/Development/vcmi/client/CVideoHandler.cpp:655
#14 0x00005555558f955a in playIntro() () at /home/alexander/Technik/Development/vcmi/client/CMT.cpp:428
#15 0x00005555558f5bfe in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/alexander/Technik/Development/vcmi/client/CMT.cpp:312
(gdb) bt full
#0  0x00007ffff5291dec in __pthread_kill_implementation () at /lib64/libc.so.6
#1  0x00007ffff523f0c6 in raise () at /lib64/libc.so.6
#2  0x00007ffff52268d7 in abort () at /lib64/libc.so.6
#3  0x00007ffff56acc17 in  () at /lib64/libstdc++.so.6
#4  0x00007ffff56bc1fc in  () at /lib64/libstdc++.so.6
#5  0x00007ffff56bc267 in  () at /lib64/libstdc++.so.6
#6  0x00007ffff56bc4c8 in  () at /lib64/libstdc++.so.6
#7  0x000055555579f055 in ScreenHandler::initializeScreenBuffers() (this=<optimized out>)
    at /home/alexander/Technik/Development/vcmi/client/renderSDL/ScreenHandler.cpp:334
        logicalSize = {x = <optimized out>, y = <optimized out>}
#8  0x000055555579e7d3 in ScreenHandler::recreateWindowAndScreenBuffers() (this=0x555555f15b50)
    at /home/alexander/Technik/Development/vcmi/client/renderSDL/ScreenHandler.cpp:210
#9  0x00005555556cd16e in CGuiHandler::onScreenResize() (this=0x555555abf4f8 <GH>)
    at /home/alexander/Technik/Development/vcmi/client/gui/CGuiHandler.cpp:252
#10 0x00005555556c8b9e in InputHandler::preprocessEvent(SDL_Event const&) (this=this@entry=0x555555eef3c0, ev=...)
    at /home/alexander/Technik/Development/vcmi/client/eventsSDL/InputHandler.cpp:166
        interfaceLock = {m = 0x555555abf550 <GH+88>, is_locked = true}
#11 0x00005555556c98db in InputHandler::fetchEvents() (this=0x555555eef3c0)
    at /home/alexander/Technik/Development/vcmi/client/eventsSDL/InputHandler.cpp:247
        ev = {type = 512, common = {type = 512, timestamp = 5683}, display = {type = 512, timestamp = 5683, display = 1, event = 9 '\t', padding1 = 85 'U', padding2 = 0 '\000', padding3 = 0 '\000', data1 = 0}, window = {type = 512, timestamp = 5683, windowID = 1, event = 9 '\t', padding1 = 85 'U', padding2 = 0 '\000', padding3 = 0 '\000', data1 = 0, data2 = 0}, key = {type = 512, timestamp = 5683, windowID = 1, state = 9 '\t', repeat = 85 'U', padding2 = 0 '\000', padding3 = 0 '\000', keysym = {scancode = SDL_SCANCODE_UNKNOWN, sym = 0, mod = 20385, unused = 32767}}, edit = {type = 512, timestamp = 5683, windowID = 1, text = "\tU\000\000\000\000\000\000\000\000\000\000\241O\270\364\377\177", '\000' <repeats 11 times>, "\223\017\024", start = 1865268320, length = 1444624928}, editExt = {type = 512, timestamp = 5683, windowID = 1, text = 0x0, start = -189247583, length = 32767}, text = {type = 512, timestamp = 5683, windowID = 1, text = "\tU\000\000\000\000\000\000\000\000\000\000\241O\270\364\377\177", '\000' <repeats 11 times>, "\223\017\024"}, motion = {type = 512, timestamp = 5683, windowID = 1, which = 21769, state = 0, x = 0, y = -189247583, xrel = 32767, yrel = 0}, button = {type = 512, timestamp = 5683, windowID = 1, which = 21769, button = 0 '\000', state = 0 '\000', clicks = 0 '\000', padding1 = 0 '\000', x = 0, y = -189247583}, wheel = {type = 512, timestamp = 5683, windowID = 1, which = 21769, x = 0, y = 0, direction = 4105719713, preciseX = 4.59163468e-41, preciseY = 0, mouseX = 0, mouseY = 336564992}, jaxis = {type = 512, timestamp = 5683, which = 1, axis = 9 '\t', padding1 = 85 'U', padding2 = 0 '\000', padding3 = 0 '\000', value = 0, padding4 = 0}, jball = {type = 512, timestamp = 5683, which = 1, ball = 9 '\t', padding1 = 85 'U', padding2 = 0 '\000', padding3 = 0 '\000', xrel = 0, yrel = 0}, jhat = {type = 512, timestamp = 5683, which = 1, hat = 9 '\t', value = 85 'U', padding1 = 0 '\000', padding2 = 0 '\000'}, jbutton = {type = 512, timestamp = 5683, which = 1, button = 9 '\t', state = 85 'U', padding1 = 0 '\000', padding2 = 0 '\000'}, jdevice = {type = 512, timestamp = 5683, which = 1}, jbattery = {type = 512, timestamp = 5683, which = 1, level = 21769}, caxis = {type = 512, timestamp = 5683, which = 1, axis = 9 '\t', padding1 = 85 'U', padding2 = 0 '\000', padding3 = 0 '\000', value = 0, padding4 = 0}, cbutton = {type = 512, timestamp = 5683, which = 1, button = 9 '\t', state = 85 'U', padding1 = 0 '\000', padding2 = 0 '\000'}, cdevice = {type = 512, timestamp = 5683, which = 1}, ctouchpad = {type = 512, timestamp = 5683, which = 1, touchpad = 21769, finger = 0, x = 0, y = -1.16821007e+32, pressure = 4.59163468e-41}, csensor = {type = 512, timestamp = 5683, which = 1, sensor = 21769, data = {0, 0, -1.16821007e+32}, timestamp_us = 0}, adevice = {type = 512, timestamp = 5683, which = 1, iscapture = 9 '\t', padding1 = 85 'U', padding2 = 0 '\000', padding3 = 0 '\000'}, sensor = {type = 512, timestamp = 5683, which = 1, data = {3.05048663e-41, 0, 0, -1.16821007e+32, 4.59163468e-41, 0}, timestamp_us = 8011266433001427712}, quit = {type = 512, timestamp = 5683}, user = {type = 512, timestamp = 5683, windowID = 1, code = 21769, data1 = 0x0, data2 = 0x7ffff4b84fa1 <XCheckIfEvent+529>}, syswm = {type = 512, timestamp = 5683, msg = 0x550900000001}, tfinger = {type = 512, timestamp = 5683, touchId = 93497143066625, fingerId = 0, x = -1.16821007e+32, y = 4.59163468e-41, dx = 0, dy = 0, pressure = 7.24864564e-27, windowID = 1865268320}, mgesture = {type = 512, timestamp = 5683, touchId = 93497143066625, dTheta = 0, dDist = 0, x = -1.16821007e+32, y = 4.59163468e-41, numFingers = 0, padding = 0}, dgesture = {type = 512, timestamp = 5683, touchId = 93497143066625, gestureId = 0, numFingers = 4105719713, error = 4.59163468e-41, x = 0, y = 0}, drop = {type = 512, timestamp = 5683, file = 0x550900000001 <error: Cannot access memory at address 0x550900000001>, windowID = 0}, padding = "\000\002\000\0003\026\000\000\001\000\000\000\tU\000\000\000\000\000\000\000\000\000\000\241O\270\364\377\177", '\000' <repeats 11 times>, "\223\017\024`\274-o :\033VUU\000"}
#12 0x000055555595a2c9 in CVideoPlayer::playVideo(int, int, bool) (this=this@entry=0x55555691a060, x=x@entry=0, y=<optimized out>, 
    y@entry=1, stopOnKey=true) at /home/alexander/Technik/Development/vcmi/client/CVideoHandler.cpp:627
        rect = {x = 0, y = 0, w = 1920, h = 1080}
        frameDurationSec = <optimized out>
        timeToSleepMillisec = <optimized out>
#13 0x000055555595a340 in CVideoPlayer::openAndPlayVideo(ResourcePathTempl<(EResType)9> const&, int, int, bool, bool)
    (this=0x55555691a060, name=<optimized out>, x=0, y=1, stopOnKey=true, scale=<optimized out>)
    at /home/alexander/Technik/Development/vcmi/client/CVideoHandler.cpp:655
#14 0x00005555558f955a in playIntro() () at /home/alexander/Technik/Development/vcmi/client/CMT.cpp:428
        audioData = {first = std::unique_ptr<unsigned char []> = {get() = 0x555556be2120 "RIFFDD\a"}, second = 476236}
        sound = 0
#15 0x00005555558f5bfe in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/alexander/Technik/Development/vcmi/client/CMT.cpp:312
        opts = <incomplete type>
        logPath = {<boost::filesystem::path_detail::path_constants<char, (char)'/', (char)'/', (char)'.'>> = {static separator = 47 '/', static preferred_separator = <optimized out>, static dot = 46 '.'}, m_pathname = "/home/alexander/.cache/vcmi/VCMI_Client_log.txt"}
        session = Python Exception <class 'AttributeError'>: 'NoneType' object has no attribute 'pointer'
{parent = @0x7ffff7e2cd48, path = std::vector of length 1, capacity 1 = {"session"}, node = @0x555555ec7050, copy = {data = std::variant<struct std::monostate, bool, double, std::string, class std::vector<JsonNode, std::allocator<JsonNode> >, class std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, JsonNode, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, JsonNode> > >, long> [index 5] containing std::map with 3 elements, meta = "", flags = std::vector of length 0, capacity 0}}
        loading = {thread_info = {px = 0x5555569217b0, pn = {pi_ = 0x55555692a180}}}
        names = Python Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0x646165646e752d

Did it work earlier?
Unknown

Screenshots
Before maximizing the window:
image
After un-maximizing the window, just prior to the crash:
image

Version

  • OS: openSUSE Tumbleweed
  • Version: Latest develop (c0e54b3)

Additional context
The issue also affects the changes in #3041

I assume VCMI creates a texture with the height specified in the settings or the intro video, and the aspect ratio of the actual VCMI window. This results in a texture with a width greater than 16384 px.

I added some debug output:

ScreenHandler::recreateWindowAndScreenBuffers()
ScreenHandler::initializeScreenBuffers()
ScreenHandler::initializeScreenBuffers(): x=24000, y=637
Alexander-Wilms added a commit to Alexander-Wilms/vcmi that referenced this issue Nov 19, 2023
VCMI created a texture with the height of the original intro video, and the aspect ratio of the actual VCMI window.
This resulted in a texture with a width greater than 16384 px.

Fixes vcmi#3200
@Alexander-Wilms Alexander-Wilms changed the title Resizing window during intro results in huge texture and crash Resizing window results in huge texture and crash Nov 19, 2023
Alexander-Wilms added a commit to Alexander-Wilms/vcmi that referenced this issue Jan 28, 2024
VCMI created a texture with the height of the original intro video, and the aspect ratio of the actual VCMI window.
This resulted in a texture with a width greater than 16384 px.

Fixes vcmi#3200
Alexander-Wilms added a commit to Alexander-Wilms/vcmi that referenced this issue Jan 30, 2024
VCMI created a texture with the height of the original intro video, and the aspect ratio of the actual VCMI window.
This resulted in a texture with a width greater than 16384 px.

Fixes vcmi#3200
Alexander-Wilms added a commit to Alexander-Wilms/vcmi that referenced this issue Jan 30, 2024
VCMI created a texture with the height of the original intro video, and the aspect ratio of the actual VCMI window.
This resulted in a texture with a width greater than 16384 px.

Fixes vcmi#3200
@DjWarmonger DjWarmonger added this to the 1.5 milestone Jan 31, 2024
@Alexander-Wilms
Copy link
Contributor Author

Alexander-Wilms commented Feb 2, 2024

I added some debug output here: https://github.com/vcmi/vcmi/compare/develop...Alexander-Wilms:vcmi:fix-resolution-crash?expand=1
recreateWindowAndScreenBuffers() is called when I un-maximize the window.

I noticed this output, which seems to be wrong: minimalScaling: 50, maximalScaling: 4

Starting... 
Starting client of 'VCMI 1.5.0.84bf5c11d72b62cbc7b6100063a5813f8e1b5dc0'
Creating console and configuring logger: 0 ms
The log file will be saved to "/home/alexander/.cache/vcmi/VCMI_Client_log.txt"
        Initialization: 5 ms
        Data loading: 76 ms
File <unknown> is not a valid JSON file!
At line 1, position 0 error: File is empty

        Mod handler: 2 ms
        Mod filesystems: 14 ms
Initialized logging system based on settings successfully.
[log level] ai => not set
[log level] animation => not set
[log level] bonus => not set
[log level] global => trace
[log level] mod => not set
[log level] network => not set
ScreenHandler::ScreenHandler()
ScreenHandler::getPreferredWindowMode()
ScreenHandler::getPreferredDisplayIndex()
ScreenHandler::getPreferredWindowResolution()
ScreenHandler::getPreferredWindowMode()
ScreenHandler::getPreferredWindowMode()
ScreenHandler::recreateWindowAndScreenBuffers()
ScreenHandler::getPreferredWindowResolution()
ScreenHandler::getPreferredWindowMode()
ScreenHandler::getPreferredWindowMode()
ScreenHandler::getPreferredDisplayIndex()
Found 4 render drivers
        opengl (active)
        opengles2
        opengles
        software
Created renderer opengl
ScreenHandler::initializeScreenBuffers()
ScreenHandler::getPreferredLogicalResolution()
ScreenHandler::getRenderResolution()
        renderResolution.x: 800, renderResolution.y: 600
        availableResolution.x: 800, availableResolution.y: 600
ScreenHandler::getSupportedScalingRange()
ScreenHandler::getRenderResolution()
        renderResolution.x: 800, renderResolution.y: 600
        availableResolution.x: 800, availableResolution.y: 600
        minimalScaling: 50.000000, maximalScaling: 100.000000
        minimalScaling: 50, maximalScaling: 100
        scaling: 100
        logicalResolution.x: 800, logicalResolution.y: 600
logicalSize.x: 800, logicalSize.y: 600
        Initializing video: 194 ms
Initializing screen and sound handling: 2 ms
                 Game Settings handler: 0 ms
                 General text handler: 15 ms
                 Bonus type handler: 2 ms
                 Road handler: 0 ms
                 River handler: 0 ms
                 Terrain handler: 0 ms
                 Hero handler: 0 ms
                 Hero classes handler: 0 ms
                 Artifact handler: 0 ms
                 Creature handler: 0 ms
                 Town handler: 0 ms
                 Object handler: 0 ms
                 Object types information handler: 0 ms
                 Spell handler: 0 ms
                 Skill handler: 0 ms
                 Terrain view pattern handler: 4 ms
                 Template handler: 0 ms
                 Battlefields handler: 0 ms
                 Obstacles handler: 0 ms
        Initializing handlers: 23 ms
        Initializing content handler: 0 ms
                [3d3901f9]core
                [f90efd08]VCMI essential files
                [1a0114a7]VCMI extras
                [2e8155fd]Revisit object button
                [6410dc93]Arrow Tower Icons
                [b0693ff8]Battlefield actions
                [ba5baf9e]Andruids Bonus Icons
                [ee681e7b]Extended lobby options
                [07fe4c24]VCMI Quick Exchange
                [b27e05f6]Bonus Icons
                [76c8673b]Spell Immunity Bonus Icons
        Parsing mod data: 128 ms
                [SKIP] core
                [SKIP] VCMI essential files
                [SKIP] VCMI extras
                [SKIP] Revisit object button
                [SKIP] Arrow Tower Icons
                [SKIP] Battlefield actions
                [SKIP] Andruids Bonus Icons
                [SKIP] Extended lobby options
                [SKIP] VCMI Quick Exchange
                [SKIP] Bonus Icons
                [SKIP] Spell Immunity Bonus Icons
        Loading mod data: 66 ms
        Resolving identifiers: 11 ms
No templates found for core:artifact:core:spellBook
No templates found for core:artifact:core:spellScroll
No templates found for core:artifact:core:grail
No templates found for core:artifact:core:catapult
No templates found for core:artifact:core:ballista
No templates found for core:artifact:core:ammoCart
No templates found for core:artifact:core:firstAidTent
No templates found for core:artifact:core:unusedArtifact1
No templates found for core:artifact:core:unusedArtifact2
No templates found for core:artifact:core:unusedArtifact3
        Handlers post-load finalization: 5 ms 
        All game content loaded in 211 ms
Initializing VCMI_Lib: 234 ms
ScreenHandler::recreateWindowAndScreenBuffers()
ScreenHandler::updateWindowState()
ScreenHandler::getPreferredDisplayIndex()
ScreenHandler::getPreferredWindowMode()
ScreenHandler::getPreferredWindowResolution()
ScreenHandler::getPreferredWindowMode()
ScreenHandler::initializeScreenBuffers()
ScreenHandler::getPreferredLogicalResolution()
ScreenHandler::getRenderResolution()
        renderResolution.x: 800, renderResolution.y: 28
        availableResolution.x: 800, availableResolution.y: 28
ScreenHandler::getSupportedScalingRange()
ScreenHandler::getRenderResolution()
        renderResolution.x: 800, renderResolution.y: 28
        availableResolution.x: 800, availableResolution.y: 28
        minimalScaling: 4.666667, maximalScaling: 4.666667
        minimalScaling: 4, maximalScaling: 4
        scaling: 4
        logicalResolution.x: 20000, logicalResolution.y: 700
logicalSize.x: 20000, logicalSize.y: 700
Unable to create screen texture
Texture dimensions are limited to 16384x16384

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants