]> git.lizzy.rs Git - irrlicht.git/commitdiff
Merging r6186 through r6192 from trunk to ogl-es branch
authorcutealien <cutealien@dfc29bdd-3216-0410-991c-e03cc46cb475>
Sun, 21 Feb 2021 16:37:56 +0000 (16:37 +0000)
committercutealien <cutealien@dfc29bdd-3216-0410-991c-e03cc46cb475>
Sun, 21 Feb 2021 16:37:56 +0000 (16:37 +0000)
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@6193 dfc29bdd-3216-0410-991c-e03cc46cb475

changes.txt
include/IGUIElement.h
include/rect.h
source/Irrlicht/CSoftwareDriver2.cpp
source/Irrlicht/CSoftwareDriver2.h
source/Irrlicht/IBurningShader.cpp
source/Irrlicht/Irrlicht.xcodeproj/project.pbxproj
source/Irrlicht/Makefile
source/Irrlicht/SoftwareDriver2_compile_config.h
tests/tests-last-passed-at.txt

index 4413771ea2158c9c086cff4a36bc90aca97fa4a5..be43b0ba2613f4ba6e64fef3c53226e1bd19df23 100644 (file)
@@ -9,6 +9,9 @@ Changes in ogl-es (not yet released - will be merged with trunk at some point)
 \r
 --------------------------\r
 Changes in 1.9 (not yet released)\r
+- Fix bug in rect::clipAgainst that had caused rects completely outside to the left-top of the rect to be clipped against ending up with both corners outside.\r
+  It still worked for UI in most cases as the resulting rectangle still had an area of 0.\r
+- Add getAlign functions to IGUIElement\r
 - Add optional multitouch support to X11 (but disabled in IrrCompileConfig by default). Thanks @TheBrokenRail for a patch proposal based on example code from esjeon (patch #322).\r
 - Slightly changed close window handling on X11 (optimized and avoids problems on some shells). Thanks @TheBrokenRail for a patch (was part of patch #322).\r
 - Add getActiveColor functions to IGUIStaticText and IGUIButton (get currently used color).\r
index d5d0bace2aac68afe0e10a5eb254babde3b934c7..5968430ab95b4384e1953c4042986d1336673f71 100644 (file)
@@ -209,6 +209,29 @@ public:
                }\r
        }\r
 \r
+       //! How left element border is aligned when parent is resized\r
+       EGUI_ALIGNMENT getAlignLeft() const \r
+       {\r
+               return AlignLeft;\r
+       }\r
+\r
+       //! How right element border is aligned when parent is resized\r
+       EGUI_ALIGNMENT getAlignRight() const \r
+       {\r
+               return AlignRight;\r
+       }\r
+\r
+       //! How top element border is aligned when parent is resized\r
+       EGUI_ALIGNMENT getAlignTop() const \r
+       {\r
+               return AlignTop;\r
+       }\r
+\r
+       //! How bottom element border is aligned when parent is resized\r
+       EGUI_ALIGNMENT getAlignBottom() const \r
+       {\r
+               return AlignBottom;\r
+       }\r
 \r
        //! Updates the absolute position.\r
        virtual void updateAbsolutePosition()\r
index aeb9cc5f6f31f20d635f3e3d9fed8baa28e0d438..85becf0e90c096a7f0831a5f5402f910d29a2491 100644 (file)
@@ -135,16 +135,20 @@ namespace core
                        if (other.LowerRightCorner.Y < LowerRightCorner.Y)\r
                                LowerRightCorner.Y = other.LowerRightCorner.Y;\r
 \r
+                       if (other.UpperLeftCorner.X > LowerRightCorner.X)\r
+                               LowerRightCorner.X = other.UpperLeftCorner.X;\r
+                       if (other.UpperLeftCorner.Y > LowerRightCorner.Y)\r
+                               LowerRightCorner.Y = other.UpperLeftCorner.Y;\r
+\r
+                       if (other.LowerRightCorner.X < UpperLeftCorner.X)\r
+                               UpperLeftCorner.X = other.LowerRightCorner.X;\r
+                       if (other.LowerRightCorner.Y < UpperLeftCorner.Y)\r
+                               UpperLeftCorner.Y = other.LowerRightCorner.Y;\r
+\r
                        if (other.UpperLeftCorner.X > UpperLeftCorner.X)\r
                                UpperLeftCorner.X = other.UpperLeftCorner.X;\r
                        if (other.UpperLeftCorner.Y > UpperLeftCorner.Y)\r
                                UpperLeftCorner.Y = other.UpperLeftCorner.Y;\r
