Commit Graph

626 Commits

Author SHA1 Message Date
tobil4sk
0ef949f865 Merge pull request #1472 from nixbody/cffi-unicode-fixes
UNICODE fixes (clipboard, window title, file dialogs, paths, font glyphs, ...)
2024-07-07 23:10:43 +01:00
player-03
b99eff85c1 Merge pull request #1794 from player-03/environment-variable-conflicts
Ignore system environment variables with the same name as common targets.
2024-07-02 15:56:31 -04:00
Josh Tynjala
44852467f4 AndroidHelper: report errors for missing adb and emulator executables when they are used only, instead of immediately in AndroidHelper.initialize()
It turns out that adb isn't included GitHub Actions unless you install it specifically. However, you can technically build Android apps with Lime without adb, so we shouldn't report the error in initialize(). Most important is install(), where both adb and emulator are commonly used.

Followup to eed47e7132
2024-06-14 10:55:49 -07:00
Josh Tynjala
eed47e7132 AndroidHelper: Fix Android -emulator flag by preferring newer executable paths from Android SDK
The 'SDK Tools' package located in /tools/ is officially considered 'obsolete', so we should not use it by default.

We now prefer /platform-tools/adb over /tools/adb

We now prefer /emulator/emulator over /tools/emulator

If the newer replacement executables are missing, we still try to fall back to /tools/. This should allow older Android SDKs to continue to work properly.

Additionally, if neither version can be found, we report an error. For adb, we always need it, so we always report an error if it is missing. For emulator, we report an error only if we're actually going to use an emulator.

