Commit Graph

842 Commits

Author SHA1 Message Date
Zeta
68135c0d33 Remove custom zip reader.
This file was added 8 years ago, and currently breaks `haxe.zip.Reader` usage on all targets but Neko.
I don't see a reason why it should be kept around, so let's delete it.
Closes #1400.
2022-03-13 21:35:04 +01:00
Josh Tynjala
fbefc24a22 Fix PP_vOdiii__v required but PP_vOiiii__v found in hdll error (references #1521)
Includes tweaks to commit 45955412eb to allow the code to continue working in HashLink

Co-authored-by: ShaharMS <88977041+ShaharMS@users.noreply.github.com>
2022-03-10 14:52:16 -08:00
Josh Tynjala
2e31ae9fd0 NativeHTTPRequest: manage cookies for the current session if withCredentials is true 2022-03-09 15:51:39 -08:00
Joseph Cloutier
5a8a997bce Safely pass enums. 2022-03-02 22:31:59 -05:00
Joseph Cloutier
8a6848016b Improve cross-platform compatibility. 2022-03-02 13:16:24 -05:00
Joseph Cloutier
649fc2b2bb Simplify HTML5Thread.Message. 2022-03-02 13:12:55 -05:00
Joseph Cloutier
81a2d401e8 Fix docs generation. 2022-03-01 14:58:54 -05:00
Joseph Cloutier
363b397903 Fix performance when transferring large buffers. 2022-03-01 14:52:55 -05:00
Joseph Cloutier
1739370ae6 Allow canceling idle threads. 2022-03-01 14:49:40 -05:00
Joseph Cloutier
5f04b3e613 Properly exit workers, plus small fixes. 2022-03-01 14:43:42 -05:00
Joseph Cloutier
ec4d0b7ee9 Fix errors when generating docs. 2022-02-28 19:39:14 -05:00
Joseph Cloutier
630aa1a62f Fix web worker errors.
It took a lot of work to get web workers to work, but web workers finally work!

`transferList` doesn't seem to work, though. It makes the object
inaccessible as expected, but it doesn't seem to affect performance.
2022-02-28 19:15:19 -05:00
Joseph Cloutier
218f763977 Begin adding web workers (major commit).
Not well-tested yet, especially the web workers.

In addition to web workers, this completely rewrites both
`BackgroundWorker` and `ThreadPool`. It adds thread safety via the
`WorkOutput` object, adds flexibility by making `BackgroundWorker` build
off `ThreadPool`, and exposes an `eventSource` variable that tells
listeners which job dispatched a given event.

This improves the old web worker implementation by reusing the _entire_
JS file. This is slower but ensures that all classes are available,
simplifying the end user experience. Web workers are now forbidden from
using instance functions, which also simplifies things. And finally, the
code attempts to restore the prototypes of all class instances passed
across threads, though this relies on the exact way Haxe generates
JavaScript, and may not work in Haxe 3 or Haxe 5.
2022-02-22 19:27:51 -05:00
Joseph Cloutier
b67d4304ff Fix legacy imports. 2022-02-15 12:22:19 -05:00
Joseph Cloutier
7c33cfed54 Improve thread safety.
This actually makes `Future` more thread-safe than its parent classes.
Unfortunately `BackgroundWorker` and `ThreadPool` can't receive the same
treatment, as it'd break backward compatibility.
2022-02-11 19:07:52 -05:00
Joseph Cloutier
dfe70daf18 Add single-thread support to Future.ready(). 2022-02-11 16:05:33 -05:00
Joseph Cloutier
3426b0e7d7 Make ThreadPool set completed.
I worded the documentation so carefully to account for both classes,
then forgot to implement it. Oops!
2022-02-11 16:04:52 -05:00
Joseph Cloutier
a9580a9486 Clarify Future.
The `Future` constructor creates a new `Future` instance, and in other
news, this floor is made out of floor.

Since there's now so much more to read, we should cut out the blatantly
obvious parts.
2022-02-11 15:46:54 -05:00
Joseph Cloutier
1ebff2e795 Remove redundancy. 2022-02-11 15:43:44 -05:00
Josh Tynjala
925e2b67e7 Image: compatibility fix to allow use of genes library to compile as ES modules 2022-02-11 10:32:47 -08:00
Joseph Cloutier
cc2611048b Correctly calculate when to close threads.
And add some documentation so I won't make this mistake again.
2022-02-09 15:45:53 -05:00
Joseph Cloutier
f3c35a2fd0 Improve ThreadPool job chaining. 2022-02-09 15:28:13 -05:00
Joseph Cloutier
c6f355941b Catch errors in threads.
Without this, if an error happened during a `ThreadPool` job, that
thread would exit without updating `currentThreads`.

This can almost replace `FutureWork`'s error handling, but not quite.
2022-02-09 12:12:40 -05:00
Joseph Cloutier
f700b2de55 Make FutureWork use new ThreadPool features. 2022-02-02 15:05:06 -05:00
Joseph Cloutier
6560596d0d Update documentation. 2022-02-02 15:04:18 -05:00
Joseph Cloutier
689b78cec2 Implement workLoad. 2022-02-01 19:32:08 -05:00
Joseph Cloutier
fabb7e085a Link to my threading tutorial. 2022-01-31 19:59:26 -05:00
Joseph Cloutier
71305a7bce Use a loop to process events.
Otherwise, `BackgroundWorker` would be limited to one event per frame.
2022-01-31 12:39:19 -05:00
Joseph Cloutier
e47d5f4280 Fix errors in ThreadPool's single-threaded mode. 2022-01-31 12:29:13 -05:00
Joseph Cloutier
3a4ec6daa6 Improve BackgroundWorker's documentation. 2022-01-29 19:20:30 -05:00
Joseph Cloutier
223ab9bcd0 Make run() prefer local variables.
The benefit being that local variables can't be deleted by outside code.

The outside variables must still be set so `__update()` can access them.
2022-01-29 19:20:14 -05:00
Joseph Cloutier
3015a4e72e Enforce thread safety.
Modifying `onUpdate` is not thread safe, and must only be done on the
main thread. This is more important - and more enforceable - than most
of the "only do this on XYZ thread" comments.
2022-01-29 19:19:28 -05:00
Joseph Cloutier
deaa0713d8 Make ThreadPool extend BackgroundWorker.
Plus, add documentation.
2022-01-29 10:41:00 -05:00
Joseph Cloutier
8662d0a1c7 Implement SINGLE_THREADED mode.
Also addresses haxelime/lime#1502.
2022-01-28 17:13:51 -05:00
player-03
cda9d3a4bb Add missing feature warning to FlashAudioSource. 2022-01-26 12:20:10 -05:00
player-03
878982e3e2 Never skip setCurrentTime(). 2022-01-26 12:14:20 -05:00
Joshua Granick
45955412eb Resolve KeyCode data type issue on Neko 2022-01-13 15:11:25 -08:00
player-03
07e65257c4 Add missing #if tag. 2022-01-10 07:46:04 -05:00
player-03
8e46831823 Remove redundant code. 2022-01-08 12:01:23 -05:00
player-03
c328d0c85c Make sure NativeAudioSource.handle is non-null.
Using `getGain()` and `setGain()` as a template. Like gain, you won't be able to set pitch before calling `init()`.
2022-01-07 20:44:28 -05:00
player-03
f46ed3dc7e Standardize setters in NativeAudioSource.
These setters now: (1) start by checking if anything changed, (2) use the new value in calculations, and (3) perform the assignment only at the end.
2022-01-07 19:02:43 -05:00
player-03
809ba2fd0c Add pitch functions to FlashAudioSource
Just placeholders, for now.
2021-12-29 18:36:20 -05:00
player-03
f65eedf28e Calculate time remaining based on pitch 2021-12-29 18:33:07 -05:00
player-03
2f35e0b24c Merge pull request #1498 from player-03/loadAudioBuffer
Fix error when loading embedded audio.
2021-12-20 10:05:16 -05:00
Cameron Taylor
cd2ab1600e following structure of other stuff 2021-12-18 18:05:32 -05:00
Cameron Taylor
b3dd46ee68 HTML5 backend pitch 2021-12-18 17:51:33 -05:00
Cameron Taylor
2ffb6eef3f initial pitch stuff 2021-12-18 17:42:25 -05:00
Joseph Cloutier
455dd2017c If two icons are equivalent, prefer the second. 2021-12-14 13:33:54 -05:00
Joseph Cloutier
e848002f93 Implement Icon priorities.
With this, a library can set a "default" icon, to be used only if the
user doesn't provide a better one.

Additionally, this treats SVGs as "near" matches rather than exact,
meaning that a perfect-size PNG will take precedence over an SVG. Why
would the PNG even exist if you didn't want to use it in that one case?

And finally, I took the liberty of cleaning up `findNearestMatch()`. It
seemed unnecessarily confusing for what it did.
2021-12-14 13:13:55 -05:00
Josh Tynjala
0ecf27d2d6 disable_preloader_assets haxedef
When the project contains no assets, excludes asset-related classes for big file size savings
2021-11-18 10:46:07 -08:00