ShadowNinja [Thu, 24 Nov 2016 15:35:48 +0000 (10:35 -0500)]
Fix fs::RemoveRelativePathComponents for paths with a leading dot component
Previously, paths like ./worlds would be resolved to /worlds since the
leading dot was considered just as irrelevant as a dot in the middle of
the path.
ShadowNinja [Thu, 24 Nov 2016 15:10:20 +0000 (10:10 -0500)]
Fix secure io.lines
It used to drop all of the return values from the
insecure version of the function.
ShadowNinja [Thu, 24 Nov 2016 14:58:21 +0000 (09:58 -0500)]
Fix secure io.open without mode
orwell96 [Tue, 22 Nov 2016 16:15:22 +0000 (17:15 +0100)]
Make supplying empty formspec strings close the formspec (#4737)
This will only happen if the formname matches or if formname is "".
Zeno- [Tue, 22 Nov 2016 15:23:34 +0000 (01:23 +1000)]
No functional changes. Credit gcu
This merge doesn't make any functional changes. It's a trivial style fix so that @gregorycu can be dual credited along with shadowninja for PR #4800
ShadowNinja [Tue, 22 Nov 2016 14:05:39 +0000 (09:05 -0500)]
Fix superflous shader setting updates (#4800)
This improves rendering performance by ~40%
paramat [Sat, 19 Nov 2016 22:58:11 +0000 (22:58 +0000)]
Tool break: Reduce gain of break sounds
orwell96 [Mon, 24 Oct 2016 17:56:27 +0000 (19:56 +0200)]
Particles: Make attached particle spawners respect the parent's yaw
Position, velocity and acceleration vectors of particles are rotated
by the yaw of the parent object so that they are truly relative to it.
Clarify new attached particle spawner behavior in lua_api.txt.
Auke Kok [Sat, 23 Jan 2016 05:52:50 +0000 (21:52 -0800)]
Builtin/../item: Enable tool breaking sounds
If a tool wears out and is destroyed, it's itemstack count
goes to 0, and we can optionally play a breaking sound.
This patch implements playing a breaking sound when this
occurs. Sounds need to be added to the tool itemdef
registration as the sound name string in the .sound.breaks
member.
est31 [Wed, 16 Nov 2016 09:17:46 +0000 (10:17 +0100)]
Introduce builtin_shared and use it to fix #4778
Fixes #4778 which was about the error:
ServerError: Lua: Runtime error from mod '' in callback item_OnPlace():
/usr/local/share/minetest/builtin/game/item.lua:278: attempt to call global 'check_attached_node' (a nil value)
The issue was a regression of commit
649448a2a91fbf3e944b2f2e739f4e2292af1df0
"Rename nodeupdate and nodeupdate_single and make them part of the official API"
Rogier-5 [Wed, 16 Nov 2016 16:56:05 +0000 (17:56 +0100)]
Fix unexplained shader issue (glsl compiler bug??) (#4757)
Wuzzy [Sat, 12 Nov 2016 16:49:41 +0000 (17:49 +0100)]
Lua_api.txt: Naming convention for custom item/entity fields
Custom (non-engine) field names of items and entities are allowed.
This is now documented in lua_api.txt. Field names beginning with
an underscore are now reserved for mod use, the engine must not
introduce any fields beginning with an underscore.
paramat [Fri, 16 Sep 2016 03:59:25 +0000 (04:59 +0100)]
Mgv7: Add optional floatlands, disabled by default
sfan5 [Mon, 14 Nov 2016 14:28:06 +0000 (15:28 +0100)]
Revert "Adding particle blend, glow and animation (#4705)"
This reverts commit
93e3555eae2deaeca69ee252cfa9cc9c3e0e49ef.
Foghrye4 [Mon, 14 Nov 2016 14:09:59 +0000 (18:09 +0400)]
Adding particle blend, glow and animation (#4705)
est31 [Sat, 12 Nov 2016 09:55:26 +0000 (10:55 +0100)]
Rename nodeupdate and nodeupdate_single and make them part of the official API
Now, the renamed forms of nodeupdate and nodeupdate_single are part of the official API.
As nodeupdate has been used by Minetest Game and in mods despite of not
being part of the official API, we ease the transition by still supporting
it for the 0.4.15 release. After the release, the two functions can be removed.
The removal will not violate the stability promise, as that promise only
includes the official and documented API.
Also, make some formerly global functions local. They most likely haven't
been used by mods, therefore they won't get stubs with deprecation warnings,
hard erroring directly.
Yutao Yuan [Sun, 9 Oct 2016 12:46:18 +0000 (20:46 +0800)]
Install texture_packs.txt to DOCDIR
Rogier [Sun, 6 Nov 2016 15:18:29 +0000 (16:18 +0100)]
Fix crash when attached object no longer exists
Active objects that are attached to other objects are not safe
from deletion. As a result, the parent object may have a reference
to an id of a child's that no longer exists.
If at some point an attempt is made to manipulate the child,
enviromment->getActiveObject(child-id) returns NULL. Using the
NULL pointer causes the crash...
raymoo [Sat, 12 Nov 2016 07:22:39 +0000 (23:22 -0800)]
Add control information to player interacts (#4685)
paramat [Tue, 8 Nov 2016 18:12:24 +0000 (18:12 +0000)]
Nodeupdate: Remove documentation in lua_api.txt
In preparation for nodeupdate being renamed and made official API
in future.
RealBadAngel [Sun, 21 Feb 2016 05:50:41 +0000 (06:50 +0100)]
Halo: Highlight selected face
This is a slightly modified and cleaned up version of #3774 by RealBadAngel.
By sofar: Remove color change (just make it lighter) and some minor cleanups.
lisacvuk [Fri, 11 Nov 2016 11:16:34 +0000 (12:16 +0100)]
Fixed tooltips not resizing with \n (#4766)
* Fixed tooltips not resizing with \n
* Fixed it for 1.8.4 too.
* Fixed not working with Freetype disabled.
* Modified it to use Zeno-'s solution.
Rogier-5 [Fri, 11 Nov 2016 08:30:37 +0000 (09:30 +0100)]
Fix incorrect distance computation for visible blocks (#4765)
The client would not compute the distance from the camera to
to a mapblock correctly. The result was that blocks that were in
view (i.e. not beyond the fog limit) would not be rendered.
With the improved distance computation, a range adjustment that
existed in clientiface.cpp is no longer required.
Rogier-5 [Thu, 10 Nov 2016 12:42:49 +0000 (13:42 +0100)]
Fix mob deserialization errors in the client (#4743)
The problem was seen while using the mobf mod package.
The problem happens when the server serializes entity attachments.
Sometimes, such attachments no longer exist. The serialization code
skips those. However, the total number of attachments was serialized
earlier. Therefore the client expects more than it gets, and logs a
serialization error.
paramat [Tue, 8 Nov 2016 16:07:56 +0000 (16:07 +0000)]
Occlusion culling: Add comments, minor code improvements
Remove unnecessary code.
Use '/ 2.0f' because endoff is a float.
Lars Hofhansl [Tue, 8 Nov 2016 04:44:40 +0000 (20:44 -0800)]
Conf.example: Document block_send_optimize_distance
Add missing documentation.
Lars Hofhansl [Mon, 7 Nov 2016 06:01:21 +0000 (22:01 -0800)]
Sky: Draw bottom of the sky box in 'cloudy fog color'
To be identical to the lower half of the skybox sides.
Now needed as the skybox base is often seen due to increasingly vertical
mapgens.
Lars Hofhansl [Fri, 4 Nov 2016 07:14:07 +0000 (00:14 -0700)]
Retrieve mapblocks from the server in a sphere, not a cube
Use unused range argument in 'isBlockInSight()' to limit mapblock sends
to a sphere of radius 'max block send distance'.
Lars Hofhansl [Fri, 4 Nov 2016 07:13:17 +0000 (00:13 -0700)]
Occlusion culling: Fix 'end offset' distance, half this for centre point
'endoff', the maximum diagonal of a mapblock, was incorrectly calculated.
Half this value for the centre point of the mapblock.
Lars Hofhansl [Mon, 7 Nov 2016 05:30:49 +0000 (21:30 -0800)]
Don't use reduced vertical limits for mapblock send and generation
paramat [Sun, 6 Nov 2016 09:10:05 +0000 (09:10 +0000)]
Builtin/../falling: Fix bugs caused by 'ignore' nodes
Original commit by t4im, rebased and developed by paramat.
Fix CONTENT_IGNORE being replaced by falling nodes or causing large
areas of sand to collapse into itself.
Format some conditional code for clarity.
Add and clarify some comments.
Wuzzy [Sat, 5 Nov 2016 23:37:20 +0000 (00:37 +0100)]
Privileges: Only give singleplayer 4 basic privs
- interact
- shout
- privs
- basic_privs
adrido [Sat, 29 Oct 2016 16:01:37 +0000 (18:01 +0200)]
Windows: Add manifest file and set "High DPI Aware" true
This resolves washy font and incorrect mouse handling on Windows if
a screen with high DPI is used.
SmallJoker [Sun, 6 Nov 2016 16:14:36 +0000 (17:14 +0100)]
MSVC: Generate debug information for release builds (#4674)
Replace parameters with the equivalent /Ox
Wuzzy [Sat, 5 Nov 2016 17:42:14 +0000 (18:42 +0100)]
Separate optional from required mod dependencies in main menu (#4721)
* Separate optional from require dep's in main menu
* Simplify modmgr mod dependency listing code
Ner'zhul [Sat, 5 Nov 2016 09:25:30 +0000 (10:25 +0100)]
PlayerSAO saving fix (#4734)
PlayerSAO::disconnected() function was historical and remove the link between SAO and RemotePlayer session. With previous attributes linked to RemotePlayer saving was working. But now attributes are read from SAO not RemotePlayer and the current serialize function verify SAO exists to save the player attributes.
Because PlayerSAO::disconnected marks playersao for removal, only mark playerSAO for removal and let PlayerSAO::removingFromEnvironment do the correct saving behaviour and all the disconnection process instead of doing a partial removal and let the server loop doing the RemotePlayer cleanup and remove some saved attributes...
Zeno- [Sat, 5 Nov 2016 05:10:49 +0000 (15:10 +1000)]
Fix memory leak in ::safeLoadFile (#4730)
lhofhansl [Fri, 4 Nov 2016 17:12:45 +0000 (10:12 -0700)]
Remove unused shader matrices. (#4723)
lhofhansl [Fri, 4 Nov 2016 04:06:32 +0000 (05:06 +0100)]
Cycle directly to nothing shown instead of showing the profiler graph again
Fix for previous commit.
lhofhansl [Fri, 4 Nov 2016 02:14:32 +0000 (19:14 -0700)]
Add debug priv, and allow player to display the scene as wire-frame. (#4709)
Brandon [Wed, 2 Nov 2016 16:36:58 +0000 (11:36 -0500)]
Add minetest.get_server_uptime() function to Lua API (#4702)
Add minetest.get_server_uptime() function to Lua API
ShadowNinja [Wed, 7 May 2014 02:31:35 +0000 (22:31 -0400)]
Add version API
paramat [Sat, 29 Oct 2016 14:22:18 +0000 (15:22 +0100)]
Lua voxelmanip: Add optional buffer param for 'get param2 data'
Update lua_api.txt.
Auke Kok [Thu, 27 Oct 2016 20:59:32 +0000 (13:59 -0700)]
Core.rotate_and_place: Remove unused call to get_look_pitch()
lhofhansl [Mon, 31 Oct 2016 03:35:55 +0000 (20:35 -0700)]
Optionally disable optimization that causes underwater and cave rendering glitches. (#4686)
Loic Blot [Sun, 30 Oct 2016 15:12:09 +0000 (16:12 +0100)]
Fix overloading problems mentioned by clang
Ner'zhul [Sun, 30 Oct 2016 13:53:26 +0000 (14:53 +0100)]
PlayerSAO/LocalPlayer refactor: (#4612)
* Create UnitSAO, a common part between PlayerSAO & LuaEntitySAO
* Move breath to PlayerSAO & LocalPlayer
* Migrate m_yaw from (Remote)Player & LuaEntitySAO to UnitSAO
* Migrate m_yaw from Player to LocalPlayer for client
* Move some functions outside of player class to PlayerSAO/RemotePlayer or LocalPlayer depending on which class needs it
* Move pitch to LocalPlayer & PlayerSAO
* Move m_position from Player to LocalPlayer
* Move camera_barely_in_ceiling to LocalPlayer as it's used only there
* use PlayerSAO::m_base_position for Server side positions
* remove a unused variable
* ServerActiveObject::setPos now uses const ref
* use ServerEnv::loadPlayer unconditionnaly as it creates RemotePlayer only if it's not already loaded
* Move hp from Player to LocalPlayer
* Move m_hp from LuaEntitySAO to UnitSAO
* Use m_hp from PlayerSAO/UnitSAO instead of RemotePlayer
Hugo Locurcio [Sun, 30 Oct 2016 04:36:57 +0000 (05:36 +0100)]
Rename testsounds/ directory to sounds/ (#1984)
sfan5 [Fri, 28 Oct 2016 13:50:23 +0000 (15:50 +0200)]
Add missing keyname_to_keycode function (needed on Android)
When rewriting keycode.cpp I overlooked this function, fixes #4683 completely
Ner'zhul [Fri, 28 Oct 2016 13:37:19 +0000 (15:37 +0200)]
Add missing remoteplayer.cpp to Android build
this should fix #4683
Ner'zhul [Thu, 27 Oct 2016 07:45:01 +0000 (09:45 +0200)]
Add unittests to test player saving/loading (#4679)
Dániel Juhász [Tue, 25 Oct 2016 21:04:10 +0000 (23:04 +0200)]
Cleanup
Dániel Juhász [Sun, 23 Oct 2016 15:51:13 +0000 (17:51 +0200)]
Use node lighting for liquid spreading
This commit modifies the liquid transforming procedure to light and
unlight nodes instead of whole map blocks.
Dániel Juhász [Thu, 20 Oct 2016 19:41:38 +0000 (21:41 +0200)]
Improved lighting
This commit rewrites the procedure that is responsible for light
updating.
this commit
-provides iterative solutions for unlighting and light spreading
-introduces a new priority queue-like container for the iteration
-creates per-node MapBlock caching to reduce retrieving MapBlocks from
the map
-calculates with map block positions and in-block relative node
coordinates
-skips light updating if it is not necessary since the node's new light
will be the same as its old light was
raymoo [Thu, 27 Oct 2016 03:24:34 +0000 (20:24 -0700)]
Document item use callbacks (#4668)
lhofhansl [Wed, 26 Oct 2016 14:24:45 +0000 (07:24 -0700)]
Shaders: Remove special handling for liquids. (#4670)
Foghrye4 [Sun, 23 Oct 2016 17:45:25 +0000 (20:45 +0300)]
Adding LuaError on attempt to assign vectors with values out of range
Gael-de-Sailly [Tue, 25 Oct 2016 15:12:50 +0000 (17:12 +0200)]
ParticleSpawner: fix offset being added twice
adrido [Mon, 24 Oct 2016 04:49:35 +0000 (06:49 +0200)]
Windows: dont link to libraries that are already linked by cmake
This solves the problem whith building where build fails if the libaries have different names.
Lars Hofhansl [Mon, 24 Oct 2016 15:23:13 +0000 (08:23 -0700)]
Shaders: Apply tone mapping before fog calculation.
Lars Hofhansl [Fri, 21 Oct 2016 05:21:49 +0000 (22:21 -0700)]
Shaders: Harmonize Irrlicht and shader fog calculations
paramat [Fri, 21 Oct 2016 01:09:34 +0000 (02:09 +0100)]
Lua_api.txt: Clarify 'override_meta' bool in 'set mapgen setting'
paramat [Wed, 5 Oct 2016 00:25:02 +0000 (01:25 +0100)]
Damage flash: Reduce maximum alpha. Avoid fade overload
Flash alpha maximum is reduced from 180 to 127 to avoid player blindness
in combat. Flash alpha minimum is unchanged.
The 'damage_flash' value is now limited to max alpha, to avoid multiple
hits creating a huge value that causes flash to stay at maximum alpha
for a long period. Now alpha always starts to fade immediately after
taking damage.
Both problems can be seen in Minetest let's play videos.
Simplify and optimise some code.
paramat [Wed, 19 Oct 2016 00:37:12 +0000 (01:37 +0100)]
Changes to static object storage limit and error message
Move static object storage force-delete message from errorstream to
warningstream.
Increase 'max objects per block' setting to 64.
Add missing spaces in warning code.
red-001 [Mon, 26 Sep 2016 18:07:52 +0000 (19:07 +0100)]
Chat commands: Trim whitespaces from input of `/privs` command
Foghrye4 [Sun, 9 Oct 2016 17:40:29 +0000 (20:40 +0300)]
Fix crash on attaching player to entity
Rename "refresh" to "processInitData"
rubenwardy [Mon, 17 Oct 2016 19:36:38 +0000 (20:36 +0100)]
Builtin: Add vector.floor helper function
Lars Hofhansl [Mon, 17 Oct 2016 06:55:49 +0000 (23:55 -0700)]
Revert changes to toggleNoClip and toggleFreeMove
Lars Hofhansl [Mon, 17 Oct 2016 04:27:21 +0000 (21:27 -0700)]
Don't use day light sky unless noclip and free_move are enabled
ShadowNinja [Sun, 9 Oct 2016 18:36:22 +0000 (14:36 -0400)]
Enable mod security by default
red-001 [Tue, 27 Sep 2016 11:53:01 +0000 (12:53 +0100)]
Builtin/../chatcommands: Add /grantme command
Rogier [Mon, 25 Jul 2016 16:39:29 +0000 (18:39 +0200)]
Emergeblocks: Fix occasional crash
Modification of the emergeblocks internal state was not protected
by a lock, causing a race condition.
This can be reproduced by repeatedly running emergeblocks for an
already-generated section of the map (with multiple emerge threads).
Tim [Sat, 15 Oct 2016 15:59:23 +0000 (17:59 +0200)]
Travis: Only trigger a compile, when C/C++ related files were touched (#4284)
sfan5 [Fri, 14 Oct 2016 11:08:59 +0000 (13:08 +0200)]
Make documentation about ItemStack:set_{name,count,wear} clearer
These methods do not actually fail but instead clear the item stack
and return false if a value like e.g. "" is passed.
tenplus1 [Mon, 10 Oct 2016 17:37:21 +0000 (18:37 +0100)]
Builtin/../falling.lua: Code optimisation
Lars Hofhansl [Wed, 12 Oct 2016 20:38:53 +0000 (13:38 -0700)]
Use range-based fog instead of z-plane based.
raymoo [Thu, 4 Aug 2016 20:09:21 +0000 (13:09 -0700)]
Attached particle spawners
sfan5 [Wed, 12 Oct 2016 16:39:35 +0000 (18:39 +0200)]
Don't use unordered maps for ProfilerGraph (fixes flickering)
red-001 [Tue, 11 Oct 2016 17:11:38 +0000 (18:11 +0100)]
Add a button for disabling all mods to world config. (#3900)
SmallJoker [Sun, 9 Oct 2016 08:53:13 +0000 (10:53 +0200)]
Add missing languages to the settings
Rogier [Sun, 9 Oct 2016 15:57:18 +0000 (17:57 +0200)]
Disable cmake message concerning WIN32 on non-windows systems
Loic Blot [Sun, 9 Oct 2016 14:31:43 +0000 (16:31 +0200)]
A little cleanup since previous commit
Loic Blot [Sat, 8 Oct 2016 21:13:38 +0000 (23:13 +0200)]
Environment cleanup
* Move client list to ServerEnvironment and use RemotePlayer members instead of Player
* ClientEnvironment only use setLocalPlayer to specify the current player
* Remove ClientEnvironment dead code on player list (in fact other players are CAO not Player objects)
* Drop LocalPlayer::getPlayer(xxx) functions which aren't used.
* Improve a little bit performance by using const ref list for ClientEnvironment::getPlayerNames() & Client::getConnectedPlayerNames()
* Drop isLocal() function from (Local)Player which is not needed anymore because of previous changes
This change permits to cleanup shared client list which is very old code.
ClientEnvironment doesn't use player list anymore, it only contains the local player, as addPlayer is only called from Client constructor client side.
Clients are only CAO on client side, this cleanup permit to remove confusion about player list.
Rui [Sun, 9 Oct 2016 08:27:14 +0000 (17:27 +0900)]
Remove unused parameter of GUIVolumeChange
Loic Blot [Sat, 8 Oct 2016 17:08:23 +0000 (19:08 +0200)]
Move RemotePlayer code to its own cpp/header
Loic Blot [Sat, 8 Oct 2016 15:56:38 +0000 (17:56 +0200)]
RemotePlayer/LocalPlayer Player base class proper separation (code cleanup) (patch 3 of X)
* remove IGameDef from Player class, only LocalPlayer has it now
* move many attributes/functions only used by LocalPlayer from Player to LocalPlayer
* move many attributes/functions only used by RemotePlayer from Player to RemotePlayer
* make some functions const
* hudGetHotbarSelectedImage now returns const ref
* RemotePlayer getHotbarSelectedImage now returns const ref
* various code style fixes
Loic Blot [Sat, 8 Oct 2016 14:42:09 +0000 (16:42 +0200)]
Optimize ClientIface::getPlayerNames(): return const ref instead a copy of all names
Loic Blot [Sat, 8 Oct 2016 14:31:22 +0000 (16:31 +0200)]
More code cleanup (UNORDERED + RemotePlayer/LocalPlayer)
* ClientEnvironment now uses UNORDERED MAP for active objects
* Use RemotePlayer and LocalPlayer everywhere it's possible
* Minor code style fixes
* Drop Client::getBreath() unused function
rubenwardy [Sun, 2 Oct 2016 23:30:33 +0000 (00:30 +0100)]
Fix backwards compatibility issue introduced by close_on_enter
SmallJoker [Sat, 8 Oct 2016 14:25:34 +0000 (16:25 +0200)]
Ensure std::unordered_ be used on MSVC 2010 too (#4600)
Loic Blot [Sat, 8 Oct 2016 10:21:41 +0000 (12:21 +0200)]
Player/LocalPlayer/RemotePlayer inheritance cleanup (part 2 on X)
* Server/Client Environments now have an helper to cast Player object in the right type to use it
* Server: use RemotePlayer everywhere and remove previous added casts
* Client: use LocalPlayer where needed
* Environment: remove unused functions (getPlayers(), getRandomConnectedPlayer(), getNearestConnectedPlayer())
gregorycu [Sat, 8 Oct 2016 13:08:35 +0000 (00:08 +1100)]
Speed up emerge thread by using unordered map in a few places. Looking at 25% speedup in Emerge thread on Just Test.
gregorycu [Sat, 8 Oct 2016 12:58:47 +0000 (23:58 +1100)]
Ensure std::unordered_ will be used on supported MSVC compilers
Foghrye4 [Sat, 8 Oct 2016 12:51:25 +0000 (16:51 +0400)]
Prevent attached models from disappearing during parent reload (#4128)
HybridDog [Sat, 8 Oct 2016 12:42:17 +0000 (14:42 +0200)]
VoxelArea: faster iter function (#4490)
Loic Blot [Sat, 8 Oct 2016 09:25:46 +0000 (11:25 +0200)]
Remove some unused attributes/class functions in server.cpp/h
Loic Blot [Sat, 8 Oct 2016 08:38:04 +0000 (10:38 +0200)]
Player/LocalPlayer/RemotePlayer inheritance cleanup (part 1 on X)
* LocalPlayer take ownership of maxHudId as it's the only caller
* RemotePlayer take ownership of day night ratio as it's the only user
* Pass getPlayerControl as const reference to prevent object copy on each call (perf improvement in ObjectRef::l_get_player_control call)
* getPlayerSAO is now only RemotePlayer call
* get/setHotbarItemCount is now RemotePlayer owned
* Server: Use RemotePlayer instead of Player object on concerned call to properly fix the object type
* PlayerSAO now uses RemotePlayer instead of Player because it's only server side
* ObjectRef::getplayer also returns RemotePlayer as it's linked with PlayerSAO
paramat [Thu, 6 Oct 2016 22:03:55 +0000 (23:03 +0100)]
Lua_api.txt: Add biome and nodeupdate documentation
Add missing documentation for 'register_biome' and
'clear_registered_biomes'.
Add documentation for 'nodeupdate_single'. 'nodeupdate'
is not yet documented due to a bug it causes.
SmallJoker [Sun, 17 Jul 2016 20:26:23 +0000 (22:26 +0200)]
Textures: Ignore unknown node in override.txt
sfan5 [Thu, 6 Oct 2016 19:13:04 +0000 (21:13 +0200)]
Fix C++11 Windows build of threading code
The initial problem was that mutex_auto_lock.h tries to use std::unique_lock<std::mutex>
despite mutex.h not using C++11's std::mutex on Windows. The problem here is the mismatch
between C++11 usage conditions of the two headers. This commit moves the decision logic
to threads.h and makes sure mutex.h, mutex_auto_lock.h and event.h all use the same features.