1
0
forked from 0ad/0ad
0ad/source/graphics
wraitii ee0d204bf6 Wrap JSAutoRequest and replace usage of JSContext* with the wrapper.
JSAutoRequest is required before calling into most JSAPI methods, for GC
reasons.
Calling it is required and fragile as one must not forget.
Further, SM52 and later make manipulating JSContext* dangerous as that
can cross Compartment(Realm in SM68) barriers (and ScriptInterface now
matches a Compartment).

The solution to both problems is to avoid using JSContext* in 0 A.D.
itself. To achieve this, a Request class is introduced, and must be used
to access a JSContext* from a scriptInterface. Further, Request is
passed to other ScriptInterface functions isntead of JSContext*, making
it obvious that the caller has already called it, reducing errors and
redundant JSAutoRequest calls.
Only JSNative functions now get a naked JSContext* without protection,
but the likelihood of forgetting a request is lower since many
ScriptInterface functions now expect it.

JSContext* is directly passed to JSAPI functions only.

Part of the SM52 migration, stage: SM45 compatible

Based on a patch by: Itms
Tested By: Freagarach
Refs #4893

Differential Revision: https://code.wildfiregames.com/D3088
This was SVN commit r24176.
2020-11-13 13:18:22 +00:00
..
scripting Wrap JSAutoRequest and replace usage of JSContext* with the wrapper. 2020-11-13 13:18:22 +00:00
tests Move LOS to a los helper header and cleanup Grid.h includes. 2020-06-14 20:39:03 +00:00
Camera.cpp Adds projection type to CCamera to control usages of projection dependent properties. 2019-10-03 18:51:40 +00:00
Camera.h Adds projection type to CCamera to control usages of projection dependent properties. 2019-10-03 18:51:40 +00:00
CameraController.cpp Move LOS to a los helper header and cleanup Grid.h includes. 2020-06-14 20:39:03 +00:00
CameraController.h Splits CameraController and adds ICameraController interface 2019-12-21 00:44:18 +00:00
CinemaManager.cpp Remove unused GUIUtil functions, unused GUI includes and some tails in GUIUtil. 2019-08-25 08:57:36 +00:00
CinemaManager.h Split CColor from Shapes. 2019-01-13 15:38:41 +00:00
ColladaManager.cpp Fix few typos found with the Debian lintian tool. 2017-10-28 22:34:57 +00:00
ColladaManager.h Split skeleton definitions into multiple files, adds hotloading support for skeleton files. Fixes #190. 2013-07-08 20:25:06 +00:00
Color.cpp Refactor ColorActivateFastImpl function 2019-12-07 18:17:08 +00:00
Color.h Stop copying color every draw call for every GUI object using colors. 2019-08-19 12:53:58 +00:00
Decal.cpp Removes usages of duplication of Clamp function in graphics. Refs D1763. 2019-09-18 08:34:36 +00:00
Decal.h MapReader: Load terrain before entities. 2014-06-01 18:08:11 +00:00
Entity.h Small cleanup, based on a change from one of Philip's old patches 2015-05-16 09:39:27 +00:00
Font.cpp Optimise glyph lookup in text renderer 2013-10-18 15:56:12 +00:00
Font.h Optimise rendering of scrollable text boxes by clipping 2013-10-18 16:05:02 +00:00
FontManager.cpp Fix ugly font rendering using GL linear interpolation if the UI scale was changed. 2017-12-30 17:56:07 +00:00
FontManager.h Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
FontMetrics.cpp Use CStrIntern for font names to reduce lookup cost 2013-10-18 16:15:42 +00:00
FontMetrics.h Use CStrIntern for font names to reduce lookup cost 2013-10-18 16:15:42 +00:00
Frustum.cpp Actually remove trailing tabs from source/. 2016-11-23 14:09:58 +00:00
Frustum.h Optimization of isBoxVisible + cleanup, fixes #3712 2015-12-28 16:27:31 +00:00
GameView.cpp Adds wireframe mode to overlays and replace the private m_TerrainRenderMode usages by related getter. 2020-11-08 11:31:32 +00:00
GameView.h Cleanup Camera related code and uses constant references where possible. 2019-10-03 12:58:47 +00:00
HeightMipmap.cpp Removes usages of duplication of Clamp function in graphics. Refs D1763. 2019-09-18 08:34:36 +00:00
HeightMipmap.h Compute camera height and zoom limits based on smoothed terrain heightmap. Fixes #794, based on patch by Dietger. 2012-04-18 20:39:00 +00:00
HFTracer.cpp Removes usages of duplication of Clamp function in graphics. Refs D1763. 2019-09-18 08:34:36 +00:00
HFTracer.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00
ICameraController.cpp Splits CameraController and adds ICameraController interface 2019-12-21 00:44:18 +00:00
ICameraController.h Splits CameraController and adds ICameraController interface 2019-12-21 00:44:18 +00:00
LightEnv.cpp Removes unused and obsolete LightingModel. 2019-06-26 22:30:23 +00:00
LightEnv.h Moves terrain lighting calculation to GPU. 2020-11-04 12:54:17 +00:00
LOSTexture.cpp Move LOS to a los helper header and cleanup Grid.h includes. 2020-06-14 20:39:03 +00:00
LOSTexture.h Move LOS to a los helper header and cleanup Grid.h includes. 2020-06-14 20:39:03 +00:00
MapGenerator.cpp Wrap JSAutoRequest and replace usage of JSContext* with the wrapper. 2020-11-13 13:18:22 +00:00
MapGenerator.h Support random map script tests, fixes #4827. 2020-01-29 00:30:07 +00:00
MapIO.cpp Use all three color channels when loading heightmaps following 204b04f2d4, refs #5018. 2019-09-12 19:30:43 +00:00
MapIO.h Fix 204b04f2d4 compatibility with zipped mods, refs #5018. 2018-05-01 21:15:55 +00:00
MapReader.cpp Wrap JSAutoRequest and replace usage of JSContext* with the wrapper. 2020-11-13 13:18:22 +00:00
MapReader.h Always delete CMapReader. Patch by Sandarac. Fixes #4154. 2017-08-25 00:37:48 +00:00
MapWriter.cpp Store turret positions in map files. 2020-11-11 19:40:44 +00:00
MapWriter.h Move most cinematic path simulation data and control from the graphics class to the simulation component and solve the hash mimatch in non-visual replay. 2017-04-05 03:59:20 +00:00
Material.cpp Check when loading an actor that it defines all the texture samplers required by its material. Print out a readable error otherwise. Fixes #1613 (note that this does not check for unnecessary samplers as that is non-trivial and does not lead to graphical glitches). 2015-03-15 11:37:26 +00:00
Material.h Adds const to Material and CShaderProgram::Binding methods, removes a redundant variable from ModelRenderer 2020-01-26 21:32:12 +00:00
MaterialManager.cpp Move Ogre3D GLSL Preprocessor to a third_party folder and restore its original name. Also restore the Wrapper name to reflect what it's wrapping and move it to renderer. 2019-12-07 11:48:03 +00:00
MaterialManager.h ao/parallax/normal/specular/emissive mapping; windy trees; time manager; render queries; conditional defines 2012-08-06 19:10:47 +00:00
MeshManager.cpp Automatically replace %hs/%ls with %s in CLogger format strings. 2015-01-22 20:36:24 +00:00
MeshManager.h Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
MiniPatch.cpp # Handle terrain passability and movement costs in pathfinder. 2010-05-27 23:31:03 +00:00
MiniPatch.h # Add new texture loading system with automatic compression. 2010-09-10 21:02:10 +00:00
Model.cpp Simplify conditions in SetAnimation 2020-02-13 19:24:08 +00:00
Model.h Fix animation syncronisation between actor props. Fixes #2324 one more time. Refs [18568] and [18265]. Reported by 2016-12-08 23:16:54 +00:00
ModelAbstract.cpp Actually remove trailing tabs from source/. 2016-11-23 14:09:58 +00:00
ModelAbstract.h Split CColor from Shapes. 2019-01-13 15:38:41 +00:00
ModelDef.cpp Actually remove trailing tabs from source/. 2016-11-23 14:09:58 +00:00
ModelDef.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00
ObjectBase.cpp Removes usages of duplication of Clamp function in graphics. Refs D1763. 2019-09-18 08:34:36 +00:00
ObjectBase.h Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
ObjectEntry.cpp Fix animation syncronisation between actor props. Fixes #2324 one more time. Refs [18568] and [18265]. Reported by 2016-12-08 23:16:54 +00:00
ObjectEntry.h Split CColor from Shapes. 2019-01-13 15:38:41 +00:00
ObjectManager.cpp Replace some functor structs with lambdas, closures or range-based fors. 2015-08-19 03:33:04 +00:00
ObjectManager.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00
Overlay.cpp Optimise out of frustum rendering of texture overlays. 2019-12-10 23:13:37 +00:00
Overlay.h Refactors coordinates of SOverlayTexturedLine, replaces array of floats by array of CVector2D. 2020-11-08 14:47:25 +00:00
ParticleEmitter.cpp Actually remove trailing tabs from source/. 2016-11-23 14:09:58 +00:00
ParticleEmitter.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00
ParticleEmitterType.cpp Removes usages of duplication of Clamp function in graphics. Refs D1763. 2019-09-18 08:34:36 +00:00
ParticleEmitterType.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00
ParticleManager.cpp Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
ParticleManager.h Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
Patch.cpp Actually remove trailing tabs from source/. 2016-11-23 14:09:58 +00:00
Patch.h Fix culling for shadows and reflections. 2014-06-25 01:11:10 +00:00
PreprocessorWrapper.cpp Upgrade the Ogre GLSL Preprocessor 2020-01-15 18:20:36 +00:00
PreprocessorWrapper.h Upgrade the Ogre GLSL Preprocessor 2020-01-15 18:20:36 +00:00
RenderableObject.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00
SColor.h Add GPL header 2009-04-18 17:00:33 +00:00
ShaderDefines.cpp Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
ShaderDefines.h Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
ShaderManager.cpp Move Ogre3D GLSL Preprocessor to a third_party folder and restore its original name. Also restore the Wrapper name to reflect what it's wrapping and move it to renderer. 2019-12-07 11:48:03 +00:00
ShaderManager.h Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
ShaderProgram.cpp Move Ogre3D GLSL Preprocessor to a third_party folder and restore its original name. Also restore the Wrapper name to reflect what it's wrapping and move it to renderer. 2019-12-07 11:48:03 +00:00
ShaderProgram.h Adds const to Material and CShaderProgram::Binding methods, removes a redundant variable from ModelRenderer 2020-01-26 21:32:12 +00:00
ShaderProgramFFP.cpp Removes remaining fixed program used in shader pipelines and adds check on FFP create. 2020-11-03 18:59:27 +00:00
ShaderProgramPtr.h Switch to std::shared_ptr and std::weak_ptr. 2015-01-25 03:10:58 +00:00
ShaderTechnique.cpp Forward-declare CShaderProgramPtr, to avoid pulling in more headers than necessary and to hypothetically reduce build times by a minuscule amount. 2014-07-02 22:36:45 +00:00
ShaderTechnique.h Forward-declare CShaderProgramPtr, to avoid pulling in more headers than necessary and to hypothetically reduce build times by a minuscule amount. 2014-07-02 22:36:45 +00:00
SkeletonAnim.h Fix animation syncronisation between actor props. Fixes #2324 one more time. Refs [18568] and [18265]. Reported by 2016-12-08 23:16:54 +00:00
SkeletonAnimDef.cpp Actually remove trailing tabs from source/. 2016-11-23 14:09:58 +00:00
SkeletonAnimDef.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00
SkeletonAnimManager.cpp Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
SkeletonAnimManager.h Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
SmoothedValue.cpp Moves CSmoothedValue to separate file. 2019-10-01 22:42:54 +00:00
SmoothedValue.h Moves CSmoothedValue to separate file. 2019-10-01 22:42:54 +00:00
Terrain.cpp Fixes terrain index type (causing a warning) introduced in 1e1ce27eba. 2020-07-07 16:51:20 +00:00
Terrain.h Adds offsets to the terrain resize function and adds comments how the resizing works. 2020-05-07 21:46:17 +00:00
TerrainProperties.cpp Split CColor from Shapes. 2019-01-13 15:38:41 +00:00
TerrainProperties.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00
TerrainTextureEntry.cpp Removes possible copying of CStr in CTerrainTextureEntry and adds const where possible. 2020-01-10 22:36:22 +00:00
TerrainTextureEntry.h Removes possible copying of CStr in CTerrainTextureEntry and adds const where possible. 2020-01-10 22:36:22 +00:00
TerrainTextureManager.cpp Actually remove trailing tabs from source/. 2016-11-23 14:09:58 +00:00
TerrainTextureManager.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00
TerritoryBoundary.cpp Move LOS to a los helper header and cleanup Grid.h includes. 2020-06-14 20:39:03 +00:00
TerritoryBoundary.h Optimise HierarchicalPathfinder::Update by speeding up the chunk dirtiness check. 2017-12-10 08:59:43 +00:00
TerritoryTexture.cpp Move LOS to a los helper header and cleanup Grid.h includes. 2020-06-14 20:39:03 +00:00
TerritoryTexture.h Optimise HierarchicalPathfinder::Update by speeding up the chunk dirtiness check. 2017-12-10 08:59:43 +00:00
TextRenderer.cpp Fix compiler warnings on VS 2015, refs #3439, refs #5069. 2018-03-10 09:58:53 +00:00
TextRenderer.h Split CColor from Shapes. 2019-01-13 15:38:41 +00:00
Texture.h Switch to std::shared_ptr and std::weak_ptr. 2015-01-25 03:10:58 +00:00
TextureConverter.cpp Add a NVTT version check at compile-time, fixes #5757, refs #5804. 2020-08-18 17:30:41 +00:00
TextureConverter.h pthread -> std::thread (5/7) - Replace sdl semaphore with condition variable 2019-08-24 11:26:58 +00:00
TextureManager.cpp Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
TextureManager.h Replace boost::unordered_map, boost::unordered_set with std::unordered_map, std::unordered_set to establish consistency. 2019-11-25 14:30:25 +00:00
Unit.cpp Actually remove trailing tabs from source/. 2016-11-23 14:09:58 +00:00
Unit.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00
UnitAnimation.cpp Update the animation immediately after a varaint is changed, so we don't have sliding issues when we do so. 2018-02-23 20:11:16 +00:00
UnitAnimation.h Update the animation immediately after a varaint is changed, so we don't have sliding issues when we do so. 2018-02-23 20:11:16 +00:00
UnitManager.cpp Adds multiple entity selection to Atlas (including move/delete). Fixes #678. 2012-02-27 05:32:35 +00:00
UnitManager.h Remove trailing whitespace and whitespace in empty lines of source/ except source/third_party/. 2016-11-23 11:18:37 +00:00