mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-06 15:47:06 +08:00
implemented language autoselect for new apple builds
This commit is contained in:
parent
113be18416
commit
586db8bd5e
94
.efrocachemap
generated
94
.efrocachemap
generated
@ -424,7 +424,7 @@
|
|||||||
"build/assets/ba_data/data/langdata.json": "0b15d171ebcc56d324875b48436b58c2",
|
"build/assets/ba_data/data/langdata.json": "0b15d171ebcc56d324875b48436b58c2",
|
||||||
"build/assets/ba_data/data/languages/arabic.json": "c21378ee214a9dd0cb2971cd46b74374",
|
"build/assets/ba_data/data/languages/arabic.json": "c21378ee214a9dd0cb2971cd46b74374",
|
||||||
"build/assets/ba_data/data/languages/belarussian.json": "4d89ed5f9c615771d4fa2bb1834942d3",
|
"build/assets/ba_data/data/languages/belarussian.json": "4d89ed5f9c615771d4fa2bb1834942d3",
|
||||||
"build/assets/ba_data/data/languages/chinese.json": "0a9d9534e7329d1e886adae6fdc007c4",
|
"build/assets/ba_data/data/languages/chinese.json": "1ff4350df6d81c3b1b765fddace6b4c8",
|
||||||
"build/assets/ba_data/data/languages/chinesetraditional.json": "f858da49be0a5374157c627857751078",
|
"build/assets/ba_data/data/languages/chinesetraditional.json": "f858da49be0a5374157c627857751078",
|
||||||
"build/assets/ba_data/data/languages/croatian.json": "766532c67af5bd0144c2d63cab0516fa",
|
"build/assets/ba_data/data/languages/croatian.json": "766532c67af5bd0144c2d63cab0516fa",
|
||||||
"build/assets/ba_data/data/languages/czech.json": "93c5fe0d884d95435da6c675f64e30e0",
|
"build/assets/ba_data/data/languages/czech.json": "93c5fe0d884d95435da6c675f64e30e0",
|
||||||
@ -439,12 +439,12 @@
|
|||||||
"build/assets/ba_data/data/languages/greek.json": "287c0ec437b38772284ef9d3e4fb2fc3",
|
"build/assets/ba_data/data/languages/greek.json": "287c0ec437b38772284ef9d3e4fb2fc3",
|
||||||
"build/assets/ba_data/data/languages/hindi.json": "8ea0c58a44a24edb131d0e53b074d1f6",
|
"build/assets/ba_data/data/languages/hindi.json": "8ea0c58a44a24edb131d0e53b074d1f6",
|
||||||
"build/assets/ba_data/data/languages/hungarian.json": "796a290a8c44a1e7635208c2ff5fdc6e",
|
"build/assets/ba_data/data/languages/hungarian.json": "796a290a8c44a1e7635208c2ff5fdc6e",
|
||||||
"build/assets/ba_data/data/languages/indonesian.json": "d7f1cafecad05e0dcd34345e0088c4de",
|
"build/assets/ba_data/data/languages/indonesian.json": "15a50690e5588d4acd3e07dfdaf755b0",
|
||||||
"build/assets/ba_data/data/languages/italian.json": "e4acd4e58ef8db78f3369bf881f84c55",
|
"build/assets/ba_data/data/languages/italian.json": "e4acd4e58ef8db78f3369bf881f84c55",
|
||||||
"build/assets/ba_data/data/languages/korean.json": "ca1122a9ee551da3f75ae632012bd0e2",
|
"build/assets/ba_data/data/languages/korean.json": "ca1122a9ee551da3f75ae632012bd0e2",
|
||||||
"build/assets/ba_data/data/languages/malay.json": "832562ce997fc70704b9234c95fb2e38",
|
"build/assets/ba_data/data/languages/malay.json": "832562ce997fc70704b9234c95fb2e38",
|
||||||
"build/assets/ba_data/data/languages/persian.json": "4585070bd509600019ec8dc3bb47bfb8",
|
"build/assets/ba_data/data/languages/persian.json": "4585070bd509600019ec8dc3bb47bfb8",
|
||||||
"build/assets/ba_data/data/languages/polish.json": "6677925c370390f1f53bcb737cb00fa8",
|
"build/assets/ba_data/data/languages/polish.json": "5e25428554893155a5f81f3eeb418bae",
|
||||||
"build/assets/ba_data/data/languages/portuguese.json": "51e362956f89da3eec980f587c092253",
|
"build/assets/ba_data/data/languages/portuguese.json": "51e362956f89da3eec980f587c092253",
|
||||||
"build/assets/ba_data/data/languages/romanian.json": "aeebdd54f65939c2facc6ac50c117826",
|
"build/assets/ba_data/data/languages/romanian.json": "aeebdd54f65939c2facc6ac50c117826",
|
||||||
"build/assets/ba_data/data/languages/russian.json": "6e524210149d95479d6cbfd3506c630b",
|
"build/assets/ba_data/data/languages/russian.json": "6e524210149d95479d6cbfd3506c630b",
|
||||||
@ -4056,50 +4056,50 @@
|
|||||||
"build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1",
|
"build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1",
|
||||||
"build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae",
|
"build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae",
|
||||||
"build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599",
|
"build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599",
|
||||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "ad6316e04f09de546d25171512f783b2",
|
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "437a7184a3f56da917ec92e0f1d08392",
|
||||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "19495e4313121d5574ab69efcbbcedd7",
|
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "c990f7765be45e603eaa1040a11d20f2",
|
||||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "d8f215de52d492ce1790d9e1714b4cec",
|
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "b891b240768e0c1961d82a05357f36fb",
|
||||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "b057d6d9627c7400496080c48dd344cd",
|
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "7778d9df2d0c4e07d2ea46b3c6b8ca1f",
|
||||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "1bd60c4476b7471364be2534d3cb8185",
|
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "eac8b98c72cd8edbf1ed97237052ac05",
|
||||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "011bceb35c7f53b98f2ab79798409679",
|
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "6ee06879d656a68802dc42c483ea5a2b",
|
||||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "0055dfac758acdeb5a39e436da5d71be",
|
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "58b8437cc04dbc63587e8c379bcdb316",
|
||||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "2daa69d1df9927e6fc17b0aabd5c62f6",
|
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "40422d250bc84faf876642f8c6181132",
|
||||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "2159ce4b648b1172e3d2f349e61f2b1b",
|
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "0c5d44d847c3df3178e5b890c234bccd",
|
||||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "26163f755e45586da35c1ed6499c0416",
|
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "8e58ab0f0faa58b6bdc8130062171a1d",
|
||||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "410c70d8d833458616a0056972e558c4",
|
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "18e33eab40af6efc10454206249b5b91",
|
||||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "6e4473952a022e30340b6decae9da58a",
|
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "0465c41b9364c56494768ac41766529b",
|
||||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "0c63291b5842dafcfae558ef3c36d35a",
|
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "2bb0a2f4402ee90e1c2e03f75dd6e090",
|
||||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "7195da4e4abae862f41c28764b35662b",
|
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "328d7b3a7ce3564dc7d1b4f315842291",
|
||||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "5a6ad8a9f0d5cd964661df32ac4efb47",
|
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "079097fc77e50024f6231de94c9e1fbc",
|
||||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "376059ea5f812ace7629ad29a8d77a9a",
|
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "9bb781a88ecddf84ca84cbdc14ee0a78",
|
||||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "7a0c87d9e673b28157845f71ff957df6",
|
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "17ca9956767731b2cce7c12ec15e37f4",
|
||||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "3603019e3dbf055c37f5fabbe9538c48",
|
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "c0c9a0e54434f54bad8cd057bacab4e2",
|
||||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "14f6e17cc5698341ed5607834107e608",
|
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "ab77f95bd46cae158aaccd53091c3bfb",
|
||||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "679703f9ec7c6f9c0708c9b13c9c6c06",
|
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "bd05a3124893ff649a48afc6ff9fdf20",
|
||||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "e4952c83427611c5a66a864d8bb3bc4f",
|
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "d9f919fe87d497529cd8aed24a961ea3",
|
||||||
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "55df380ad6f3b38094bc82f6bb2a34bb",
|
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "56972014971024060e6014c2027debd2",
|
||||||
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "e4952c83427611c5a66a864d8bb3bc4f",
|
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "d9f919fe87d497529cd8aed24a961ea3",
|
||||||
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "55df380ad6f3b38094bc82f6bb2a34bb",
|
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "56972014971024060e6014c2027debd2",
|
||||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "f37c917e8336be6afe86842fc0cd1586",
|
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "3b0da9dfd7b2efe967aaafd3e68d4a86",
|
||||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "aaf0413c15988e332d27b7fd6eb1ba1f",
|
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "d4889e0f44a762e4bf067af33e8885e1",
|
||||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "f37c917e8336be6afe86842fc0cd1586",
|
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "3b0da9dfd7b2efe967aaafd3e68d4a86",
|
||||||
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "aaf0413c15988e332d27b7fd6eb1ba1f",
|
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "d4889e0f44a762e4bf067af33e8885e1",
|
||||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "f66008360fc266ada358731656dfa91a",
|
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "5d6b77d2280ad8366f1386f7af0d8e6b",
|
||||||
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "712cd1dda7661826129b8023949ebebe",
|
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "0c8ab52403a77eb7a11137afb6946f8b",
|
||||||
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "f66008360fc266ada358731656dfa91a",
|
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "5d6b77d2280ad8366f1386f7af0d8e6b",
|
||||||
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "712cd1dda7661826129b8023949ebebe",
|
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "0c8ab52403a77eb7a11137afb6946f8b",
|
||||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "5488eb05a8c45904243ff5cb1fc483cd",
|
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "85ab9b2e82eb2ddca6e915b4a3c3589e",
|
||||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "55aef97c30ade6b21e93b7d8a45ae670",
|
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "39a0f3efabd9d2f62202ef9790e5cecd",
|
||||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "519d0d2895489e5905e65e53384b96ba",
|
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "2609429078b69b48c3cda49abac7065c",
|
||||||
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "55aef97c30ade6b21e93b7d8a45ae670",
|
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "39a0f3efabd9d2f62202ef9790e5cecd",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "c9e82195e722512599ec7edcb456c78d",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "7f3de02f9481408b02ebfd1253452b30",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "18b47849e222dd7b1bef9bd1a07473c9",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "a56a0aecab25961be71f364bd29eecaf",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "6c44557f5392bb3cd2d9a983add52d0b",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "cbc394d29f300aac67374c586f07e3dd",
|
||||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "0bd4099b6b594f62b806c9d74a84095a",
|
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "ceba6e421ed2ccd51114bfdd239881d9",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "a36752eee64f76c1868937247aaaee32",
|
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "eaa568b2aee0f4cd4e186cee7ac98a9a",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "9ac33f02579ee14e4ad6a0b6b5a82a36",
|
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "e13fdefc582d9c86a3b5f9cb4e5781f5",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "87bc0ff42442b60c817805ab07c65769",
|
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "1f1065b864ddd2e6b376835c09bf809b",
|
||||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "cedd1f2c367b84c20377c282453825f2",
|
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "9eab26a8053f011ab0247e67bf59ecf3",
|
||||||
"src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
|
"src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
|
||||||
"src/assets/ba_data/python/babase/_mgen/enums.py": "28323912b56ec07701eda3d41a6a4101",
|
"src/assets/ba_data/python/babase/_mgen/enums.py": "28323912b56ec07701eda3d41a6a4101",
|
||||||
"src/ballistica/base/mgen/pyembed/binding_base.inc": "6df0f34207346d89a72924249ddd4706",
|
"src/ballistica/base/mgen/pyembed/binding_base.inc": "6df0f34207346d89a72924249ddd4706",
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
### 1.7.28 (build 21543, api 8, 2023-10-31)
|
### 1.7.28 (build 21551, api 8, 2023-10-31)
|
||||||
|
|
||||||
- Massively cleaned up code related to rendering and window systems (OpenGL,
|
- Massively cleaned up code related to rendering and window systems (OpenGL,
|
||||||
SDL, etc). This code had been growing into a nasty tangle for 15 years
|
SDL, etc). This code had been growing into a nasty tangle for 15 years
|
||||||
|
|||||||
@ -274,6 +274,7 @@ ctx.filter_file_extensions = {
|
|||||||
'.frag',
|
'.frag',
|
||||||
'.vert',
|
'.vert',
|
||||||
'.xcsettings',
|
'.xcsettings',
|
||||||
|
'.xcstrings',
|
||||||
'.filters',
|
'.filters',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -64,7 +64,6 @@ from _babase import (
|
|||||||
is_running_on_fire_tv,
|
is_running_on_fire_tv,
|
||||||
is_xcode_build,
|
is_xcode_build,
|
||||||
lock_all_input,
|
lock_all_input,
|
||||||
mac_music_app_get_library_source,
|
|
||||||
mac_music_app_get_playlists,
|
mac_music_app_get_playlists,
|
||||||
mac_music_app_get_volume,
|
mac_music_app_get_volume,
|
||||||
mac_music_app_init,
|
mac_music_app_init,
|
||||||
@ -265,7 +264,6 @@ __all__ = [
|
|||||||
'lock_all_input',
|
'lock_all_input',
|
||||||
'LoginAdapter',
|
'LoginAdapter',
|
||||||
'Lstr',
|
'Lstr',
|
||||||
'mac_music_app_get_library_source',
|
|
||||||
'mac_music_app_get_playlists',
|
'mac_music_app_get_playlists',
|
||||||
'mac_music_app_get_volume',
|
'mac_music_app_get_volume',
|
||||||
'mac_music_app_init',
|
'mac_music_app_init',
|
||||||
|
|||||||
@ -80,14 +80,13 @@ class _MacMusicAppThread(threading.Thread):
|
|||||||
def run(self) -> None:
|
def run(self) -> None:
|
||||||
"""Run the Music.app thread."""
|
"""Run the Music.app thread."""
|
||||||
babase.set_thread_name('BA_MacMusicAppThread')
|
babase.set_thread_name('BA_MacMusicAppThread')
|
||||||
babase.mac_music_app_init()
|
|
||||||
|
|
||||||
# Let's mention to the user we're launching Music.app in case
|
# Let's mention to the user we're launching Music.app in case
|
||||||
# it causes any funny business (this used to background the app
|
# it causes any funny business (this used to background the app
|
||||||
# sometimes, though I think that is fixed now)
|
# sometimes, though I think that is fixed now)
|
||||||
def do_print() -> None:
|
def do_print() -> None:
|
||||||
babase.apptimer(
|
babase.apptimer(
|
||||||
1.0,
|
0.5,
|
||||||
babase.Call(
|
babase.Call(
|
||||||
babase.screenmessage,
|
babase.screenmessage,
|
||||||
babase.Lstr(resource='usingItunesText'),
|
babase.Lstr(resource='usingItunesText'),
|
||||||
@ -97,9 +96,8 @@ class _MacMusicAppThread(threading.Thread):
|
|||||||
|
|
||||||
babase.pushcall(do_print, from_other_thread=True)
|
babase.pushcall(do_print, from_other_thread=True)
|
||||||
|
|
||||||
# Here we grab this to force the actual launch.
|
babase.mac_music_app_init()
|
||||||
babase.mac_music_app_get_volume()
|
|
||||||
babase.mac_music_app_get_library_source()
|
|
||||||
done = False
|
done = False
|
||||||
while not done:
|
while not done:
|
||||||
self._commands_available.wait()
|
self._commands_available.wait()
|
||||||
|
|||||||
@ -52,7 +52,7 @@ if TYPE_CHECKING:
|
|||||||
|
|
||||||
# Build number and version of the ballistica binary we expect to be
|
# Build number and version of the ballistica binary we expect to be
|
||||||
# using.
|
# using.
|
||||||
TARGET_BALLISTICA_BUILD = 21543
|
TARGET_BALLISTICA_BUILD = 21551
|
||||||
TARGET_BALLISTICA_VERSION = '1.7.28'
|
TARGET_BALLISTICA_VERSION = '1.7.28'
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -20,31 +20,8 @@ AppAdapter::~AppAdapter() = default;
|
|||||||
auto AppAdapter::ManagesMainThreadEventLoop() const -> bool { return true; }
|
auto AppAdapter::ManagesMainThreadEventLoop() const -> bool { return true; }
|
||||||
|
|
||||||
void AppAdapter::OnMainThreadStartApp() {
|
void AppAdapter::OnMainThreadStartApp() {
|
||||||
assert(g_base);
|
|
||||||
assert(g_core);
|
assert(g_core);
|
||||||
assert(g_core->InMainThread());
|
assert(g_core->InMainThread());
|
||||||
|
|
||||||
// Add some common input devices where applicable. More specific ones (SDL
|
|
||||||
// Joysticks, etc.) get added in subclasses.
|
|
||||||
|
|
||||||
// FIXME: This stuff should probably go elsewhere.
|
|
||||||
if (!g_core->HeadlessMode()) {
|
|
||||||
// If we've got a nice themed hardware cursor, show it. Otherwise we'll
|
|
||||||
// render it manually, which is laggier but gets the job done.
|
|
||||||
// g_base->platform->SetHardwareCursorVisible(g_buildconfig.hardware_cursor());
|
|
||||||
|
|
||||||
// On desktop systems we just assume keyboard input exists and add it
|
|
||||||
// immediately.
|
|
||||||
if (g_core->platform->IsRunningOnDesktop()) {
|
|
||||||
g_base->input->PushCreateKeyboardInputDevices();
|
|
||||||
}
|
|
||||||
|
|
||||||
// On non-tv, non-desktop, non-vr systems, create a touchscreen input.
|
|
||||||
if (!g_core->platform->IsRunningOnTV() && !g_core->IsVRMode()
|
|
||||||
&& !g_core->platform->IsRunningOnDesktop()) {
|
|
||||||
g_base->input->CreateTouchInput();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppAdapter::OnAppStart() { assert(g_base->InLogicThread()); }
|
void AppAdapter::OnAppStart() { assert(g_base->InLogicThread()); }
|
||||||
|
|||||||
@ -222,9 +222,6 @@ class AppAdapter {
|
|||||||
/// clipboard is unsupported or if there's no text on the clipboard.
|
/// clipboard is unsupported or if there's no text on the clipboard.
|
||||||
auto ClipboardGetText() -> std::string;
|
auto ClipboardGetText() -> std::string;
|
||||||
|
|
||||||
protected:
|
|
||||||
virtual ~AppAdapter();
|
|
||||||
|
|
||||||
/// Push a raw pointer Runnable to the platform's 'main' thread. The main
|
/// Push a raw pointer Runnable to the platform's 'main' thread. The main
|
||||||
/// thread should call its RunAndLogErrors() method and then delete it.
|
/// thread should call its RunAndLogErrors() method and then delete it.
|
||||||
virtual void DoPushMainThreadRunnable(Runnable* runnable) = 0;
|
virtual void DoPushMainThreadRunnable(Runnable* runnable) = 0;
|
||||||
@ -233,6 +230,9 @@ class AppAdapter {
|
|||||||
/// context. By default this is simply the main thread.
|
/// context. By default this is simply the main thread.
|
||||||
virtual void DoPushGraphicsContextRunnable(Runnable* runnable);
|
virtual void DoPushGraphicsContextRunnable(Runnable* runnable);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual ~AppAdapter();
|
||||||
|
|
||||||
virtual auto DoClipboardIsSupported() -> bool;
|
virtual auto DoClipboardIsSupported() -> bool;
|
||||||
virtual auto DoClipboardHasText() -> bool;
|
virtual auto DoClipboardHasText() -> bool;
|
||||||
virtual void DoClipboardSetText(const std::string& text);
|
virtual void DoClipboardSetText(const std::string& text);
|
||||||
|
|||||||
@ -51,6 +51,8 @@ AppAdapterSDL::AppAdapterSDL() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AppAdapterSDL::OnMainThreadStartApp() {
|
void AppAdapterSDL::OnMainThreadStartApp() {
|
||||||
|
AppAdapter::OnMainThreadStartApp();
|
||||||
|
|
||||||
// App is starting. Let's fire up the ol' SDL.
|
// App is starting. Let's fire up the ol' SDL.
|
||||||
uint32_t sdl_flags{SDL_INIT_VIDEO | SDL_INIT_JOYSTICK};
|
uint32_t sdl_flags{SDL_INIT_VIDEO | SDL_INIT_JOYSTICK};
|
||||||
|
|
||||||
@ -79,9 +81,8 @@ void AppAdapterSDL::OnMainThreadStartApp() {
|
|||||||
sdl_runnable_event_id_ = SDL_RegisterEvents(1);
|
sdl_runnable_event_id_ = SDL_RegisterEvents(1);
|
||||||
assert(sdl_runnable_event_id_ != (uint32_t)-1);
|
assert(sdl_runnable_event_id_ != (uint32_t)-1);
|
||||||
|
|
||||||
// Note: parent class can add some input devices so need to bring up sdl
|
// SDL builds just assume keyboard input is available.
|
||||||
// before we let it run. That code should maybe be relocated/refactored.
|
g_base->input->PushCreateKeyboardInputDevices();
|
||||||
AppAdapter::OnMainThreadStartApp();
|
|
||||||
|
|
||||||
if (g_buildconfig.enable_sdl_joysticks()) {
|
if (g_buildconfig.enable_sdl_joysticks()) {
|
||||||
// We want events from joysticks.
|
// We want events from joysticks.
|
||||||
|
|||||||
@ -722,4 +722,8 @@ void BaseFeatureSet::QuitApp(bool confirm, QuitType quit_type) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BaseFeatureSet::PushMainThreadRunnable(Runnable* runnable) {
|
||||||
|
app_adapter->DoPushMainThreadRunnable(runnable);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ballistica::base
|
} // namespace ballistica::base
|
||||||
|
|||||||
@ -723,6 +723,8 @@ class BaseFeatureSet : public FeatureSetNativeComponent,
|
|||||||
/// loading.
|
/// loading.
|
||||||
void OnAssetsAvailable();
|
void OnAssetsAvailable();
|
||||||
|
|
||||||
|
void PushMainThreadRunnable(Runnable* runnable) override;
|
||||||
|
|
||||||
// Const subsystems.
|
// Const subsystems.
|
||||||
AppAdapter* const app_adapter;
|
AppAdapter* const app_adapter;
|
||||||
AppConfig* const app_config;
|
AppConfig* const app_config;
|
||||||
|
|||||||
@ -144,12 +144,9 @@ auto Input::GetNewNumberedIdentifier_(const std::string& name,
|
|||||||
return full_id;
|
return full_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Input::CreateTouchInput() {
|
// void Input::CreateTouchInput() {
|
||||||
assert(g_core->InMainThread());
|
// assert(g_core->InMainThread());
|
||||||
assert(touch_input_ == nullptr);
|
// }
|
||||||
touch_input_ = Object::NewDeferred<TouchInput>();
|
|
||||||
PushAddInputDeviceCall(touch_input_, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Input::AnnounceConnects_() {
|
void Input::AnnounceConnects_() {
|
||||||
assert(g_base->InLogicThread());
|
assert(g_base->InLogicThread());
|
||||||
@ -559,7 +556,14 @@ void Input::UpdateEnabledControllerSubsystems_() {
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
void Input::OnAppStart() { assert(g_base->InLogicThread()); }
|
void Input::OnAppStart() {
|
||||||
|
assert(g_base->InLogicThread());
|
||||||
|
if (g_core->platform->HasTouchScreen()) {
|
||||||
|
assert(touch_input_ == nullptr);
|
||||||
|
touch_input_ = Object::NewDeferred<TouchInput>();
|
||||||
|
PushAddInputDeviceCall(touch_input_, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Input::OnAppPause() { assert(g_base->InLogicThread()); }
|
void Input::OnAppPause() { assert(g_base->InLogicThread()); }
|
||||||
|
|
||||||
|
|||||||
@ -116,7 +116,7 @@ class Input {
|
|||||||
auto HaveRemoteAppController() -> bool;
|
auto HaveRemoteAppController() -> bool;
|
||||||
auto keyboard_input() const -> KeyboardInput* { return keyboard_input_; }
|
auto keyboard_input() const -> KeyboardInput* { return keyboard_input_; }
|
||||||
auto keyboard_input_2() const -> KeyboardInput* { return keyboard_input_2_; }
|
auto keyboard_input_2() const -> KeyboardInput* { return keyboard_input_2_; }
|
||||||
void CreateTouchInput();
|
// void CreateTouchInput();
|
||||||
|
|
||||||
void PushTextInputEvent(const std::string& text);
|
void PushTextInputEvent(const std::string& text);
|
||||||
void PushKeyPressEventSimple(int keycode);
|
void PushKeyPressEventSimple(int keycode);
|
||||||
|
|||||||
@ -1088,25 +1088,6 @@ static PyMethodDef PyMacMusicAppSetVolumeDef = {
|
|||||||
"(internal)",
|
"(internal)",
|
||||||
};
|
};
|
||||||
|
|
||||||
// ------------------------ mac_music_app_get_library --------------------------
|
|
||||||
|
|
||||||
static auto PyMacMusicAppGetLibrarySource(PyObject* self, PyObject* args,
|
|
||||||
PyObject* keywds) -> PyObject* {
|
|
||||||
BA_PYTHON_TRY;
|
|
||||||
g_core->platform->MacMusicAppGetLibrarySource();
|
|
||||||
Py_RETURN_NONE;
|
|
||||||
BA_PYTHON_CATCH;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PyMethodDef PyMacMusicAppGetLibrarySourceDef = {
|
|
||||||
"mac_music_app_get_library_source", // name
|
|
||||||
(PyCFunction)PyMacMusicAppGetLibrarySource, // method
|
|
||||||
METH_VARARGS | METH_KEYWORDS, // flags
|
|
||||||
|
|
||||||
"mac_music_app_get_library_source() -> None\n"
|
|
||||||
"\n"
|
|
||||||
"(internal)"};
|
|
||||||
|
|
||||||
// --------------------------- mac_music_app_stop ------------------------------
|
// --------------------------- mac_music_app_stop ------------------------------
|
||||||
|
|
||||||
static auto PyMacMusicAppStop(PyObject* self, PyObject* args, PyObject* keywds)
|
static auto PyMacMusicAppStop(PyObject* self, PyObject* args, PyObject* keywds)
|
||||||
@ -1695,7 +1676,6 @@ auto PythonMethodsApp::GetMethods() -> std::vector<PyMethodDef> {
|
|||||||
PyMacMusicAppInitDef,
|
PyMacMusicAppInitDef,
|
||||||
PyMacMusicAppGetVolumeDef,
|
PyMacMusicAppGetVolumeDef,
|
||||||
PyMacMusicAppSetVolumeDef,
|
PyMacMusicAppSetVolumeDef,
|
||||||
PyMacMusicAppGetLibrarySourceDef,
|
|
||||||
PyMacMusicAppStopDef,
|
PyMacMusicAppStopDef,
|
||||||
PyMacMusicAppPlayPlaylistDef,
|
PyMacMusicAppPlayPlaylistDef,
|
||||||
PyMacMusicAppGetPlaylistsDef,
|
PyMacMusicAppGetPlaylistsDef,
|
||||||
|
|||||||
@ -1295,7 +1295,10 @@ void DevConsole::Draw(FrameDef* frame_def) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Carat.
|
// Carat.
|
||||||
if (!carat_mesh_.Exists()) {
|
if (!carat_mesh_.Exists() || carat_dirty_) {
|
||||||
|
// Note: we explicitly update here if carat is dirty because
|
||||||
|
// that updates last_carat_change_time_ which affects whether
|
||||||
|
// we draw or not. GetCaratX_() only updates it *if* we draw.
|
||||||
UpdateCarat_();
|
UpdateCarat_();
|
||||||
}
|
}
|
||||||
millisecs_t app_time = pass->frame_def()->app_time_millisecs();
|
millisecs_t app_time = pass->frame_def()->app_time_millisecs();
|
||||||
@ -1457,6 +1460,7 @@ auto DevConsole::PasteFromClipboard() -> bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DevConsole::UpdateCarat_() {
|
void DevConsole::UpdateCarat_() {
|
||||||
|
last_carat_x_change_time_ = g_core->GetAppTimeMillisecs();
|
||||||
auto unichars = Utils::UnicodeFromUTF8(input_string_, "fjfwef");
|
auto unichars = Utils::UnicodeFromUTF8(input_string_, "fjfwef");
|
||||||
auto unichars_clamped = unichars;
|
auto unichars_clamped = unichars;
|
||||||
|
|
||||||
@ -1508,7 +1512,6 @@ void DevConsole::UpdateCarat_() {
|
|||||||
|
|
||||||
auto DevConsole::GetCaratX_() -> float {
|
auto DevConsole::GetCaratX_() -> float {
|
||||||
if (carat_dirty_) {
|
if (carat_dirty_) {
|
||||||
last_carat_x_change_time_ = g_core->GetAppTimeMillisecs();
|
|
||||||
UpdateCarat_();
|
UpdateCarat_();
|
||||||
carat_dirty_ = false;
|
carat_dirty_ = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,6 @@
|
|||||||
#include <uuid/uuid.h>
|
#include <uuid/uuid.h>
|
||||||
|
|
||||||
#if BA_XCODE_BUILD
|
#if BA_XCODE_BUILD
|
||||||
#include "ballistica/base/platform/apple/apple_utils.h"
|
|
||||||
#include "ballistica/base/platform/apple/from_swift.h"
|
#include "ballistica/base/platform/apple/from_swift.h"
|
||||||
#include "ballistica/shared/math/rect.h"
|
#include "ballistica/shared/math/rect.h"
|
||||||
#endif
|
#endif
|
||||||
@ -358,14 +357,6 @@ void CorePlatformApple::MacMusicAppSetVolume(int volume) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// KILL THIS.
|
|
||||||
void CorePlatformApple::MacMusicAppGetLibrarySource() {
|
|
||||||
#if BA_OSTYPE_MACOS && BA_XCODE_BUILD
|
|
||||||
// base::AppleUtils::MacMusicAppGetLibrarySource();
|
|
||||||
#else
|
|
||||||
CorePlatform::MacMusicAppGetLibrarySource();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
void CorePlatformApple::MacMusicAppStop() {
|
void CorePlatformApple::MacMusicAppStop() {
|
||||||
#if BA_OSTYPE_MACOS && BA_XCODE_BUILD
|
#if BA_OSTYPE_MACOS && BA_XCODE_BUILD
|
||||||
return BallisticaKit::CocoaFromCpp::MacMusicAppStop();
|
return BallisticaKit::CocoaFromCpp::MacMusicAppStop();
|
||||||
@ -422,6 +413,17 @@ auto CorePlatformApple::GetSubplatformName() -> std::string {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto CorePlatformApple::GetLocale() -> std::string {
|
||||||
|
#if BA_XCODE_BUILD
|
||||||
|
if (!locale_.has_value()) {
|
||||||
|
locale_ = std::string(BallisticaKit::FromCpp::GetLocaleString());
|
||||||
|
}
|
||||||
|
return *locale_;
|
||||||
|
#else
|
||||||
|
return CorePlatform::GetLocale();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ballistica::core
|
} // namespace ballistica::core
|
||||||
|
|
||||||
#endif // BA_OSTYPE_MACOS || BA_OSTYPE_IOS_TVOS
|
#endif // BA_OSTYPE_MACOS || BA_OSTYPE_IOS_TVOS
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
#include <optional>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@ -42,8 +43,6 @@ class CorePlatformApple : public CorePlatform {
|
|||||||
-> bool override;
|
-> bool override;
|
||||||
void ShowOnlineScoreUI(const std::string& show, const std::string& game,
|
void ShowOnlineScoreUI(const std::string& show, const std::string& game,
|
||||||
const std::string& game_version) override;
|
const std::string& game_version) override;
|
||||||
// auto NewAutoReleasePool() -> void* override;
|
|
||||||
// void DrainAutoReleasePool(void* pool) override;
|
|
||||||
void ResetAchievements() override;
|
void ResetAchievements() override;
|
||||||
void GameCenterLogin() override;
|
void GameCenterLogin() override;
|
||||||
auto IsOSPlayingMusic() -> bool override;
|
auto IsOSPlayingMusic() -> bool override;
|
||||||
@ -52,7 +51,6 @@ class CorePlatformApple : public CorePlatform {
|
|||||||
void MacMusicAppInit() override;
|
void MacMusicAppInit() override;
|
||||||
auto MacMusicAppGetVolume() -> int override;
|
auto MacMusicAppGetVolume() -> int override;
|
||||||
void MacMusicAppSetVolume(int volume) override;
|
void MacMusicAppSetVolume(int volume) override;
|
||||||
void MacMusicAppGetLibrarySource() override;
|
|
||||||
void MacMusicAppStop() override;
|
void MacMusicAppStop() override;
|
||||||
auto MacMusicAppPlayPlaylist(const std::string& playlist) -> bool override;
|
auto MacMusicAppPlayPlaylist(const std::string& playlist) -> bool override;
|
||||||
auto MacMusicAppGetPlaylists() -> std::list<std::string> override;
|
auto MacMusicAppGetPlaylists() -> std::list<std::string> override;
|
||||||
@ -60,9 +58,13 @@ class CorePlatformApple : public CorePlatform {
|
|||||||
auto GetSubplatformName() -> std::string override;
|
auto GetSubplatformName() -> std::string override;
|
||||||
|
|
||||||
auto GetDeviceUUIDInputs() -> std::list<std::string> override;
|
auto GetDeviceUUIDInputs() -> std::list<std::string> override;
|
||||||
|
auto GetLocale() -> std::string override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
auto DoGetDataDirectoryMonolithicDefault() -> std::string override;
|
auto DoGetDataDirectoryMonolithicDefault() -> std::string override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::optional<std::string> locale_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ballistica::core
|
} // namespace ballistica::core
|
||||||
|
|||||||
@ -814,10 +814,6 @@ void CorePlatform::MacMusicAppSetVolume(int volume) {
|
|||||||
Log(LogLevel::kError, "MacMusicAppSetVolume() unimplemented");
|
Log(LogLevel::kError, "MacMusicAppSetVolume() unimplemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CorePlatform::MacMusicAppGetLibrarySource() {
|
|
||||||
Log(LogLevel::kError, "MacMusicAppGetLibrarySource() unimplemented");
|
|
||||||
}
|
|
||||||
|
|
||||||
void CorePlatform::MacMusicAppStop() {
|
void CorePlatform::MacMusicAppStop() {
|
||||||
Log(LogLevel::kError, "MacMusicAppStop() unimplemented");
|
Log(LogLevel::kError, "MacMusicAppStop() unimplemented");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -211,10 +211,9 @@ class CorePlatform {
|
|||||||
virtual void MacMusicAppInit();
|
virtual void MacMusicAppInit();
|
||||||
virtual auto MacMusicAppGetVolume() -> int;
|
virtual auto MacMusicAppGetVolume() -> int;
|
||||||
virtual void MacMusicAppSetVolume(int volume);
|
virtual void MacMusicAppSetVolume(int volume);
|
||||||
virtual void MacMusicAppGetLibrarySource();
|
|
||||||
virtual void MacMusicAppStop();
|
|
||||||
virtual auto MacMusicAppPlayPlaylist(const std::string& playlist) -> bool;
|
|
||||||
virtual auto MacMusicAppGetPlaylists() -> std::list<std::string>;
|
virtual auto MacMusicAppGetPlaylists() -> std::list<std::string>;
|
||||||
|
virtual auto MacMusicAppPlayPlaylist(const std::string& playlist) -> bool;
|
||||||
|
virtual void MacMusicAppStop();
|
||||||
|
|
||||||
#pragma mark TEXT RENDERING ----------------------------------------------------
|
#pragma mark TEXT RENDERING ----------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@ -44,6 +44,7 @@ class BaseSoftInterface {
|
|||||||
virtual auto IsAppStarted() const -> bool = 0;
|
virtual auto IsAppStarted() const -> bool = 0;
|
||||||
virtual auto IsAppBootstrapped() const -> bool = 0;
|
virtual auto IsAppBootstrapped() const -> bool = 0;
|
||||||
virtual auto GetReturnValue() const -> int = 0;
|
virtual auto GetReturnValue() const -> int = 0;
|
||||||
|
virtual void PushMainThreadRunnable(Runnable* runnable) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ballistica::core
|
} // namespace ballistica::core
|
||||||
|
|||||||
@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int {
|
|||||||
namespace ballistica {
|
namespace ballistica {
|
||||||
|
|
||||||
// These are set automatically via script; don't modify them here.
|
// These are set automatically via script; don't modify them here.
|
||||||
const int kEngineBuildNumber = 21543;
|
const int kEngineBuildNumber = 21551;
|
||||||
const char* kEngineVersion = "1.7.28";
|
const char* kEngineVersion = "1.7.28";
|
||||||
const int kEngineApiVersion = 8;
|
const int kEngineApiVersion = 8;
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,8 @@
|
|||||||
#include "ballistica/core/platform/core_platform.h"
|
#include "ballistica/core/platform/core_platform.h"
|
||||||
#include "ballistica/core/support/base_soft.h"
|
#include "ballistica/core/support/base_soft.h"
|
||||||
#include "ballistica/shared/foundation/logging.h"
|
#include "ballistica/shared/foundation/logging.h"
|
||||||
|
#include "ballistica/shared/generic/lambda_runnable.h"
|
||||||
|
#include "ballistica/shared/python/python.h"
|
||||||
|
|
||||||
namespace ballistica {
|
namespace ballistica {
|
||||||
|
|
||||||
@ -131,32 +133,38 @@ void FatalError::DoBlockingFatalErrorDialog(const std::string& message) {
|
|||||||
// done.
|
// done.
|
||||||
if (g_core->InMainThread()) {
|
if (g_core->InMainThread()) {
|
||||||
g_core->platform->BlockingFatalErrorDialog(message);
|
g_core->platform->BlockingFatalErrorDialog(message);
|
||||||
} else {
|
} else if (g_base_soft) {
|
||||||
printf("FIXME REIMPLEMENT BLOCKING FATAL ERROR FOR BG THREAD\n");
|
bool started{};
|
||||||
// bool started{};
|
bool finished{};
|
||||||
// bool finished{};
|
bool* startedptr{&started};
|
||||||
// bool* startedptr{&started};
|
bool* finishedptr{&finished};
|
||||||
// bool* finishedptr{&finished};
|
|
||||||
// g_core->main_event_loop()->PushCall([message, startedptr, finishedptr] {
|
|
||||||
// *startedptr = true;
|
|
||||||
// g_core->platform->BlockingFatalErrorDialog(message);
|
|
||||||
// *finishedptr = true;
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // Wait a short amount of time for the main thread to take action.
|
// If our thread is holding the GIL, release it to give the main
|
||||||
// // There's a chance that it can't (if threads are paused, if it is
|
// thread a better chance to get to the point of displaying the fatal error.
|
||||||
// // blocked on a synchronous call to another thread, etc.) so if we don't
|
if (Python::HaveGIL()) {
|
||||||
// // see something happening soon, just give up on showing a dialog.
|
Python::PermanentlyReleaseGIL();
|
||||||
// auto starttime = core::CorePlatform::GetCurrentMillisecs();
|
}
|
||||||
// while (!started) {
|
g_base_soft->PushMainThreadRunnable(
|
||||||
// if (core::CorePlatform::GetCurrentMillisecs() - starttime > 1000) {
|
NewLambdaRunnableUnmanaged([message, startedptr, finishedptr] {
|
||||||
// return;
|
*startedptr = true;
|
||||||
// }
|
g_core->platform->BlockingFatalErrorDialog(message);
|
||||||
// core::CorePlatform::SleepMillisecs(10);
|
*finishedptr = true;
|
||||||
// }
|
}));
|
||||||
// while (!finished) {
|
|
||||||
// core::CorePlatform::SleepMillisecs(10);
|
// Wait a short amount of time for the main thread to take action.
|
||||||
// }
|
// There's a chance that it can't (if threads are paused, if it is
|
||||||
|
// blocked on a synchronous call to another thread, etc.) so if we don't
|
||||||
|
// see something happening soon, just give up on showing a dialog.
|
||||||
|
auto starttime = core::CorePlatform::GetCurrentMillisecs();
|
||||||
|
while (!started) {
|
||||||
|
if (core::CorePlatform::GetCurrentMillisecs() - starttime > 3000) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
core::CorePlatform::SleepMillisecs(10);
|
||||||
|
}
|
||||||
|
while (!finished) {
|
||||||
|
core::CorePlatform::SleepMillisecs(10);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -416,11 +416,15 @@ class Updater:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def _target_names_for_file(self, filename: str) -> list[str] | None:
|
def _target_names_for_file(self, filename: str) -> list[str] | None:
|
||||||
# Cocoa stuff only applies to our macOS build.
|
# Cocoa stuff only applies to our macOS targets.
|
||||||
if filename.startswith('Cocoa') and filename.endswith('.swift'):
|
if filename.startswith('Cocoa') and filename.endswith('.swift'):
|
||||||
return [f'{self.pnameu} macOS']
|
return [
|
||||||
|
f'{self.pnameu} macOS TestBuild',
|
||||||
|
f'{self.pnameu} macOS AppStore',
|
||||||
|
f'{self.pnameu} macOS Steam',
|
||||||
|
]
|
||||||
|
|
||||||
# UIKit stuff applies to our iOS/tvOS builds.
|
# UIKit stuff applies to our iOS/tvOS targets.
|
||||||
if filename.startswith('UIKit') and filename.endswith('.swift'):
|
if filename.startswith('UIKit') and filename.endswith('.swift'):
|
||||||
return [f'{self.pnameu} iOS', f'{self.pnameu} tvOS']
|
return [f'{self.pnameu} iOS', f'{self.pnameu} tvOS']
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user