/tools/android doesn't have a newer alternative. We were running 'android list avds' to get a list of all available AVDs. However, both '/emulator/emulator -list-avds' and '/tools/emulator -list-avds' provide a simple list of AVDs separated by line breaks. So it seems that we never actually needed /tools/android. Plus, it outputs a better format that doesn't require searching every line of the output string for 'Name:', and we can just split and trim. So I completely removed /tools/android and we now use either '/emulator/emulator -list-avds' or '/tools/emulator -list-avds'.
2024-06-14 10:04:11 -07:00
player-03
7a25f656d0 Ignore system environment variables with the same name as common targets.
If you have a `<section if="cpp">` tag in your project.xml, you don't want it to be active just because a system environment variable happens to be named "cpp". You only want it active if actually targeting C++.
2024-06-04 23:11:55 -04:00
tobil4sk
a74127b866 Fix usage of missing variable in CFFI.hx
See a850b12fa0
2024-05-31 22:46:54 +01:00
tobil4sk
1ebce5faa3 Load ndlls from correct path on Apple Silicon Mac 2024-05-31 14:40:23 -07:00
Josh Tynjala
e88b3d21c1 ProjectXMLParser: <echo/> and <log/> (except error) are skipped if the command is display (references openfl/lime-vscode-extension#88) 2024-05-31 08:34:48 -07:00
Josh Tynjala
0cf13bf3dd Clipboard: fix text always getting cleared to null in __update() when targeting html5 2024-05-30 16:02:54 -07:00
Joseph Cloutier
1b8d7ac7fa Reduce indentation in ProjectXMLParser.
Whitespace changes interfere with merges, so this change must be applied manually first.
2024-05-27 15:58:20 -04:00
player-03
3078b7c1f6 Merge pull request #1787 from player-03/CFFI_haxelib_libpath
Fix error when locating Lime's bundled NDLLs.
2024-05-27 15:30:19 -04:00
Josh Tynjala
ac4039d849 ProjectXMLParser: handle Std.parseInt() returning null
Previously, null was propagated, which could lead to confusing errors from arithmetic operations. Now, it is ignored, and a warning is displayed that says where the invalid value can be found.
2024-05-22 09:10:04 -07:00
player-03
a850b12fa0 Replace __findHaxelib() with a function that finds Lime's NDLL folder.
This is its only use case, so there's no need for an intermediate step of getting the library root. `haxelib path` does return the NDLL folder; the problem with the old implementation of `__findHaxelib()` was it got Lime's source folder instead.
2024-05-17 17:26:35 -04:00
player-03
4ce0a8302d Fix uninitialized variable. 2024-05-16 17:46:20 -04:00
player-03
3b115885f1 Use haxelib libpath when searching for NDLLs.
We could fall back to `haxelib path` for very old versions of Haxelib, but most likely even people stuck on Haxe 3 have updated Haxelib.

Also, `haxelib path` gave incorrect results in the first place, so falling back wouldn't do any good.
2024-05-16 17:40:49 -04:00
player-03
d2ea41570b Print an error message if the HXP project class doesn't match the file name.
This is required but not obvious, so we should spell it out.
2024-05-16 16:49:17 -04:00
Chris Speciale
bb3b31b08d ObjectPool: Write documentation 2024-04-12 06:35:09 -04:00
Josh Tynjala
5f63ef1ee3 ObjectPool: null safety because map exists() result with null key is unspecified 2024-03-21 10:10:25 -07:00
player-03
d0e2a34014 Merge pull request #1764 from player-03/AssetsMacro
Remove conditional compilation from `AssetsMacro` class.
2024-02-27 19:05:10 -05:00
Joseph Cloutier
2fd8817ed6 Exclude AssetMacro from doc builds. 2024-02-24 19:39:05 -05:00
Joseph Cloutier
adcccc863f Remove embedBytesHL() function.
This was likely added when `#if hl` began to fail, hiding the problem. With the issue fixed, there's no more need for a workaround.
2024-02-24 19:25:37 -05:00
Joseph Cloutier
95cef72616 Inline resourceName and resourceType.
Sure they're private, but even then they shouldn't be writable.
2024-02-24 19:13:49 -05:00
Joseph Cloutier
3b04a053b7 Simplify AssetsMacro.embedData(). 2024-02-24 19:11:32 -05:00
Joseph Cloutier
c11ae61a1b Replace #if html5 in AssetsMacro. 2024-02-24 19:05:51 -05:00
Joseph Cloutier
81e129f804 Replace #if !display in AssetsMacro.
And while I'm at it, the `if` statement doesn't need to span the whole function. It can be a simple guard clause.
2024-02-24 18:58:49 -05:00
Joseph Cloutier
929dd2b015 Use class reification for readability. 2024-02-24 18:29:23 -05:00
Josh Tynjala
458ee49fbd FileDialog: fix compilation error for sys.io.File on non-sys desktop targets 2024-02-12 09:48:47 -08:00
player-03
76437a3014 Don't set asset.id to an empty string.
The `Asset` constructor sets `asset.id` to the asset's path, a sensible default. Of course, if the asset has a name instead of a path, we have to use that instead. Or if the user specified an ID, that's even better.

We just don't want to default to `""`, since then a bunch of assets could have the same ID.

Resolves #1758.
2024-02-11 21:18:19 -05:00
player-03
e72db10900 Change "vcruntime.dll" to "vcruntime140.dll" per HashLink's makefile. 2024-02-04 18:00:43 -05:00
player-03
3cbafc4622 Fix filename typo.
Closes #1756.
2024-02-03 22:21:50 -05:00
Josh Tynjala
f8a70444f5 Some missing docs 2024-01-29 12:27:48 -08:00
player-03
bed2f7cdca Merge branch 'develop' into cffi-unicode-fixes 2024-01-27 21:33:36 -05:00
Josh Tynjala
f2ef5d0082 add comment about cast 2024-01-22 10:43:33 -08:00
Timur
c58013c5e6 Fix "don't know how to cast array" error.
This can happen when compiling HL with `analyzer-optimize`.
2024-01-22 10:43:33 -08:00
player-03
f0aae1f8f2 Correctly check for errors in Haxelib.runProcess().
In safe mode, this function includes its own `try ... catch` block, so we don't need one here. Instead, we need to check if the output is null.
2024-01-21 14:11:51 -05:00
player-03
13865cbbc9 Make better use of getPath().
If you check `paths.exists()` first, then there's no benefit to calling `getPath(id)`: it always just returns `paths.get(id)`. It's more effective to let `getPath()` perform all of its checks.
2024-01-18 14:02:58 -05:00
player-03
558fd0791c Merge pull request #1700 from EliteMasterEric/bugfix/library-get-path
Always use `getPath` instead of `paths.get()` directly.
2024-01-18 13:57:13 -05:00
player-03
40d70d8e53 Use paths.get() when pathGroups was already checked. 2024-01-18 13:56:44 -05:00
player-03
a414f64173 Optimize CI workflow. (#1743)
See pull request for details. Summary:

* Reduce dependencies between CI jobs, allowing more of them to run in parallel.
* Use Linux for as many jobs as possible.
* Merge matching "-ndll" and "-samples" jobs. This way, the latter doesn't have to waste time recreating the former's environment, and the workflow summary is simplified. Downside: this delays package-haxelib.
* Update to a newer macOS version, as the old version massively slowed down Homebrew.
* Skip the HelloWorld test for Mac and iOS, as those two can build slowly under some circumstances, delaying package-haxelib. These could be restored later, if performance seems good enough.
* Add `HAXE_VERSION` environment variable, so future updates will only have to make one change. Unfortunately, doing the same for the Windows/Mac/Linux versions would severely hurt performance, so those remain hard-coded.
* Split up some steps within jobs for better organization.
2024-01-18 13:22:05 -05:00
player-03
79c4b05c06 Merge branch 'develop' into cffi-unicode-fixes 2024-01-05 00:03:31 -05:00
andrew-git
c40ec312fc Joystick: add try/catch around navigator.getGamepads() because it might throw a JS SecurityError if we don't have permission to call it (#1728)
Fixes the following exception when we don't have permissions:

> Failed to execute 'getGamepads' on 'Navigator': Access to the feature "gamepad" is disallowed by permissions policy.

By catching the exception, it should now behave the same as older browsers, where navigator.getGamepads() doesn't exist at all.

In the future, it might make sense to set a flag if navigator.getGamepads() throws, and skip calling it more than once. However, we may want to listen for some kind of browser event that indicates that permission was granted later, and clear the flag when appropriate. Perhaps the gamepadconnected event?

---------

Co-authored-by: Josh Tynjala <joshtynjala@bowlerhat.dev>
2023-12-01 11:09:34 -08:00
player-03
1a3a9bd5c5 Avoid integer overflow for long sounds.
Multiplying `dataLength * 8` produces a high number, which in the case of very long audio files can exceed the integer limit. Multiplying by 8.0 coerces to float, allowing much higher values.

An alternate solution is to divide first and multiply by 8 second, thus keeping the number from getting too large at any point. However, the purpose of the 8 is to convert `dataLength` from bytes to bits, so it's clearer if those two are close together.
2023-10-19 22:57:43 -04:00
Josh Tynjala
667567f7bd WebAudioContext: add missing resume() field for non-html5 platforms to fix doc gen 2023-09-29 09:31:08 -07:00
UncertainProd
843e7fc873 Removed unused field hello in Float32Array.hx 2023-08-19 22:02:19 +05:30
player-03
3c245b5287 Make replaceVariable() account for properties.
Some useful information is only available as a property, not a field.
2023-08-18 16:20:01 -04:00
Josh Tynjala
987e3dd425 Merge branch 'develop' into 8.1.0-Dev 2023-08-14 15:53:18 -07:00
Josh Tynjala
b6cfc7d812 HTTPRequest: fix missing response data for HTTP status codes (closes #1699)
Backends now return error and response data, but public API has not changed.

This allows OpenFL to expose URLLoader.data on IOErrorEvent.IO_ERROR to match the behavior of Flash
2023-08-11 13:43:16 -07:00
Josh Tynjala
6cff64018a Add -npx flag for lime test electron to run the npx electron command instead of just electron.
This will prompt the user to install electron, if required. Saves a separate `npm install -g electron` command before testing.
2023-07-25 08:43:39 -07:00
EliteMasterEric
3c431559df Always use getPath instead of paths.get() directly. 2023-07-17 14:49:45 -04:00
player-03
828864063f Merge pull request #1694 from loudoweb/dev-fix-library-unload
clear cached files on library unload
2023-07-04 20:31:03 -04:00