-\r
-                       // correct possible invalid rect resulting from clipping\r
-                       if (UpperLeftCorner.Y > LowerRightCorner.Y)\r
-                               UpperLeftCorner.Y = LowerRightCorner.Y;\r
-                       if (UpperLeftCorner.X > LowerRightCorner.X)\r
-                               UpperLeftCorner.X = LowerRightCorner.X;\r
                }\r
 \r
                //! Moves this rectangle to fit inside another one.\r
index 605b15b49e4655b36a2a0fe2ade398c5b7c9c9ad..8fa5a9de44a45797e093774d568fa717b23dd618 100644 (file)
@@ -466,19 +466,19 @@ bool CBurningVideoDriver::queryFeature(E_VIDEO_DRIVER_FEATURE feature) const
                on = 1;\r
                break;\r
 \r
-       case EVDF_TEXTURE_NPOT: // for 2D\r
-               on = 0;\r
-               break;\r
-\r
        case EVDF_ARB_FRAGMENT_PROGRAM_1:\r
        case EVDF_ARB_VERTEX_PROGRAM_1:\r
                on = 1;\r
                break;\r
-#if defined(PATCH_SUPERTUX_8_0_1)\r
+#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
        case EVDF_TEXTURE_NPOT:\r
        case EVDF_ARB_GLSL:\r
                on = 1;\r
                break;\r
+#else\r
+       case EVDF_TEXTURE_NPOT: // for 2D\r
+               on = 0;\r
+               break;\r
 #endif\r
 \r
 #if defined(SOFTWARE_DRIVER_2_2D_AS_3D)\r
