more c++ bootstrap refactoring

This commit is contained in:
Eric 2022-09-12 11:39:17 -07:00
parent c73793c2e7
commit 3f53c70beb
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
29 changed files with 161 additions and 181 deletions

View File

@ -3995,50 +3995,50 @@
"assets/src/ba_data/python/ba/_generated/__init__.py": "https://files.ballistica.net/cache/ba1/ee/e8/cad05aa531c7faf7ff7b96db7f6e",
"assets/src/ba_data/python/ba/_generated/enums.py": "https://files.ballistica.net/cache/ba1/b2/e5/0ee0561e16257a32830645239f34",
"ballisticacore-windows/Generic/BallisticaCore.ico": "https://files.ballistica.net/cache/ba1/89/c0/e32c7d2a35dc9aef57cc73b0911a",
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/10/4a/ffe015cc2ebd47d50975be3eeb0e",
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/cb/d7/75c584de816b729e6c3a9f736c4e",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/12/19/5845a35b791d8c7fdc0961857d0a",
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/39/d8/2be8c0a549de0e65f31c5ad77152",
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/87/6b/680b1c0ac793a8cd136d92af70f6",
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/20/57/4c1bbeda1a616da1797b86c1bd61",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/1d/5d/ad1529c4eb1f55fdde0eb0c20490",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ee/be/588cc300939f4b3f696089297418",
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/22/b5/242086174808668e27b1959f4378",
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/0f/8a/ce4e2545160c97e46ac40c3cad5a",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/ef/9b/aceebec46e3bdbfb48c851fffd84",
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c6/2e/cb2d5cadd82a3dd5a218d9b00b1f",
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/cc/7d/8cfdc4cdaa0f746c38c95cc2846c",
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/8b/39/3ca21bc68eb05e8a0be3b9616de4",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/1c/be/c6a5f5fdb8bd179ff2ad3ebda239",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/72/f4/0d34c518ae2fee1c3c99c00aaf7f",
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/c5/ac/8a25d9a65fe146e1b461cff8d0b1",
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/7c/6d/5fe242ad6afc646aea1405f9d3db",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/41/51/9bbbc5007870d145b1ab4ca28c1e",
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/56/3a/1c798b5ac4f042af6221605a45c7",
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ec/2a/4d3ceb7b285b9a711cf7ca0ec0f7",
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d1/d9/66f7e4526e733ca085c2eb96877f",
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b8/56/ee30665ae62ca08660845c9730c0",
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e1/82/ce530098283734eb34d0a78682a8",
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/66/e1/6aa3c3de153a5a50a06e35fe9134",
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7f/e5/2acde40bf16c08d037bfce2b502c",
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b0/cb/300a523ef70690dc9b7b4fd91f21",
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/21/50/c4cfe81e571b40623ccd72fe77a6",
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/cb/6a/88729063e5f9857da695c4fe906d",
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/93/a7/6ba2b7509dbac96b43d5ebd51edb",
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/92/7c/78aa7dfb1f2aea8c984aa666cabc",
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c2/d0/65f8cc8676c3a31e6f02dcd79bf2",
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/39/39/84895810a54817053bbbc1c6851e",
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7c/21/578d14c74a46a3ddea3880964a73",
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b2/e3/b529b59785149007257c47ffddf4",
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/b4/d6/7c5d71b41ee7d6373cb037ccb3ac",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/75/a6/82f3f6dd8dcb6cda1906a5c3f88b",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/c8/3b/232c5613ebb145cf2831a44c4a22",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/e1/6e/5df594275e30b61b9506b04a2bb4",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/70/4e/8b2fc5255a57055b7d6b5a357c9a",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/60/11/16f18674b12113f43cbe39027d19",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/f9/3b/6cca025ed2ec433facf6ceb4b6ec",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/af/a6/93fd32df5427917bf89a2ca4328e",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/58/a0/25ca5194d30f2449e85fe4fab215",
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a1/66/39cac09bf6b06e56c530835eb181",
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/2b/cb/6dd8bdf3a077d3aa761f9b8fbd63",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/b5/e9/5c0a89d56a6e483229da89281796",
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/fe/f9/c33d7708c6186bfd96d5e47955a3",
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/73/5b/93a06dabd24015bb45150bf9b504",
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/cb/e0/a0da487b59ded7b3906f14bfa720",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d2/fe/bace2357c3c17373a474bb4c2550",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/bb/1c/8f71bc4449cd828817e7eb5e685e",
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/59/c0/562d9fdf5769951cd04f4389f0b8",
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/0a/7d/8a7148a088f5b2c7c1fa770368a9",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d8/d3/b107c0c0564b59544af598ebb975",
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c2/10/e29b058f51d202b47315a78e9426",
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/1a/25/fd41d552ce3c4d3b6097ddf38575",
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/68/35/afcdb16cb02aee02aefecda09c18",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/89/a6/ed6fb097d9f5b7bf213750399b09",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c6/e0/ac51274e398c2d4c9ca96918ff24",
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/83/46/3a7a9981de261f0ade01976d5ff7",
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/a4/a9/0cfdc1a7499515d9ae1742a1556d",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/cd/9b/2b5530a52e1da3912f2b89f2de83",
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/24/32/c583f30ff2e5f77c02e1716033b8",
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/26/1d/c05986ea5543313a3d9ad8f87551",
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a9/30/62c8fa6369762561e87708d625ae",
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/32/e2/27313549815bc9201818b4db6c10",
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/48/67/bac46275cec3dbdbee7d4c698406",
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/13/37/b2a85900f3d5f518cc7e67151282",
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7e/4f/2bc692ccdcb53a278ad9b06ddbf1",
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/38/12/6e9a96f48a7af39f526dcd41ebce",
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/8f/f3/deee23add01a2c2d8bb4b6197366",
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/83/4d/8bdc0827cf90d2cd09e56a1846ed",
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4a/55/b93f1eae564c146ca60f1a23b915",
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e7/fc/58cd588c4aecd56e1ef2bba7b11d",
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/21/83/f5bcb13224fec91b6139b7ae83ed",
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/69/1a/eb5f3c85fc8f8194cc96b19714b3",
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/27/75/a18262f80729191921e12da1b2dc",
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4e/a5/7144c121faf50b2e6cf1db40e281",
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/29/08/889f9f0cbd89b692cbcdc0dad96c",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/96/8e/6da028cf907b53fa621cf0275352",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/c3/81/6591a6f11570c598e5dee0d58586",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/ee/f9/e0c13708771197ee7f41db988d19",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/a2/66/c5433ea1cbd812a532d23895379d",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/c9/21/154dae08aceb0c162c1ba9580ceb",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/74/c9/fd45708e613a27dcf3782b3d9dfe",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/e1/8e/f5a16f655ae1f2b075e80fb3a981",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/02/73/2dd954ea8a85a542ce900047ab6c",
"src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/7d/3e/229a581cb2454ed856f1d8b564a7",
"src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/98/12/571b2160d69d42580e8f31fa6a8d"
}

