Sasha Szpakowski
8951635abc
Merge branch 'main' into 12.0-development
2023-12-02 13:40:49 -04:00
Miku AuahDark
f4f3105ccd
Call love.jitsetup during thread initialization too.
2023-11-27 12:13:56 +08:00
Sasha Szpakowski
2b01179b35
Merge branch 'main' into 12.0-development
2023-04-13 21:56:19 -03:00
Sasha Szpakowski
02d2dc9427
Fix race condition when a thread is destroyed right after thread:start
2023-01-18 17:27:06 -04:00
Sasha Szpakowski
f6cdbdc868
Merge branch 'main' into 12.0-development
2022-12-31 22:46:34 -04:00
Sasha Szpakowski
0b75f6cfa5
Missed some files...
2022-12-31 22:36:48 -04:00
Sasha Szpakowski
c823dbca96
Update copyright year for 2023
2022-12-31 22:25:49 -04:00
Alex Szpakowski
0b6722ea0e
Merge branch 'main' into 12.0-development
2022-04-15 23:47:28 -03:00
Alex Szpakowski
b3b1317f61
linux: fix issues if certain codepaths are hit while signal handlers are temporarily off.
2022-04-15 23:43:30 -03:00
Alex Szpakowski
e512eff37b
Fix love.threaderror when the error message is empty.
...
Fixes #1775
2022-04-15 23:31:57 -03:00
Alex Szpakowski
7f3538d2ba
Merge branch 'main' into 12.0-development
2022-01-05 21:10:27 -04:00
Alex Szpakowski
8e7fd10b6f
Update copyright year for 2022
2021-12-31 18:33:40 -04:00
Alex Szpakowski
9b4aea8f17
Missed some copyright date updates
2021-04-07 20:34:24 -03:00
Alex Szpakowski
21f5ba86d3
Merge branch 'master' into 12.0-development
2021-04-07 20:33:44 -03:00
Alex Szpakowski
f89aabb0bb
Update copyright year for 2021
2021-04-04 16:14:45 -03:00
Alex Szpakowski
e71f27c65d
Move Lua wrapper code for Variants out of the Variant class file.
2020-02-28 21:54:03 -04:00
Alex Szpakowski
fc4847c69d
Update copyright for the new year
2020-01-03 22:40:36 -04:00
Alex Szpakowski
0752f27bdf
Update copyright year for 2019
2019-01-03 21:09:05 -04:00
Alex Szpakowski
19890a65c3
Move named channel code to the thread module instead of having a static map. Fixes issue #1464 .
2018-12-31 22:36:36 -04:00
Bart van Strien
e80247c191
Happy new year! ✨
2018-01-03 19:47:35 +01:00
Alex Szpakowski
b838d0de54
Simplified an internal Variant constructor to be more intuitive to use.
...
--HG--
branch : minor
2017-09-30 10:39:24 -03:00
Bart van Strien
09c1259857
Add optional timeout values to Channel:supply and Channel:demand ( resolves #1344 )
...
--HG--
branch : minor
2017-09-11 13:40:21 +02:00
Bart van Strien
5ddc89a033
Added cycle detection to Variant
...
We accidentally enabled nested tables previously, and now it errors properly when the tables contain cycles. Before you'd get (or at least I got) a nice lua stack overflow error.
--HG--
branch : minor
2017-08-30 13:07:57 +02:00
Alex Szpakowski
74d9bc7faf
Add traceback information to the error string generated if a thread causes a Lua error.
...
--HG--
branch : minor
2017-08-07 20:15:26 -03:00
Bart van Strien
a4a62f390a
Disable signal handling in threads (see issue #1042 )
...
I don't necessarily like having to do these extra calls whenever threads are
spawned (and what happens to signals during the time signal delivery is
disabled?) but it seems to fully fix os.execute.
NOTE: Also disables signals when loading openal, as it or one of its backends
spawns threads internally, and does not disable signals itself.
--HG--
branch : minor
2017-07-02 15:27:58 +02:00
Bart van Strien
03b863d788
Simplify love.audio's Pool class
...
Move most logic back to Source. Pool now simply contains a list of playing
sources and a mutex. Also gets rid of the pause/pauseAtomic duplication in
Source, since it can now request a lock from Pool itself.
--HG--
branch : minor
2017-02-11 21:41:22 +01:00
Alex Szpakowski
abb72cb813
Happy new year! 🥂
...
--HG--
branch : minor
2017-01-02 01:28:29 -04:00
Bart van Strien
9f6aa716fa
Pass Type to luax_register_type by pointer instead of reference
...
Since the type is passed to va_start, and apparently that's undefined behaviour if it's a reference.
<Textmode> the best kind of behavior
--HG--
branch : dynamiccore2
2016-11-14 21:51:47 +01:00
Bart van Strien
d967a755e5
Make love::Type handle type names
...
TODO: Fix undefined behaviour in luax_register_type, you can't use a va_list after a reference type
--HG--
branch : dynamiccore2
2016-11-14 21:06:53 +01:00
Bart van Strien
5d43c9601a
Automatically deduce the type in luax_pushtype, if possible
...
--HG--
branch : dynamiccore2
2016-11-13 17:38:42 +01:00
Bart van Strien
7dd960619d
Automatically deduce the type in luax_checktype, luax_getmodule, luax_optmodule and luax_totype
...
--HG--
branch : dynamiccore2
2016-11-13 17:13:40 +01:00
Bart van Strien
c761202486
Build type information on first use (load-time), instead of using a hardcoded list
...
--HG--
branch : dynamiccore2
2016-11-13 16:38:57 +01:00
Alex Szpakowski
15ba27f417
Merge default into minor
...
--HG--
branch : minor
2016-10-08 11:03:37 -03:00
Alex Szpakowski
b1b4a637b5
Fix a potential crash when a Thread ends (resolves issue #1219 ).
2016-10-08 10:50:50 -03:00
Alex Szpakowski
54efa825c3
Merge default into minor
...
--HG--
branch : minor
2016-09-11 13:09:01 -03:00
Alex Szpakowski
0b1bfba493
Use SDL_DetachThread instead of a conditional SDL_WaitThread when a Thread is destroyed.
2016-09-08 23:33:48 -03:00
Alex Szpakowski
293bc79b97
Merge default into minor
...
--HG--
branch : minor
2016-03-12 22:04:07 -04:00
Alex Szpakowski
d0c0240e09
Very minor channel / variant performance improvements and cleanup.
2016-03-12 19:11:03 -04:00
Alex Szpakowski
140faf0cae
Channel:push now returns an id value. Added Channel:hasRead(id), which returns true if the value that the id represents has already been popped, demanded, or cleared from the Channel. Resolves issue #1104 .
...
--HG--
branch : minor
2016-03-09 22:04:14 -04:00
Alex Szpakowski
a0bbcce8ee
The video decoding thread efficiently waits for a video to be created before doing anything, rather than sleeping for 2ms in a loop. Reduces the CPU usage of the video worker thread to ~0% when no videos are loaded.
2016-03-05 21:56:51 -04:00
Alex Szpakowski
f51bbb8462
Cleaned up some StrongRef-related code.
2016-03-01 18:57:17 -04:00
Alex Szpakowski
e08374fdd1
We don't need a mutex lock in Channel::retain/release... I think.
2016-02-26 18:38:39 -04:00
Alex Szpakowski
23fcaec89f
The Variant class is now meant to be used on the stack instead of allocated on the heap. As a result (and because of related changes), performance of Channels has roughly doubled when pushing and popping most types.
2016-02-14 16:39:32 -04:00
Alex Szpakowski
46a2e7b85c
Happy new year! 🎉
2016-01-01 00:05:06 -04:00
Alex Szpakowski
2c4e713114
Imported some of the dynamiccore branch from love-experiments:
...
- Type names for love's Lua objects are specified as an argument to luax_register_type, rather than being statically defined in an array.
- luax_register_type takes a variable number of method array arguments, for registering superclass methods without copying them into the subclass' method array.
Also removed most of the header declarations for wrapper functions.
2015-11-29 20:38:12 -04:00
Alex Szpakowski
66942d5f31
Added the ability to use custom mipmaps in Images, via love.graphics.newImage(filename, {mipmap1, mipmap2, ...}). Resolves issue #1064 .
...
All mipmap levels must be present if custom mipmaps are used (and their sizes must be half the size of the previous mipmap level, rounded down.)
Image:getData now returns all custom mipmaps in an Image.
2015-07-30 20:48:36 -03:00
Bart van Strien
7e44034757
Add a MutexRef class to clean up Mutex handling code
2015-07-06 11:58:08 +02:00
Alex Szpakowski
eee1fbac79
love.filesystem is now loaded by default in threads (see issue #1040.)
2015-05-01 21:20:23 -03:00
Alex Szpakowski
8e42f591ce
Updated the iOS xcode project search paths for the luajit headers and static library.
2015-04-25 12:00:07 -03:00
Alex Szpakowski
289eeb4fe0
Added Channel:performAtomic(func, ...). Resolves issue #1034 .
...
performAtomic calls the function and passes the Channel as the first argument, plus any additional specified arguments. The called function should do as little work as possible.
To other threads, all methods for that Channel are executed in a single step inside the function. This can prevent a large number of potiential race conditions.
Example:
-- main.lua:
local function set(channel, value)
channel:clear()
channel:push(value)
return "set value"
end
assert(channel:performAtomic(set, 1) == "set value")
-- thread.lua
while true do
assert(channel:peek() == 1)
end
2015-04-24 23:53:28 -03:00