@@ -1310,16 +1310,6 @@ REALINLINE s32 CBurningVideoDriver::lodFactor_inside(const s4DVertexPair* burnin
 inline void CBurningVideoDriver::select_polygon_mipmap_inside(s4DVertex* burning_restrict face[], const size_t tex, const CSoftwareTexture2_Bound& b) const\r
 {\r
 #ifdef SOFTWARE_DRIVER_2_PERSPECTIVE_CORRECT\r
-#if defined(Tweak_Burning)\r
-       (face[0] + 1)->Tex[tex].x = face[0]->Tex[tex].x * (face[0] + 1)->Pos.w * (b.w + Tweak.tex_w_add) + (b.cx + Tweak.tex_cx_add);\r
-       (face[0] + 1)->Tex[tex].y = face[0]->Tex[tex].y * (face[0] + 1)->Pos.w * (b.h + Tweak.tex_h_add) + (b.cy + Tweak.tex_cy_add);\r
-\r
-       (face[1] + 1)->Tex[tex].x = face[1]->Tex[tex].x * (face[1] + 1)->Pos.w * (b.w + Tweak.tex_w_add) + (b.cx + Tweak.tex_cx_add);\r
-       (face[1] + 1)->Tex[tex].y = face[1]->Tex[tex].y * (face[1] + 1)->Pos.w * (b.h + Tweak.tex_h_add) + (b.cy + Tweak.tex_cy_add);\r
-\r
-       (face[2] + 1)->Tex[tex].x = face[2]->Tex[tex].x * (face[2] + 1)->Pos.w * (b.w + Tweak.tex_w_add) + (b.cx + Tweak.tex_cx_add);\r
-       (face[2] + 1)->Tex[tex].y = face[2]->Tex[tex].y * (face[2] + 1)->Pos.w * (b.h + Tweak.tex_h_add) + (b.cy + Tweak.tex_cy_add);\r
-#else\r
        (face[0] + 1)->Tex[tex].x = face[0]->Tex[tex].x * (face[0] + 1)->Pos.w * b.w + b.cx;\r
        (face[0] + 1)->Tex[tex].y = face[0]->Tex[tex].y * (face[0] + 1)->Pos.w * b.h + b.cy;\r
 \r
@@ -1328,7 +1318,6 @@ inline void CBurningVideoDriver::select_polygon_mipmap_inside(s4DVertex* burning
 \r
        (face[2] + 1)->Tex[tex].x = face[2]->Tex[tex].x * (face[2] + 1)->Pos.w * b.w + b.cx;\r
        (face[2] + 1)->Tex[tex].y = face[2]->Tex[tex].y * (face[2] + 1)->Pos.w * b.h + b.cy;\r
-#endif\r
 #else\r
        (face[0] + 1)->Tex[tex].x = face[0]->Tex[tex].x * b.w;\r
        (face[0] + 1)->Tex[tex].y = face[0]->Tex[tex].y * b.h;\r
@@ -1369,13 +1358,13 @@ void CBurningVideoDriver::VertexCache_map_source_format()
                os::Printer::log("BurningVideo pointer should be 8 bytes", ELL_ERROR);\r
                _IRR_DEBUG_BREAK_IF(1);\r
        }\r
-#endif\r
 \r
        if (((unsigned long long)Transformation&15) || ((unsigned long long)TransformationFlag & 15))\r
        {\r
                os::Printer::log("BurningVideo Matrix Stack not 16 byte aligned", ELL_ERROR);\r
                _IRR_DEBUG_BREAK_IF(1);\r
        }\r
+#endif\r
 \r
 \r
        SVSize* vSize = VertexCache.vSize;\r
@@ -3464,7 +3453,7 @@ ITexture* CBurningVideoDriver::addRenderTargetTexture(const core::dimension2d<u3
        //empty proxy image\r
        IImage* img = createImageFromData(format, size, 0, true, false);\r
        ITexture* tex = new CSoftwareTexture2(img, name, CSoftwareTexture2::IS_RENDERTARGET /*| CSoftwareTexture2::GEN_MIPMAP */, this);\r
-       img->drop();\r
+       if ( img ) img->drop();\r
        addTexture(tex);\r
        tex->drop();\r
        return tex;\r
@@ -3713,6 +3702,9 @@ s32 CBurningVideoDriver::addHighLevelShaderMaterial(
        IShaderConstantSetCallBack* callback,\r
        E_MATERIAL_TYPE baseMaterial,\r
        s32 userData\r
+#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
+       , E_GPU_SHADING_LANGUAGE shadingLang\r
+#endif\r
 )\r
 {\r
        s32 materialID = -1;\r
index 4c87bf3f660aa9d96a1feac5f0fe4a564ac3fd6d..62a1bcc574ccbd7e938c4c6485037221e4c0ee63 100644 (file)
@@ -215,11 +215,6 @@ namespace video
                IDepthBuffer * getDepthBuffer () { return DepthBuffer; }\r
                IStencilBuffer * getStencilBuffer () { return StencilBuffer; }\r
 \r
-               //#define Tweak_Burning\r
-#if defined(Tweak_Burning)\r
-               virtual void postEventFromUser(const void* sevent)  _IRR_OVERRIDE_;\r
-#endif\r
-\r
                //! Adds a new material renderer to the VideoDriver, using pixel and/or\r
                //! vertex shaders to render geometry.\r
                virtual s32 addShaderMaterial(const c8* vertexShaderProgram,\r
@@ -245,7 +240,11 @@ namespace video
                        u32 verticesOut = 0,\r
                        IShaderConstantSetCallBack* callback = 0,\r
                        E_MATERIAL_TYPE baseMaterial = video::EMT_SOLID,\r
-                       s32 userData = 0) _IRR_OVERRIDE_;\r
+                       s32 userData = 0\r
+#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
+                       , E_GPU_SHADING_LANGUAGE shadingLang = EGSL_DEFAULT\r
+#endif\r
+               ) _IRR_OVERRIDE_;\r
 \r
                //IMaterialRendererService\r
 \r
index c7945e8c4334e24420567c69f411dd7d6ba7389d..b72cd9aca03441665093eccd00eee46048d40ce5 100644 (file)
@@ -29,11 +29,13 @@ void IBurningShader::constructor_IBurningShader(CBurningVideoDriver* driver)
        setDebugName("IBurningShader");\r
 #endif\r
 \r
+#if defined(ENV64BIT)\r
        if (((unsigned long long)&scan & 15) || ((unsigned long long)&line & 15))\r
        {\r
                os::Printer::log("BurningVideo Shader not 16 byte aligned", ELL_ERROR);\r
                _IRR_DEBUG_BREAK_IF(1);\r
        }\r
+#endif\r
 \r
        Interlaced.enable = 0;\r
        Interlaced.bypass = 1;\r
@@ -96,6 +98,7 @@ IBurningShader::IBurningShader(
 {\r
        constructor_IBurningShader(driver);\r
        BaseMaterial = baseMaterial;\r
+       UserData = userData;\r
        CallBack = callback;\r
        if (CallBack)\r
                CallBack->grab();\r
index 3d25caa8fd09f985ae753cf3f51da188195ac696..85b0ebb21dd95f5d12a27162ebb616eef31a13c5 100644 (file)
                                ENABLE_TESTABILITY = YES;
                                GCC_C_LANGUAGE_STANDARD = c11;
                                GCC_NO_COMMON_BLOCKS = YES;
-                               "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "DEBUG=1";
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "DEBUG=1",
+                                       "PNG_ARM_NEON_OPT=0",
+                               );
                                GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
                                GCC_WARN_ABOUT_RETURN_TYPE = YES;
                                GCC_WARN_UNDECLARED_SELECTOR = YES;
                                ENABLE_STRICT_OBJC_MSGSEND = YES;
                                GCC_C_LANGUAGE_STANDARD = c11;
                                GCC_NO_COMMON_BLOCKS = YES;
-                               "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "NDEBUG=1";
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "NDEBUG=1",
+                                       "PNG_ARM_NEON_OPT=0",
+                               );
                                GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
                                GCC_WARN_ABOUT_RETURN_TYPE = YES;
                                GCC_WARN_UNDECLARED_SELECTOR = YES;
index d637b5536ecc8cd26462c6ed0010a35c36296590..8ddcc537437aadeb424492eca52e0b405ad69665 100644 (file)
@@ -77,16 +77,12 @@ emscripten: EMSCRIPTEN=1
 \r
 CXXINCS = -I../../include -Izlib -Ijpeglib -Ilibpng\r
 CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1\r
-CXXFLAGS += -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing\r
+CXXFLAGS += -Wall -pipe -fno-exceptions -fno-rtti\r
 #CXXFLAGS += -std=gnu++11 -U__STRICT_ANSI__\r
 ifndef NDEBUG\r
   CXXFLAGS += -g -D_DEBUG\r
 else\r
-  ifndef EMSCRIPTEN\r
-    CXXFLAGS += -fexpensive-optimizations -O3\r
-  else\r
-    CXXFLAGS += -O3\r
-  endif\r
+  CXXFLAGS += -O3\r
 endif\r
 ifdef PROFILE\r
   CXXFLAGS += -pg\r
@@ -102,7 +98,7 @@ ifdef EMSCRIPTEN
     CXXFLAGS += -s WASM=1\r
   endif  \r
 else\r
-  CFLAGS := -O3 -fexpensive-optimizations -DPNG_THREAD_UNSAFE_OK -DPNG_NO_MMX_CODE -DPNG_NO_MNG_FEATURES -DPNG_ARM_NEON_OPT=0\r
+  CFLAGS := -O3 -DPNG_THREAD_UNSAFE_OK -DPNG_NO_MMX_CODE -DPNG_NO_MNG_FEATURES -DPNG_ARM_NEON_OPT=0\r
 endif\r
 \r
 sharedlib sharedlib_osx: CXXFLAGS += -fPIC\r
index 897049ac2c37fbcb363fe6c79f2d6be55c5b2bfd..f76bfe7efb854b4c9c6ee6c938f529a671ded074 100644 (file)
@@ -308,7 +308,12 @@ namespace irr {
 \r
 //! Compiler Align\r
 #if defined(_MSC_VER)\r
+#if defined(ENV64BIT)\r
 #define ALIGN(x) __declspec(align(x))\r
+#else\r
+// ALIGN(16) not working\r
+#define ALIGN(x) __declspec(align(8))\r
+#endif\r
 #elif defined(__GNUC__)\r
 #define ALIGN(x) __attribute__ ((aligned(x)))\r
 #else\r
index 15f31461d77d99a36d11551d530632be6c3558bb..09ce1bdc28ee59e0d95d94e880451cd4a7615d44 100644 (file)
@@ -1,4 +1,4 @@
 Tests finished. 72 tests of 72 passed.\r
 Compiled as DEBUG\r
-Test suite pass at GMT Tue Dec 01 13:34:31 2020\r
+Test suite pass at GMT Thu Feb 11 14:00:00 2021\r
 \r