View File

@ -1,4 +1,4 @@
### 1.7.7 (build 20823, api 7, 2022-09-12)
### 1.7.7 (build 20825, api 7, 2022-09-12)
- Added `ba.app.meta.load_exported_classes()` for loading classes discovered by the meta subsystem cleanly in a background thread.
- Improved logging of missing playlist game types.
- Some ba.Lstr functionality can now be used in background threads.

View File

@ -38,7 +38,7 @@ def bootstrap() -> None:
# Give a soft warning if we're being used with a different binary
# version than we expect.
expected_build = 20823
expected_build = 20825
running_build: int = env['build_number']
if running_build != expected_build:
print(

View File

@ -484,8 +484,6 @@ add_executable(ballisticacore
${BA_SRC_ROOT}/ballistica/input/input.h
${BA_SRC_ROOT}/ballistica/input/remote_app.cc
${BA_SRC_ROOT}/ballistica/input/remote_app.h
${BA_SRC_ROOT}/ballistica/input/std_input_module.cc
${BA_SRC_ROOT}/ballistica/input/std_input_module.h
${BA_SRC_ROOT}/ballistica/internal/app_internal.h
${BA_SRC_ROOT}/ballistica/math/matrix44f.cc
${BA_SRC_ROOT}/ballistica/math/matrix44f.h
@ -516,6 +514,8 @@ add_executable(ballisticacore
${BA_SRC_ROOT}/ballistica/platform/platform.h
${BA_SRC_ROOT}/ballistica/platform/sdl/sdl_app.cc
${BA_SRC_ROOT}/ballistica/platform/sdl/sdl_app.h
${BA_SRC_ROOT}/ballistica/platform/stdio_console.cc
${BA_SRC_ROOT}/ballistica/platform/stdio_console.h
${BA_SRC_ROOT}/ballistica/platform/windows/platform_windows.cc
${BA_SRC_ROOT}/ballistica/platform/windows/platform_windows.h
${BA_SRC_ROOT}/ballistica/python/class/python_class.cc

View File

@ -475,8 +475,6 @@
<ClInclude Include="..\..\src\ballistica\input\input.h" />
<ClCompile Include="..\..\src\ballistica\input\remote_app.cc" />
<ClInclude Include="..\..\src\ballistica\input\remote_app.h" />
<ClCompile Include="..\..\src\ballistica\input\std_input_module.cc" />
<ClInclude Include="..\..\src\ballistica\input\std_input_module.h" />
<ClInclude Include="..\..\src\ballistica\internal\app_internal.h" />
<ClCompile Include="..\..\src\ballistica\math\matrix44f.cc" />
<ClInclude Include="..\..\src\ballistica\math\matrix44f.h" />
@ -507,6 +505,8 @@
<ClInclude Include="..\..\src\ballistica\platform\platform.h" />
<ClCompile Include="..\..\src\ballistica\platform\sdl\sdl_app.cc" />
<ClInclude Include="..\..\src\ballistica\platform\sdl\sdl_app.h" />
<ClCompile Include="..\..\src\ballistica\platform\stdio_console.cc" />
<ClInclude Include="..\..\src\ballistica\platform\stdio_console.h" />
<ClCompile Include="..\..\src\ballistica\platform\windows\platform_windows.cc" />
<ClInclude Include="..\..\src\ballistica\platform\windows\platform_windows.h" />
<ClCompile Include="..\..\src\ballistica\python\class\python_class.cc" />

View File

@ -859,12 +859,6 @@
<ClInclude Include="..\..\src\ballistica\input\remote_app.h">
<Filter>ballistica\input</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ballistica\input\std_input_module.cc">
<Filter>ballistica\input</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ballistica\input\std_input_module.h">
<Filter>ballistica\input</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ballistica\internal\app_internal.h">
<Filter>ballistica\internal</Filter>
</ClInclude>
@ -955,6 +949,12 @@
<ClInclude Include="..\..\src\ballistica\platform\sdl\sdl_app.h">
<Filter>ballistica\platform\sdl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ballistica\platform\stdio_console.cc">
<Filter>ballistica\platform</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ballistica\platform\stdio_console.h">
<Filter>ballistica\platform</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ballistica\platform\windows\platform_windows.cc">
<Filter>ballistica\platform\windows</Filter>
</ClCompile>

View File

@ -470,8 +470,6 @@
<ClInclude Include="..\..\src\ballistica\input\input.h" />
<ClCompile Include="..\..\src\ballistica\input\remote_app.cc" />
<ClInclude Include="..\..\src\ballistica\input\remote_app.h" />
<ClCompile Include="..\..\src\ballistica\input\std_input_module.cc" />
<ClInclude Include="..\..\src\ballistica\input\std_input_module.h" />
<ClInclude Include="..\..\src\ballistica\internal\app_internal.h" />
<ClCompile Include="..\..\src\ballistica\math\matrix44f.cc" />
<ClInclude Include="..\..\src\ballistica\math\matrix44f.h" />
@ -502,6 +500,8 @@
<ClInclude Include="..\..\src\ballistica\platform\platform.h" />
<ClCompile Include="..\..\src\ballistica\platform\sdl\sdl_app.cc" />
<ClInclude Include="..\..\src\ballistica\platform\sdl\sdl_app.h" />
<ClCompile Include="..\..\src\ballistica\platform\stdio_console.cc" />
<ClInclude Include="..\..\src\ballistica\platform\stdio_console.h" />
<ClCompile Include="..\..\src\ballistica\platform\windows\platform_windows.cc" />
<ClInclude Include="..\..\src\ballistica\platform\windows\platform_windows.h" />
<ClCompile Include="..\..\src\ballistica\python\class\python_class.cc" />

View File

@ -859,12 +859,6 @@
<ClInclude Include="..\..\src\ballistica\input\remote_app.h">
<Filter>ballistica\input</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ballistica\input\std_input_module.cc">
<Filter>ballistica\input</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ballistica\input\std_input_module.h">
<Filter>ballistica\input</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ballistica\internal\app_internal.h">
<Filter>ballistica\internal</Filter>
</ClInclude>
@ -955,6 +949,12 @@
<ClInclude Include="..\..\src\ballistica\platform\sdl\sdl_app.h">
<Filter>ballistica\platform\sdl</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ballistica\platform\stdio_console.cc">
<Filter>ballistica\platform</Filter>
</ClCompile>
<ClInclude Include="..\..\src\ballistica\platform\stdio_console.h">
<Filter>ballistica\platform</Filter>
</ClInclude>
<ClCompile Include="..\..\src\ballistica\platform\windows\platform_windows.cc">
<Filter>ballistica\platform\windows</Filter>
</ClCompile>

View File

@ -18,20 +18,30 @@ namespace ballistica {
AppFlavor::AppFlavor(Thread* thread)
: thread_(thread), stress_test_(std::make_unique<StressTest>()) {
// assert(g_app_flavor == nullptr);
// g_app_flavor = this;
// We modify some app behavior when run under the server manager.
auto* envval = getenv("BA_SERVER_WRAPPER_MANAGED");
server_wrapper_managed_ = (envval && strcmp(envval, "1") == 0);
}
void AppFlavor::PostInit() {
// If we've got a nice themed hardware cursor, show it.
// Otherwise, hide the hardware cursor; we'll draw it in software.
// (need to run this in postinit because SDL/etc. may not be inited yet
// as of AppFlavor::AppFlavor()).
g_platform->SetHardwareCursorVisible(g_buildconfig.hardware_cursor());
// Sanity check: make sure asserts are stripped out of release builds
// (NDEBUG should do this).
#if !BA_DEBUG_BUILD
#ifndef NDEBUG
#error Expected NDEBUG to be defined for release builds.
#endif // NDEBUG
assert(true);
#endif // !BA_DEBUG_BUILD
g_app->user_agent_string = g_platform->GetUserAgentString();
// Figure out where our data is and chdir there.
g_platform->SetupDataDirectory();
// Run these just to make sure these dirs exist.
// (otherwise they might not get made if nothing writes to them).
g_platform->GetConfigDirectory();
g_platform->GetUserPythonDirectory();
}
auto AppFlavor::ManagesEventLoop() const -> bool {
@ -357,10 +367,28 @@ void AppFlavor::PushResetAchievementsCall() {
thread()->PushCall([] { g_platform->ResetAchievements(); });
}
void AppFlavor::OnBootstrapComplete() {
void AppFlavor::OnAppStart() {
assert(InMainThread());
assert(g_input);
// If we're running in a terminal, print some info.
if (g_platform->is_stdin_a_terminal()) {
if (g_buildconfig.headless_build()) {
printf("BallisticaCore Headless %s build %d.\n", kAppVersion,
kAppBuildNumber);
fflush(stdout);
} else {
printf("BallisticaCore %s build %d.\n", kAppVersion, kAppBuildNumber);
fflush(stdout);
}
}
// If we've got a nice themed hardware cursor, show it.
// Otherwise, hide the hardware cursor; we'll draw it in software.
// (need to run this in postinit because SDL/etc. may not be inited yet
// as of AppFlavor::AppFlavor()).
g_platform->SetHardwareCursorVisible(g_buildconfig.hardware_cursor());
if (!HeadlessMode()) {
// On desktop systems we just assume keyboard input exists and add it
// immediately.

View File

@ -93,7 +93,7 @@ class AppFlavor {
return server_wrapper_managed_;
}
virtual auto OnBootstrapComplete() -> void;
virtual auto OnAppStart() -> void;
// Deferred calls that can be made from other threads.

View File

@ -12,11 +12,7 @@
namespace ballistica {
AssetsServer::AssetsServer()
: writing_replay_(false),
replay_message_bytes_(0),
replays_broken_(false),
replay_out_file_(nullptr) {
AssetsServer::AssetsServer() {
// We're a singleton; make sure we don't already exist.
assert(g_assets_server == nullptr);
@ -25,7 +21,7 @@ AssetsServer::AssetsServer()
g_app->pausable_threads.push_back(thread_);
}
auto AssetsServer::Start() -> void {
auto AssetsServer::OnAppStart() -> void {
thread_->PushCallSynchronous([this] { StartInThread(); });
}

View File

@ -13,7 +13,7 @@ namespace ballistica {
class AssetsServer {
public:
AssetsServer();
auto Start() -> void;
auto OnAppStart() -> void;
auto PushBeginWriteReplayCall() -> void;
auto PushEndWriteReplayCall() -> void;
auto PushAddMessageToReplayCall(const std::vector<uint8_t>& data) -> void;

View File

@ -330,7 +330,7 @@ AudioServer::AudioServer() : impl_{new AudioServer::Impl()} {
g_app->pausable_threads.push_back(thread_);
}
auto AudioServer::Start() -> void {
auto AudioServer::OnAppStart() -> void {
thread_->PushCallSynchronous([this] { StartInThread(); });
}

View File

@ -23,7 +23,7 @@ class AudioServer {
}
AudioServer();
auto Start() -> void;
auto OnAppStart() -> void;
auto PushSetVolumesCall(float music_volume, float sound_volume) -> void;
auto PushSetSoundPitchCall(float val) -> void;

View File

@ -24,6 +24,7 @@
#include "ballistica/networking/network_writer.h"
#include "ballistica/networking/networking.h"
#include "ballistica/platform/platform.h"
#include "ballistica/platform/stdio_console.h"
#include "ballistica/python/python.h"
#include "ballistica/scene/scene.h"
#include "ballistica/ui/ui.h"
@ -31,7 +32,7 @@
namespace ballistica {
// These are set automatically via script; don't modify them here.
const int kAppBuildNumber = 20823;
const int kAppBuildNumber = 20825;
const char* kAppVersion = "1.7.7";
// Our standalone globals.
@ -61,7 +62,7 @@ NetworkReader* g_network_reader{};
NetworkWriter* g_network_writer{};
Platform* g_platform{};
Python* g_python{};
StdInputModule* g_std_input_module{};
StdioConsole* g_stdio_console{};
TextGraphics* g_text_graphics{};
UI* g_ui{};
Utils* g_utils{};
@ -70,9 +71,9 @@ Utils* g_utils{};
// 1: All threads and globals are created and provisioned. Everything above
// should exist at the end of this step (if it is going to exist).
// Threads should not be talking to each other yet at this point.
// 2: The system is set in motion. Game thread is told to load/apply the config.
// This event kicks off an initial-screen-creation message sent to the
// graphics-server thread. Other systems are informed that bootstrapping
// 2: The system is set in motion. The logic thread is told to load/apply the
// config. This event kicks off an initial-screen-creation message sent to
// the graphics-server thread. Other systems are informed that bootstrapping
// is complete and that they are free to talk to each other. Initial
// input-devices are added, asset loads can begin (at least ones not
// dependent on the screen/renderer), etc.
@ -97,8 +98,8 @@ auto BallisticaMain(int argc, char** argv) -> int {
// -------------------------------------------------------------------------
// Absolute bare-bones basics.
g_app = new App(argc, argv);
g_platform = Platform::Create();
g_app = new App(argc, argv);
// Create a Thread wrapper around the current (main) thread.
g_main_thread = new Thread(ThreadIdentifier::kMain, ThreadType::kMain);
@ -134,13 +135,9 @@ auto BallisticaMain(int argc, char** argv) -> int {
g_bg_dynamics = new BGDynamics();
g_bg_dynamics_server = new BGDynamicsServer();
}
// FIXME - move this later but need to init Python earlier then.
g_game->Start();
// NOTE TO SELF: this starts reading stdin and py-init hangs if we do
// it after here.
g_platform->CreateAuxiliaryModules();
if (g_buildconfig.enable_stdio_console()) {
g_stdio_console = new StdioConsole();
}
// Ok at this point we can be considered up-and-running.
g_app->is_bootstrapped = true;
@ -149,14 +146,14 @@ auto BallisticaMain(int argc, char** argv) -> int {
// Phase 2: Set things in motion.
// -------------------------------------------------------------------------
g_audio_server->Start();
g_assets_server->Start();
// Let the app and platform do whatever else it wants here such as adding
// initial input devices/etc.
g_app_flavor->OnBootstrapComplete();
g_platform->OnBootstrapComplete();
g_game->OnAppStart();
g_audio_server->OnAppStart();
g_assets_server->OnAppStart();
g_platform->OnAppStart();
g_app_flavor->OnAppStart();
if (g_stdio_console) {
g_stdio_console->OnAppStart();
}
// Ok; now that we're bootstrapped, tell the game thread to read and apply
// the config which should kick off the real action.
g_game->PushApplyConfigCall();

View File

@ -125,7 +125,7 @@ extern NetworkReader* g_network_reader;
extern NetworkWriter* g_network_writer;
extern Platform* g_platform;
extern Python* g_python;
extern StdInputModule* g_std_input_module;
extern StdioConsole* g_stdio_console;
extern TextGraphics* g_text_graphics;
extern UI* g_ui;
extern Utils* g_utils;

View File

@ -62,7 +62,7 @@
#define BA_ENABLE_EXECINFO_BACKTRACES 1
// Allow stdin commands too.
#define BA_USE_STDIN_THREAD 1
#define BA_ENABLE_STDIO_CONSOLE 1
#define BA_DEFINE_MAIN 1

View File

@ -122,8 +122,8 @@ namespace ballistica {
#error platform string undefined
#endif
#ifndef BA_USE_STDIN_THREAD
#define BA_USE_STDIN_THREAD 0
#ifndef BA_ENABLE_STDIO_CONSOLE
#define BA_ENABLE_STDIO_CONSOLE 0
#endif
#ifndef BA_HARDWARE_CURSOR
@ -240,7 +240,9 @@ class BuildConfig {
bool use_store_kit() const { return EXPBOOL_(BA_USE_STORE_KIT); }
bool use_game_center() const { return EXPBOOL_(BA_USE_GAME_CENTER); }
bool use_stdin_thread() const { return EXPBOOL_(BA_USE_STDIN_THREAD); }
bool enable_stdio_console() const {
return EXPBOOL_(BA_ENABLE_STDIO_CONSOLE);
}
bool enable_os_font_rendering() const {
return EXPBOOL_(BA_ENABLE_OS_FONT_RENDERING);
}

View File

@ -5,7 +5,7 @@
// note: define overrides BEFORE common makefile
#define BA_USE_STDIN_THREAD 1
#define BA_ENABLE_STDIO_CONSOLE 1
#define BA_SDL_BUILD 1
#define BA_SDL2_BUILD 1

View File

@ -6,7 +6,7 @@
// note: define overrides BEFORE common header
#define BA_HEADLESS_BUILD 1
#define BA_USE_STDIN_THREAD 1
#define BA_ENABLE_STDIO_CONSOLE 1
#define BA_MINSDL_BUILD 1

View File

@ -173,7 +173,7 @@ class SoundData;
class SpriteMesh;
class StackWidget;
class StressTest;
class StdInputModule;
class StdioConsole;
class Module;
class TelnetServer;
class TestInput;

View File

@ -82,7 +82,7 @@ Game::Game()
// bits of C++ logic.
thread_->SetAcquiresPythonGIL();
}
auto Game::Start() -> void {
auto Game::OnAppStart() -> void {
thread_->PushCallSynchronous([this] { StartInThread(); });
}

View File

@ -25,7 +25,7 @@ const int kMaxPartyNameCombinedSize = 25;
class Game {
public:
Game();
auto Start() -> void;
auto OnAppStart() -> void;
auto LaunchHostSession(PyObject* session_type_obj,
BenchmarkType benchmark_type = BenchmarkType::kNone)

View File

@ -30,9 +30,9 @@
#include "ballistica/graphics/mesh/sprite_mesh.h"
#include "ballistica/graphics/vr_graphics.h"
#include "ballistica/input/input.h"
#include "ballistica/input/std_input_module.h"
#include "ballistica/networking/networking_sys.h"
#include "ballistica/platform/sdl/sdl_app.h"
#include "ballistica/platform/stdio_console.h"
#include "ballistica/python/python.h"
#if BA_HEADLESS_BUILD
@ -120,7 +120,7 @@ auto Platform::PostInit() -> void {
ran_base_post_init_ = true;
// Are we running in a terminal?
if (g_buildconfig.use_stdin_thread()) {
if (g_buildconfig.enable_stdio_console()) {
is_stdin_a_terminal_ = GetIsStdinATerminal();
} else {
is_stdin_a_terminal_ = false;
@ -531,40 +531,6 @@ void Platform::SleepMS(millisecs_t ms) {
std::this_thread::sleep_for(std::chrono::milliseconds(ms));
}
// General one-time initialization stuff
static void Init() {
// Sanity check: make sure asserts are stripped out of release builds
// (NDEBUG should do this).
#if !BA_DEBUG_BUILD
#ifndef NDEBUG
#error Expected NDEBUG to be defined for release builds.
#endif // NDEBUG
assert(true);
#endif // !BA_DEBUG_BUILD
// If we're running in a terminal, print some info.
if (g_platform->is_stdin_a_terminal()) {
if (g_buildconfig.headless_build()) {
printf("BallisticaCore Headless %s build %d.\n", kAppVersion,
kAppBuildNumber);
fflush(stdout);
} else {
printf("BallisticaCore %s build %d.\n", kAppVersion, kAppBuildNumber);
fflush(stdout);
}
}
g_app->user_agent_string = g_platform->GetUserAgentString();
// Figure out where our data is and chdir there.
g_platform->SetupDataDirectory();
// Run these just to make sure these dirs exist.
// (otherwise they might not get made if nothing writes to them).
g_platform->GetConfigDirectory();
g_platform->GetUserPythonDirectory();
}
#pragma clang diagnostic push
#pragma ide diagnostic ignored "NullDereferences"
@ -649,7 +615,6 @@ auto Platform::CreateAppFlavor() -> AppFlavor* {
// Hmm do these belong here?...
HandleArgs(g_app->argc, g_app->argv);
Init();
// TEMP - need to init sdl on our legacy mac build even though its not
// technically an SDL app. Kill this once the old mac build is gone.
@ -700,18 +665,6 @@ auto Platform::GetKeyName(int keycode) -> std::string {
#endif
}
void Platform::CreateAuxiliaryModules() {
if (g_buildconfig.use_stdin_thread()) {
// Start listening for stdin commands (on platforms where that makes sense).
// Note: this thread blocks indefinitely for input so we don't add it to the
// pausable list.
auto* std_input_thread = new Thread(ThreadIdentifier::kStdin);
std_input_thread->PushCallSynchronous(
[std_input_thread] { new StdInputModule(std_input_thread); });
g_std_input_module->PushBeginReadCall();
}
}
void Platform::WillExitMain(bool errored) {}
auto Platform::GetUIScale() -> UIScale {
@ -885,7 +838,7 @@ auto Platform::CreateTextTexture(int width, int height,
auto Platform::GetTextTextureData(void* tex) -> uint8_t* { throw Exception(); }
void Platform::OnBootstrapComplete() {}
void Platform::OnAppStart() {}
auto Platform::ConvertIncomingLeaderboardScore(
const std::string& leaderboard_id, int score) -> int {

View File

@ -54,12 +54,11 @@ class Platform {
/// Create the appropriate Graphics subclass for the app.
auto CreateGraphics() -> Graphics*;
virtual auto CreateAuxiliaryModules() -> void;
virtual auto WillExitMain(bool errored) -> void;
/// Inform the platform that all subsystems are up and running and it can
/// start talking to them.
virtual auto OnBootstrapComplete() -> void;
virtual auto OnAppStart() -> void;
// Get/set values before standard game settings are available
// (for values needed before SDL init/etc).

View File

@ -488,8 +488,8 @@ void SDLApp::SetAutoVSync(bool enable) {
}
}
void SDLApp::OnBootstrapComplete() {
AppFlavor::OnBootstrapComplete();
void SDLApp::OnAppStart() {
AppFlavor::OnAppStart();
if (!HeadlessMode() && g_buildconfig.enable_sdl_joysticks()) {
// Add initial sdl joysticks. any added/removed after this will be handled

View File

@ -22,7 +22,7 @@ class SDLApp : public AppFlavor {
auto SetAutoVSync(bool enable) -> void;
static auto SDLJoystickConnected(int index) -> void;
static auto SDLJoystickDisconnected(int index) -> void;
auto OnBootstrapComplete() -> void override;
auto OnAppStart() -> void override;
/// Return g_app_flavor as a SDLApp. (assumes it actually is one).
static SDLApp* get() {

View File

@ -1,6 +1,6 @@
// Released under the MIT License. See LICENSE for details.
#include "ballistica/input/std_input_module.h"
#include "ballistica/platform/stdio_console.h"
#if BA_OSTYPE_LINUX
#include <cstring>
@ -13,12 +13,17 @@
namespace ballistica {
StdInputModule::StdInputModule(Thread* thread) : thread_(thread) {
assert(g_std_input_module == nullptr);
g_std_input_module = this;
StdioConsole::StdioConsole() {
// We're a singleton; make sure we don't already exist.
assert(g_stdio_console == nullptr);
// Spin up our thread.
thread_ = new Thread(ThreadIdentifier::kAssets);
g_app->pausable_threads.push_back(thread_);
}
void StdInputModule::PushBeginReadCall() {
auto StdioConsole::OnAppStart() -> void {
// Tell our thread to start reading.
thread()->PushCall([this] {
bool stdin_is_terminal = g_platform->is_stdin_a_terminal();
@ -72,7 +77,7 @@ void StdInputModule::PushBeginReadCall() {
}
}
} else {
Log("StdInputModule got non-eof error reading stdin: "
Log("StdioConsole got non-eof error reading stdin: "
+ std::to_string(ferror(stdin)));
}
break;

View File

@ -1,16 +1,16 @@
// Released under the MIT License. See LICENSE for details.
#ifndef BALLISTICA_INPUT_STD_INPUT_MODULE_H_
#define BALLISTICA_INPUT_STD_INPUT_MODULE_H_
#ifndef BALLISTICA_PLATFORM_STDIO_CONSOLE_H_
#define BALLISTICA_PLATFORM_STDIO_CONSOLE_H_
#include "ballistica/ballistica.h"
namespace ballistica {
class StdInputModule {
class StdioConsole {
public:
explicit StdInputModule(Thread* thread);
void PushBeginReadCall();
StdioConsole();
void OnAppStart();
auto thread() const -> Thread* { return thread_; }
private:
@ -20,4 +20,4 @@ class StdInputModule {
} // namespace ballistica
#endif // BALLISTICA_INPUT_STD_INPUT_MODULE_H_
#endif // BALLISTICA_PLATFORM_STDIO_CONSOLE_H_